【发布时间】:2016-02-02 15:47:16
【问题描述】:
每个对象(实例)对每个用户都有自己的隐私设置。这些设置通过对象表行中的privacy JSONB field 定义。我很好奇哪种方式对性能更好?还是更好的方法?
解释:
- ID 为 2 的用户可以读取和写入对象
- ID 为 8 的用户只能读取对象
- SQL 查询:获取 ID 为 2 的用户可以读取的记录(假设任务表)
案例一 - 使用数组(注意:第一个键是用户 ID)
privacy: {
"2": ["read","write"],
"8": ["read"]
}
SELECT * FROM "tasks" WHERE (privacy -> '2' ? 'read')
案例二 - 使用对象(术语不确定,对我来说更像是哈希)
privacy: {
"2": {"read":true, "write":true},
"8": {"read":true, "write":false}
}
SELECT * FROM "tasks" WHERE (privacy -> '2' -> 'read' = true)
欢迎提出任何建议。
【问题讨论】:
-
你能举几个例子吗?你是如何使用这些数据的?我认为答案可能取决于此。
-
我已经添加了 SQL 查询。
标签: postgresql jsonb