Mongodb 多模式数据库与多个单独数据库?

Mongodb 多模式数据库与多个单独数据库?,mongodb,neo4j,orientdb,multi-model-database,database,Mongodb,Neo4j,Orientdb,Multi Model Database,Database,我正在开发的应用程序需要图形数据库(存储原始数据)和文档数据库(从原始数据中提取报告)提供的功能。我计划使用neo4j和mongodb。我正在重新考虑和研究orientDB。一个多模式数据库是否比两个单独的数据库更好?我倾向于neo4j的原因是它的本机图形存储,这对于大型图形的内存局部性可能很有用。OrientDB不以本机方式存储图形。还是这样?OrientDB以本机方式存储图形。它的引擎是100%像Neo4j一样的图形数据库。实际上,OrientDB和Neo4j是唯一具有无索引邻接的图形数据库

我正在开发的应用程序需要图形数据库(存储原始数据)和文档数据库(从原始数据中提取报告)提供的功能。我计划使用neo4j和mongodb。我正在重新考虑和研究orientDB。一个多模式数据库是否比两个单独的数据库更好?我倾向于neo4j的原因是它的本机图形存储,这对于大型图形的内存局部性可能很有用。OrientDB不以本机方式存储图形。还是这样?

OrientDB以本机方式存储图形。它的引擎是100%像Neo4j一样的图形数据库。实际上,OrientDB和Neo4j是唯一具有无索引邻接的图形数据库。其他一些图形数据库充当现有模型(RDBMS、列或文档存储)顶部的一个层


因此,对于Neo4j,没有什么是OrientDB做不到的。但是OrientDB允许建模更复杂的数据,就像文档DBMS(MongoDB)可以做的那样。例如,OrientDB中的每个顶点和边都是一个文档(json),因此您可以存储在顶点和边的复杂类型中,如嵌入式属性、列表、集合、日期、小数等。

不要被术语迷惑。“无索引邻接”是一个术语,它简单地表示图形顶点与其边一起存储。每个数据库以稍微不同的方式执行此操作。Neo4J将它们存储在链接列表中的磁盘上。如果你在记忆中有它们,并且没有太多,它们会很快。如果你必须在磁盘上点击它们,那么你可能需要一个索引。Titan将它们作为列存储在宽列数据库中,如Cassandra。如果它们在记忆中,那么它们很快。如果您必须在磁盘上点击它们,底层数据库的范围查询使它们能够快速批量加载,额外的索引可以降低搜索大型边缘列表的成本

这一讨论相当有价值:

无论您使用的是OrientDB还是任何其他数据库,图形查询的效率在很大程度上取决于您建立的索引,以便在相对较小的一组节点上启动图形查询并遍历这些节点。确保对正在执行的一些查询进行建模,以确保所选的任何数据库都支持正确的索引,无论它们是跨整个图形的索引,还是每个顶点的局部索引