多模数据库与多个个人数据库?

时间:2015-12-08 13:57:38

标签: mongodb neo4j orientdb multi-model-database database

我正在开发应用程序,它需要图形数据库(存储原始数据)和文档数据库(从原始数据中提取的报告)提供的功能。我计划使用neo4j和mongodb。我正在考虑和关注orientDB。拥有一个多模型数据库比两个独立的数据库更好吗?我倾向于neo4j的原因是它的原生图存储可能对于大图的内存局部性而言非常方便。 OrientDB本身不存储图形。或者是吗?

2 个答案:

答案 0 :(得分:2)

OrientDB本地存储图形。它的引擎是100%的图形数据库,如Neo4j。实际上,OrientDB和Neo4j是唯一具有无索引邻接的图形数据库。其他一些图形数据库充当现有模型(RDBMS,列或文档存储)之上的层。

所以你无法用Neo4j做任何东西,你无法用OrientDB做。但OrientDB允许建模更复杂的数据,如Document DBMS(MongoDB)可以做到的。例如,OrientDB中的每个顶点和边都是一个文档(json),因此您可以存储顶点和边复杂类型,如嵌入属性,列表,集,日期,小数等。

答案 1 :(得分:1)

不要被术语弄得眼花缭乱。 "无索引邻接"是一个术语,简单地表示图形顶点存储"与"他们的边缘。每个数据库都以稍微不同的方式执行此操作。 Neo4J将它们存储在链接列表中的磁盘上。如果你把它们放在记忆中,并且它们不是太多,那么它们就会很快。如果你必须在磁盘上点击它们,那么你可能需要一个索引。 Titan将它们作为列存储在诸如Cassandra的宽列数据库中。如果他们在记忆中,他们会很快。如果必须在磁盘上点击它们,则底层数据库的范围查询可以快速加载它们,而额外的索引可以降低搜索大型边缘列表的成本。

这个讨论很有价值:How does Titan achieve constant time lookup using HBase / Cassandra?

无论您是使用OrientDB还是其他任何数据库,图表查询的效率在很大程度上取决于您实施的索引,以便您启动图表查询并遍历相对较小的集合节点请务必对您正在进行的一些查询进行建模,以确保您选择的任何数据库都支持正确的索引,无论它们是在整个图形中还是在每个顶点的本地。