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

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

例如,我想用一个树形结构来存储论坛的帖子:

original post
+ re: original post
+ re: original post
+ re2: original post
+ re3: original post
+ re2: original post
56980 次浏览

给你一个不用回答的问题。SQLServer 2008!对于递归查询非常有用。或者您可以采用老式的路由,将层次结构数据存储在一个单独的表中,以避免递归。

我认为关系数据库非常适合树型数据。在查询性能和易用性方面。只有一个警告。您将插入到一个索引表,可能还有其他几个索引表,每次有人发表文章。在 facebook 论坛上插入性能可能是个问题。

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

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

MongoDB 和 CouchDB 提供解决方案,但没有内置功能。在 代表关系数据库的等级制度上可以看到这个 SO 问题,因为我看到的大多数其他 NoSQL 解决方案在这方面是相似的; 在这里,您必须编写自己的算法,以便在添加、删除和移动节点时重新计算这些信息。一般来说,你要在快速读取时间(如 nested set)和快速写入时间(邻接名单)之间做出选择。见前面提到的 SO 问题沿着这些路线的更多选项-平台式进场法平台式进场法似乎最符合你的问题。

Java 内容存储库(JCR)是一个抽象出这些考虑的标准,阿帕奇长耳兔JBoss eXo都是实现。注意,在幕后,两者仍然在进行一些算法计算,以维护上述的层次结构。此外,JCR 还处理权限、文件存储和其他一些方面——所以对于您的项目来说,它可能有些过头了。

看看 MarkLogic。你可以从网站下载一份样本。它是一个非结构化数据数据库,属于 NoSQL 数据库分类。我知道非结构化数据是一个非常重要的术语,但是只要把它看作是不适合于 RDBMS 的行和列的数据(比如分层数据)。

存在-db 为 xml 持久化实现的分层数据模型

面对同样的问题,我决定使用 Lua + Redis https://github.com/qbolec/Redis-Tree/创建我自己的(非常简单的)解决方案

Graph databases would probably also solve this problem. If neo4j is not enough for you in terms of scaling, consider 泰坦, which is based on various storage back-ends including HBase and should scale very well. It is not as mature as neo4j, but it is a very promising project.

刚刚度过了一个周末的培训课程,使用 MUMUPS 数据库作为一个全栈 javascript 浏览器应用程序开发框架的后端。好东西!我建议使用 GPL 的 MUMPS 的 GTM 发行版。或者试试 http://sourceforge.net/projects/mumps/?source=recommended的香草味腮腺炎。请查看 ewd.js 框架的 http://robtweed.wordpress.com/以及 MUMPS 的更多信息。

当然是 LDAP,OpenLDAP 可以使它变得简单。

在数学中,更确切地说,在图论中,树是一个无向图,其中任意两个顶点正好通过一条路径 连接。所以任何 graph db都可以做到这一点。顺便说一下,像树这样的普通图形可以简单地映射到任何关系数据库或非关系数据库。要将分层数据存储到关系数据库中,可以看看 Bill Karwin的这个非常棒的演示文稿。此外,亦设有树木存放设施。例如,TypeORM支持用于存储层次结构的邻接列表和闭包表模式。

TypeORM 用于 TypeScriptJavascript 开发。 查查常见的 ORMs根据您的环境查找一个支持树。

非关系数据库之王[ IMHO ]是 Mongodb。看看这是 文件。看看它是如何储存树木的。树是最常见的图形类型,它们被广泛使用。任何成熟的 DB 解决方案都应该有一种处理树的方法。

一个本地支持分层数据的 NoSql 存储服务是 AmazonWeb 服务的简单存储服务(AWS S3)。基于路径的键本质上是分层的,blob 值可以使用属性(mime type,例如 application/json、 text/csv 等)进行类型化。S3的优点包括能够扩展到极大的总体容量、版本控制以及近乎无限的并发写入。缺点包括不支持条件写(乐观并发)或一致读(只对后读写)以及不支持引用/关系。它也纯粹是基于使用的,因此需求的巨大差异不需要复杂的伸缩基础设施或过多的供应能力。

Clicknouse db has explicit support for 分层数据