每个对象(实例)都有其自己的每个用户的隐私设置。这些设置通过对象表行中的privacy JSONB字段来定义。我想知道哪种方式更好,特别是在性能方面?或者是否有更好的方法?
说明:ID为2的用户可以读取和写入对象
ID为8的用户只能读取对象
SQL查询:获取ID为2的用户可以读取的记录(假设为tasks表)
情况一 - 使用数组(注意:第一个键是用户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)
欢迎提出任何建议。