什么类型的NoSQL数据库最适合存储分层数据?
比方说,我想存储具有树结构的论坛的帖子:
original post + re: original post + re: original post + re2: original post + re3: original post + re2: original post
orangepips.. 31
MongoDB和CouchDB提供了解决方案,但没有内置功能.关于在关系数据库中表示层次结构,请参阅此SO问题,因为我看到的大多数其他NoSQL解决方案在这方面都相似; 您必须编写自己的算法,以便在添加,删除和移动节点时重新计算该信息.一般来说,您要在快速读取时间(例如嵌套集)或快速写入时间(邻接列表)之间做出决定.有关这些方面的更多选项,请参阅上述SO问题 - 平台方法似乎与您的问题最为一致.
抽象出这些考虑因素的一个标准是Java内容存储库(JCR),Apache JackRabbit和JBoss eXo都是实现.注意,在幕后,两者仍在进行某种算法计算以维持如上所述的层次结构.此外,JCR还处理权限,文件存储和其他几个方面 - 因此它可能对您的项目来说太过分了.
MongoDB和CouchDB提供了解决方案,但没有内置功能.关于在关系数据库中表示层次结构,请参阅此SO问题,因为我看到的大多数其他NoSQL解决方案在这方面都相似; 您必须编写自己的算法,以便在添加,删除和移动节点时重新计算该信息.一般来说,您要在快速读取时间(例如嵌套集)或快速写入时间(邻接列表)之间做出决定.有关这些方面的更多选项,请参阅上述SO问题 - 平台方法似乎与您的问题最为一致.
抽象出这些考虑因素的一个标准是Java内容存储库(JCR),Apache JackRabbit和JBoss eXo都是实现.注意,在幕后,两者仍在进行某种算法计算以维持如上所述的层次结构.此外,JCR还处理权限,文件存储和其他几个方面 - 因此它可能对您的项目来说太过分了.
您可能需要的是面向文档的数据库,如MongoDB或CouchDB.
查看允许您在MongoDB中存储分层数据的不同技术示例:http: //www.mongodb.org/display/DOCS/Trees+in+MongoDB
这是图数据库.可以用作树数据库.
http://neo4j.com/