权限查找的数据库体系结构

时间:2015-01-10 21:09:54

标签: mysql database-design cassandra permissions nosql

我必须使用产品和用户建模数据库。

产品有多个列 - 价格,重量,描述等。每个用户都有权限产品中的特定行以及这些行中的特定单元格。

为大规模快速查找建模权限的最佳方法是什么?假设我们可以拥有数百万种产品和数十万用户。一些产品细胞可以经常更换。

我想到了以下几点:

  • 带有productId,Product cell,UserId,CellPermission的NoSql DB。
  • 将产品和用户作为节点和权限的图表数据库是关系。
  • 带产品和用户及权限的MySQL表并执行多个查询和连接

什么会带来最佳表现?

1 个答案:

答案 0 :(得分:0)

我更喜欢像redis这样的keyvalue商店,以便更快地查找,其中键是UserId以及值,字段列表和权限。

假设我们事先知道谁是登录用户以及产品的字段列表,我们需要知道的是用户对该字段的最高权限。如果它可以存储在一个简单的查找中,它会使事情变得更好。

让我们假设一个产品有3个字段

  • Field1
  • Field2
  • Field3和权限如下

  • UserA可以读取Field1,Field2但不能读取Field3

  • UserB只能读取和更新Field1
  • 管理员可以阅读/更新/删除所有字段

然后查找看起来像

KEY | VALUE(字段和权限字典序列化为json)

  1. UserA | {“field1”:1,“field2”:1,“field3”:1}
  2. UserB | {“field1”:2}
  3. 管理员| {“field1”:4,“field2”:4,“field3”:4}
  4. 注意:权限可以存储为按位枚举,其中上述1,2,4表示读取,编辑和删除权限。