当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 将任意键/值对与Postgres DB中的表行相关联的最佳方法?

来源:互联网 收集:自由互联 发布时间:2021-06-22
对于Postgres 8.4 DB,我有一个非常完美的关系数据模式,但是我需要能够将任意键/值对与我的几个表相关联,分配的键按行变化.键/值对是用户生成的,因此我无法提前预测它们或纠缠有序的架
对于Postgres 8.4 DB,我有一个非常完美的关系数据模式,但是我需要能够将任意键/值对与我的几个表相关联,分配的键按行变化.键/值对是用户生成的,因此我无法提前预测它们或纠缠有序的架构更改.

我有以下要求:

>键/值对将经常被读取,偶尔写入.读取必须相当快.
>否(现在)需要查询键或值. (但有一天它可能会派上用场.)

我看到以下可能的解决方案:

> Entity-Attribute-Value pattern/antipattern.烦人,但烦恼一般会被我的ORM所抵消.
>将键/值对存储为文本列上的序列化JSON数据.一个简单的解决方案,ORM再次派上用场,但我可以亲吻未来自己对查询的需求再见.
>将键/值对存储在其他一些NoSQL数据库中 – 可能是键/值或文档存储. ORM在这里没有帮助.我自己必须管理单独的查询(以及迫在眉睫的数据完整性问题?).

我担心查询性能,因为我希望有一天会有很多这些.我也关心程序员的表现,因为我必须构建,维护和使用这些东西.这里有明显的最佳方法吗?或者我错过了什么?

这正是PostgreSQL中hstore数据类型的用途.
http://www.postgresql.org/docs/current/static/hstore.html

它真的很快(你可以索引它)并且很容易处理.唯一的缺点是你只能存储字符数据,但你也遇到其他解决方案的问题.

索引支持“exists”运算符,因此您可以非常快速地查询存在特定键的行,或者查询特定属性具有特定值的行.

由于一些尺寸限制被取消,因此9.0甚至更好.

网友评论