Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database NoSQL中的递归设计_Database_Nosql - Fatal编程技术网

Database NoSQL中的递归设计

Database NoSQL中的递归设计,database,nosql,Database,Nosql,如何表达以下设计? 有两个实体:用户和组 组可以有用户和其他组 用户不能有其他用户或组 高效查询任何组及其包含的所有内容 概念上没有深度限制(当前的硬件规定了它,例如查询速度为5) 示例: 我需要使用NoSQL,并且能够缓存这些数据(例如,Redis,它本身就是NoSQL) --- 我目前的想法是: 每个组都是一个单独的单元,只包含子级(用户和组)id。然后我通过id查询所有的子对象。如果其中一些人也有孩子,我会再做一次往返旅行,以此类推 正如您所想象的,此解决方案需要多个查询,并且数量

如何表达以下设计?

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


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

--- 我目前的想法是:

每个组都是一个单独的单元,只包含子级(用户和组)id。然后我通过id查询所有的子对象。如果其中一些人也有孩子,我会再做一次往返旅行,以此类推

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


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

我会使用图形数据库,因为它们在处理此类查询时非常强大

请记住,您将无法查询节点的“父节点”


你可以用Neo4j来做这个。他们有一个免费的社区版

我认为您应该查看图形类型nosql,而不是键值。您可能应该将其父级的ID存储在逗号分隔的字符串中,这样您就可以将其跟踪回其根节点。