什么类型的NoSQL数据库最适合存储分层数据?

dea*_*mon 69 database tree hierarchical-data nosql

什么类型的NoSQL数据库最适合存储分层数据?

比方说,我想存储具有树结构的论坛的帖子:

original post
 + re: original post
 + re: original post
   + re2: original post
     + re3: original post
   + re2: original post
Run Code Online (Sandbox Code Playgroud)

ora*_*ips 31

MongoDB和CouchDB提供了解决方案,但没有内置功能.关于在关系数据库中表示层次结构,请参阅此SO问题,因为我看到的大多数其他NoSQL解决方案在这方面都相似; 您必须编写自己的算法,以便在添加,删除和移动节点时重新计算该信息.一般来说,您要在快速读取时间(例如嵌套集)或快速写入时间(邻接列表)之间做出决定.有关这些方面的更多选项,请参阅上述SO问题 - 平台方法似乎与您的问题最为一致.

抽象出这些考虑因素的一个标准是Java内容存储库(JCR),Apache JackRabbitJBoss eXo都是实现.注意,在幕后,两者仍在进行某种算法计算以维持如上所述的层次结构.此外,JCR还处理权限,文件存储和其他几个方面 - 因此它可能对您的项目来说太过分了.


Max*_*dov 18

您可能需要的是面向文档的数据库,如MongoDBCouchDB.

查看允许您在MongoDB中存储分层数据的不同技术示例:http: //www.mongodb.org/display/DOCS/Trees+in+MongoDB

  • 这与“分层数据”有什么关系? (2认同)

Rip*_*rot 17

这是图数据库.可以用作树数据库.

http://neo4j.com/

  • 今天我看得更清楚了,并同意这是典型的图结构。当然,它也可以建模为文档或相关数据库,但图形数据库似乎是最合适的。而且,是的,OrientDB 绝对值得一看。 (3认同)

Lor*_*dus 0

这是给你的一个非答案。SQL Server 2008!!!它非常适合递归查询。或者,您可以采用老式路线并将层次结构数据存储在单独的表中以避免递归。

我认为关系数据库非常适合树数据。无论是查询性能还是易用性。需要注意的是......每次有人发帖时,您都会插入一个索引表,并且可能还会插入几个其他索引表。插入性能可能是 Facebook calibre 论坛上的一个问题。

  • 作为 SQL Server 2008 有用的原因,您至少需要在这里讨论通用表表达式和/或 XML 功能。 (4认同)
  • SQL 确实有“hierarchid”数据类型;然而,sql 又慢又笨。 (2认同)