NoSQL中的递归设计

4

如何表达以下设计?

  • 有两个实体:用户和群组
  • 群组可以有用户和其他群组
  • 用户不能拥有其他用户或群组
  • 高效查询任何群组及其包含的所有内容
  • 从概念上讲没有深度限制(当前硬件限制为查询速度,例如5)

例子:

enter image description here


我需要使用NoSQL,并且能够缓存这些数据(例如Redis,它本身就是NoSQL)。

---

我的当前想法:

每个群组都是一个单独的单元,只包含孩子(用户和群组)ID。然后我通过ID查询所有子项。如果其中一些也有子项,则我会进行另一次往返等等。

正如您所想象的那样,这种解决方案需要多个查询,并且随着“深度级别”的增加而增加。好消息是,我通过ID查询所有这些项目,这应该非常快。

有人能提出更好的方法吗?


我认为你应该考虑使用图形类型的NoSQL数据库,而不是键值型。 - Harshal Bulsara
你应该将其父节点的ID存储在逗号分隔的字符串中,这样你就有一种方式可以追踪它回到根节点。 - PazoozaTest Pazman
1个回答

0

对于处理这种类型的查询,我会使用图数据库,因为它们非常强大。

请注意,你将无法查询一个节点的“父节点”。

你可以使用Neo4j来实现。他们有一个免费的社区版。https://neo4j.com/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接