Хранить и индексировать YAML с помощью PostgreSQL, с помощью Javascript lib или многоразовых функций?
PostgreSQL 9.2 имеет встроенную поддержку JSON. Однако я хотел бы хранить понятные человеку файлы конфигурации в YAML. И я думаю, что я хотел бы проиндексировать некоторые (но не все) значения файла конфигурации. Поэтому мне интересно
- Можно ли каким-то образом включить в Postgres [стороннюю библиотеку Javascript, которая анализирует Yaml], например, js-yaml. Тогда у меня мог бы быть свой собственный помощник по JAMascript YAML, точно так же, как есть встроенный помощник JSON в PostgreSQL 9.2.
В качестве альтернативы:
Можно ли объявить отдельные повторно используемые функции Javascript? Если так, то я мог бы добавить свои собственные функции синтаксического анализа YAML (основанные на простых регулярных выражениях), которые могут анализировать подмножество YAML, например пары ключ-значение верхнего уровня здесь:
# some "top level key-value paris": the_key: 'the value' another_key: 'another value' # But this however: would_be_too_complicated_to_parse_manually_with_regexps: | block string with newlines
В худшем случае мне нужно будет дублировать код синтаксического анализа YAML в каждой хранимой процедуре PostgreSQL (если я не могу добавить сторонние библиотеки или объявить многократно используемые функции).
(Производительность не будет очень важна в моем случае.)
(Я некоторое время гуглял для " многократно используемой функции postgresql plv8 " и " библиотеки postgresql plv8 ", но не нашел ничего релевантного)
1 ответ
Процедурный язык pl/v8 - это, вероятно, правильный путь. Это "доверенный" язык, который означает (помимо прочего), что он не предоставляет какого-либо способа "загрузить внешний модуль из этого файла". Но у него есть метод 'find_function()', который позволяет вам определять свою собственную функцию javascript и вызывать ее из другой функции (js или нет). Смотрите описание этого в этом сообщении в блоге:
http://umitanuki.hatenablog.com/entry/2012/04/10/171935