如何表达以下设计?
- 有两个实体:用户和群组
- 群组可以有用户和其他群组
- 用户不能拥有其他用户或群组
- 高效查询任何群组及其包含的所有内容
- 从概念上讲没有深度限制(当前硬件限制为查询速度,例如5)
例子:
我需要使用NoSQL,并且能够缓存这些数据(例如Redis,它本身就是NoSQL)。
---
我的当前想法:
每个群组都是一个单独的单元,只包含孩子(用户和群组)ID。然后我通过ID查询所有子项。如果其中一些也有子项,则我会进行另一次往返等等。
正如您所想象的那样,这种解决方案需要多个查询,并且随着“深度级别”的增加而增加。好消息是,我通过ID查询所有这些项目,这应该非常快。
有人能提出更好的方法吗?