图表与关系数据库的性能

时间:2013-05-17 23:54:35

标签: java hibernate orm relational-database neo4j

我正在开展一个近乎实时地执行大量图形操作的项目。我们目前正在使用Hibernate,MySQL和EhCache,但考虑将所有与图形相关的持久性转移到图形数据库,如Neo4jTitan

图形数据库的表现能否优于Hibernate + relational?我只是想确保我们不会用另外六个替换六个中的六个。

4 个答案:

答案 0 :(得分:7)

对象图越深,对象/图形数据库的性能优势就越大。

关系数据库性能显着下降超过七个JOIN。

CAD / CAM等几何系统,物料清单的深度对象图表,优于其关系对象。

关系数据库有一个巨大的优势:关系代数和数据与访问和操作它的“方式”之间的明确分离。但它们并不适用于所有问题。

答案 1 :(得分:2)

移动到neo4j(或某个图形数据库)时的优势在于查询时间保持不变(几乎是),因此无论数据量的增加如何都可以预测。最好根据您的数据域进行概念验证,因为通用答案通常不适用于nosql dbs。

取自hereenter image description here

答案 2 :(得分:0)

如果您正在使用Hibernate,那么您将持久保存域对象,这些对象本质上是对象图。

数据库是表格式结构,可以通过这种关系做得很好但快速分解。另外,Hibernate有一个讨厌的习惯,就是用连接来拉入整个数据库。

鉴于Neo4j设计的对象关系是它的核心功能,而你正在进行域持久化,这种自然设计适合肯定会更好。

此外,Neo4j使用Lucene(一个愚蠢的快速搜索索引)进行查询,并可以直接跳转到您的节点进行遍历。

结论:Neo4j是针对心灵规模设计的,也是图形相关数据的概念。你不会出现缩放问题,但你会发现工具/库并不像传统的数据库连接那样成熟

答案 3 :(得分:0)

图形和关系数据库都依赖于缓存来提高查询性能。但是,图形数据库中的边缘遍历通常是恒定时间操作,并且如果顶点被高速缓存,则边缘通常被缓存。对于RDBMS,外键遍历需要在目标表上进行B-Tree索引查找,这需要O(log n)时间。当索引不适合缓存时,数据库必须执行缓慢的磁盘搜索操作。

结帐Bitsy。如果您的图表适合内存,则查询和更新速度非常快。或者您可以使用其他Blueprints实现,例如Neo4J和Titan,它们可以处理更大的数据集。