什么types的NoSQL数据库最适合存储分层数据?
什么types的NoSQL数据库最适合存储分层数据?
举个例子,我想存储一个树形结构的论坛post:
original post + re: original post + re: original post + re2: original post + re3: original post + re2: original post
这是graphics数据库。 可以用作树数据库。
MongoDB和CouchDB提供了解决scheme,但没有内置function。 看到这个关于在关系数据库中表示层次结构的问题,因为我见过的大多数其他NoSQL解决scheme在这方面是相似的; 在那里你必须编写自己的algorithm来重新计算节点被添加,删除和移动的信息。 一般来说,你要在快速读取时间(例如嵌套集 )或快速写入时间( 邻接列表 )之间作出决定。 请参阅前面提到的SO问题,以获得更多的选项 – 平台方法看起来与您的问题最为一致。
一个抽象的标准是Java内容存储库 (JCR), Apache JackRabbit和JBoss eXo都是实现的。 请注意,在幕后,两者仍然在进行某种algorithm计算,以保持上述的层次结构。 此外,JCR还处理权限,文件存储和其他几个方面 – 所以它可能是你的项目矫枉过正。
你可能需要的是像MongoDB或CouchDB这样的面向文档的数据库。
查看允许您在MongoDB中存储分层数据的不同技术示例: http : //www.mongodb.org/display/DOCS/Trees+in+MongoDB
面对同样的问题,我决定使用Lua + Redis创build我自己的(非常简单的)解决schemehttps://github.com/qbolec/Redis-Tree/
最常见的是IBM的IMS ,还有Cache Database
看到这个问题贴在stackexchange的dba部分。
Exist-db为xml持久性实现了分层数据模型
图数据库也可能解决这个问题。 如果neo4j在扩展方面还不够,那么可以考虑基于不同存储后端(包括HBase)的Titan ,并且应该可以很好地扩展。 它不像neo4j那样成熟,但它是一个非常有前景的项目。
LDAP,显然。 OpenLDAP将会缩短工作时间。
检查MarkLogic 。 您可以从网站下载演示文稿。 它是非结构化数据的数据库,属于数据库的NoSQL分类。 我知道非结构化数据是一个非常有用的术语,但是把它看作是不适合RDBMS的行和列的数据(如分层数据)。
刚刚在一个使用MUMUPS数据库的培训课程作为一个完整的堆栈JavaScript浏览器应用程序开发框架的后端周末。 好东西! 我build议在GPL下的MUMPS的GT.M发行版。 或尝试http://sourceforge.net/projects/mumps/?source=recommended香草MUMPS。; 查看http://robtweed.wordpress.com/ for ewd.js js框架以及更多关于MUMPS的信息。
这是你的答案。 SQLServer 2008! recursion查询是很好的。 或者你可以走老式的路线和存储层次数据在一个单独的表,以避免recursion。
我认为关系型数据库非常适合树型数据。 在查询性能和易用性。 有一个警告….你将被插入一个索引表,可能还有其他几个索引表每次有人发表。 插入性能可能是一个Facebook口径论坛上的问题。