Database NoSQL中的递归设计
如何表达以下设计?Database NoSQL中的递归设计,database,nosql,Database,Nosql,如何表达以下设计? 有两个实体:用户和组 组可以有用户和其他组 用户不能有其他用户或组 高效查询任何组及其包含的所有内容 概念上没有深度限制(当前的硬件规定了它,例如查询速度为5) 示例: 我需要使用NoSQL,并且能够缓存这些数据(例如,Redis,它本身就是NoSQL) --- 我目前的想法是: 每个组都是一个单独的单元,只包含子级(用户和组)id。然后我通过id查询所有的子对象。如果其中一些人也有孩子,我会再做一次往返旅行,以此类推 正如您所想象的,此解决方案需要多个查询,并且数量
- 有两个实体:用户和组
- 组可以有用户和其他组
- 用户不能有其他用户或组
- 高效查询任何组及其包含的所有内容
- 概念上没有深度限制(当前的硬件规定了它,例如查询速度为5)
我需要使用NoSQL,并且能够缓存这些数据(例如,Redis,它本身就是NoSQL) --- 我目前的想法是: 每个组都是一个单独的单元,只包含子级(用户和组)id。然后我通过id查询所有的子对象。如果其中一些人也有孩子,我会再做一次往返旅行,以此类推 正如您所想象的,此解决方案需要多个查询,并且数量随着每个“深度级别”的增加而增加。好消息是,我通过ID查询所有这些项目,这应该非常快
有人能提出更好的方法吗?我会使用图形数据库,因为它们在处理此类查询时非常强大 请记住,您将无法查询节点的“父节点”
你可以用Neo4j来做这个。他们有一个免费的社区版 我认为您应该查看图形类型nosql,而不是键值。您可能应该将其父级的ID存储在逗号分隔的字符串中,这样您就可以将其跟踪回其根节点。