哪种类型的NoSQL数据库最适合存储分层数据?
例如,我要以树形结构存储论坛的帖子:
original post
+ re: original post
+ re: original post
+ re2: original post
+ re3: original post
+ re2: original post
哪种类型的NoSQL数据库最适合存储分层数据?
例如,我要以树形结构存储论坛的帖子:
original post
+ re: original post
+ re: original post
+ re2: original post
+ re3: original post
+ re2: original post
Answers:
这是图形数据库。可以用作树数据库。
MongoDB和CouchDB提供解决方案,但没有内置功能。看到这个关于在关系数据库中表示层次结构的问题,因为我所看到的大多数其他NoSQL解决方案在这方面都是相似的。在添加,删除和移动节点时,您必须编写自己的算法来重新计算该信息。一般来说,您是在快速读取时间(例如nested set)还是快速写入时间(邻接表)之间做出决定。有关这些方面的更多选择,请参见上述SO问题-平板方法似乎与您的问题最为吻合。
Java Content Repository(JCR)是消除这些考虑因素的一种标准,Apache JackRabbit和JBoss eXo都是实现。请注意,幕后双方仍在进行某种算法计算以保持如上所述的层次结构。此外,JCR还处理权限,文件存储和其他几个方面-因此对于您的项目而言,它可能会显得过大。
您可能需要的是面向文档的数据库,例如MongoDB或CouchDB。
查看允许您在MongoDB中存储分层数据的不同技术的示例:http : //www.mongodb.org/display/DOCS/Trees+in+MongoDB
hierarchical data
什么关系?
最常见的是IBM的IMS。还有Cache Database
面对相同的问题,我决定使用Lua + Redis https://github.com/qbolec/Redis-Tree/创建自己的(非常简单)的解决方案
在数学中,更具体地说,在图论中,一棵树是无向图,其中任意两个顶点通过一条路径连接。因此,任何图数据库都可以肯定地完成这项工作。顺便说一句,像树这样的普通图形可以简单地映射到任何关系或非关系数据库。要将分层数据存储到关系数据库中,请看Bill Karwin的精彩演示。也有带有存储树的设施的ORM。例如TypeORM支持邻接表和闭合表模式,用于存储层次结构。
TypeORM用于TypeScript \ Javascript开发。检查流行的ORM,以根据您的环境找到一个支持的树。
非关系型数据库[IMHO]的王者是Mongodb。查看它的文档。找出如何储存树木。树是最常见的图形,它们在任何地方都可以使用。任何完善的数据库解决方案都应具有处理树的方法。
这是您无法解决的问题。SQLServer 2008 !!!! 这对于递归查询非常有用。或者,您可以使用老式的路由并将层次结构数据存储在单独的表中,以避免递归。
我认为关系数据库非常适合树状数据。在查询性能和易用性上。需要注意的是...。您将在有人发表文章时将其插入到索引表中,并且可能还会插入其他几个索引表中。插入性能可能是Facebook口径论坛上的一个问题。
hierarchid
数据类型;但是,SQL缓慢且笨拙。
刚刚度过了一个周末的培训课程,使用MUMUPS db作为全栈javascript浏览器应用程序开发框架的后端。好东西!我建议使用GPL的MUMPS的GT.M版本。或尝试使用http://sourceforge.net/projects/mumps/?source=recommended来获得香草MUMPS。请访问http://robtweed.wordpress.com/了解ewd.js js框架以及有关MUMPS的更多信息。