Каков наилучший способ расширить postgresql для индексирования объектов JSON?
Postgres 9.2 поддерживает json
колонны. что было бы лучшим способом продлить postgres
автоматически индексировать на основе json
Колум.
например,
create table obj(
obj_id bigserial primary key,
col1 varchar(20),
col2 date,
obj json
);
create index obj_col1 on obj( col1 );
create index obj_col2 on obj( col2 );
когда запись вставлена или обновлена, col1
а также col2
установлены из obj
колонка.
по сути, правило заключается в том, что любой атрибут, кроме первичного ключа и самого столбца json, автоматически устанавливается из объекта json.
как следствие, переименование col1
также обновит json
атрибут, переименование col1
там с новым именем.
может быть сделано с помощью catalogue
а также execute
заявления, но будет медленным, как грех.
может быть сделано путем создания триггеров для каждой таблицы, но это утомительно и подвержено ошибкам.
не может быть достигнуто с помощью наследования, поскольку триггеры не могут наследоваться.
является extension
лучший способ пойти? как бы это выглядело?
заканчивается не может написать extension
сделать это, так как pg не поддерживает триггеры на CREATE TABLE или ALTER TABLE.
единственным предложением для клуджа будет ведение журнала для DDL, отслеживание журнала, а затем запуск процедуры. хотя это и можно сделать, нам действительно нужны триггеры CREATE и ALTER TABLE.
1 ответ
Мне не ясно, как вы выводите "col1" из вашего JSON. Предположительно, это зависит от вашего JSON.
В любом случае - лучший подход - написать скрипт, который пишет для вас триггеры, и другой, который пишет для вас операцию переименования столбца. Вы предоставляете все необходимые параметры, и он выплевывает код plpgsql.
О - вы тоже можете найти http://pgtap.org/ полезным - вам захочется все это проверить.