图数据库与关系型数据库性能比较

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

问:相比于Hibernate+关系型数据库,图形数据库能否更好地执行?我只是想确保我们不会用半打换六。

4个回答

9

对象/图形数据库在对象图深度较大时具有更大的性能优势。

关系型数据库的性能随着七个以上的JOIN而显著下降。

几何系统(例如CAD/CAM)对于物料清单具有深层次的对象图,因此其性能优于关系型数据库。

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


4
移动到neo4j(或某些图形数据库)的优势在于,查询时间保持恒定(几乎如此),因此可以预测无论数据量增加多少。最好基于您的数据领域进行概念验证,因为通用答案通常不适用于nosql数据库。
取自这里

1
图形和关系型数据库都依赖于缓存来提高查询性能。然而,在图形数据库中,边遍历通常是一个恒定时间操作,并且如果顶点被缓存,则通常会缓存该边。使用RDBMS,外键遍历需要在目标表上进行B-Tree索引查找,这需要O(log n)时间。当索引不适合缓存时,数据库将执行磁盘查找操作,这很慢。
请查看Bitsy。如果您的图适合内存,它对于查询和更新非常快。或者您可以选择另一个Blueprints实现,如Neo4J和Titan,它们可以处理更大的数据集。

0

如果你正在使用Hibernate,那么你正在持久化本质上是对象图的领域对象。

数据库是表格结构,对于这种关系可以做得很好,但很快就会崩溃。此外,Hibernate有一个恶习,就是通过连接将整个数据库拉入其中。

考虑到Neo4j是以对象关系为核心功能设计的,而且你正在进行领域持久化,这种自然设计匹配肯定更好。

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

底线:Neo4j是为惊人的规模和图形相关数据的概念而设计的。在扩展方面没有问题,但你会发现工具/库并不像传统的DB连接那样成熟。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接