扩展 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 );

插入或更新记录时,将从obj列设置col1col2

从本质上讲,规则是除了主键和 JSON 列本身之外,任何属性都是从 JSON 对象自动设置的。

作为相关名称,重命名col1也会更新json属性,将col1重命名为新名称。

可以使用catalogueexecute语句来完成,但会像罪恶一样缓慢。

可以通过为每个表创建触发器来完成,但这既乏味又容易出错。

无法

通过继承完成,因为触发器无法继承。

extension是最好的选择吗? 它甚至会是什么样子?

<小时 />

最终无法写入extension来执行此操作,因为 PG 不支持创建表或更改表上的触发器。

对于 kludge 的唯一建议是 DDL 的日志,监视日志,然后运行一个过程。 虽然这可以做到,但我们真正需要的是 CREATE 和 ALTER TABLE 上的触发器。

我不清楚你是如何从你的 json 中派生"col1"的。大概这取决于您的 json。

无论如何 - 最好的方法是编写一个脚本来为您编写触发器,另一个脚本为您编写列重命名操作。你提供任何必要的参数,它会吐出plpgsql代码。

哦 - 你可能会发现 http://pgtap.org/有用 - 你会想要测试所有这些。

相关内容

最新更新