Fork me on GitHub

图数据库的选择与对比(Neo4j)

Neo4j是由Java和Scala写成的一个NoSql数据库,专门用于网络图的存储。作为一个图形数据库Neo4j有以下优点

  • 更快的数据库操作。当然,有一个前提条件,那就是数据量较大,在MySql中存储的话需要许多表,并且表之间联系较多
  • 数据更直观,相应的SQL语句也更好写(Neo4j使用Cypher语言,与传统SQL相比语义清晰简单)。
  • 更灵活。不管有什么新的数据需要存储,都是一律的节点和边,只需要考虑节点属性和边属性。而MySql中即意味着新的表,还要考虑和其他表的关系。
  • 数据库操作的速度并不会随着数据库的增大有明显的降低。这得益于Neo4j特殊的数据存储结构和专门优化的图算法。

 ArangoDB是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型,提供了涵盖三种数据模型的统一的数据库查询语言,并允许在单个查询中混合使用三种模型。

ArangoDB是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型,提供了涵盖三种数据模型的统一的数据库查询语言,并允许在单个查询中混合使用三种模型。

ArangoDB的优点:

  • 可以灵活的使用键值对、文档、图及其组合构建你的数据模型。
  • 跟其它文档型数据库相比,ArangoDB占用的存储空间更少,因为ArangoDB是模式自由的元数据模式。(空间利用率高)
  • 可通过JavaScript进行扩展

二者进行对比:

  • 数据存储
    • Neo4j对于图的存储自然是经过特别优化的。不像传统数据库的一条记录一条数据的存储方式,Neo4j的存储方式是:节点的类别,属性,边的类别,属性等都是分开存储的,这将大大有助于提高图形数据库的性能。
    • ArangoDB中的存储格式非常类似JSON,叫做VelocyPack格式的二进制格式存储。
  • 数据读写
    • Neo4j中,存储节点时使用了"index-free adjacency",即每个节点都有指向其邻居节点的指针,可以让我们在O(1)的时间内找到邻居节点。
    • ArangoDB中,默认的索引(节点,边)是哈希索引,不能用于范围查询、排序。整体使用了查询速度快也在O(1)左右
  • 易用性
    • 二者差不多,neo4j采用的是cypher语义清晰
    • arangoDB采用的是AQL易用性现在参考较少
  • 综合
    • Neo4j作为较早的一批图形数据库之一,文档和各种技术博客较多,技术成熟可用成功案例多。
    • Neo4j查询的高性能表现、易于使用的特性及其设计的灵活性和开发的敏捷性,以及坚如磐石般的事务管理特性等特点,都充分说明了使用Neo4j是一个不错的选择。有关它的所有优点,总结起来,主要表现在以下几个方面。

  (1)闪电般的读/写速度,无与伦比的高性能表现。

  (2)非结构化数据存储方式,在数据库设计上具有很大的灵活性。

  (3)能很好地适应需求变化,并适合使用敏捷开发方法。

  (4)很容易使用,可以用嵌入式、服务器模式、分布式模式等方式来使用数据库。

  (5)使用简单框图就可以设计数据模型,方便建模。

  (6)图数据的结构特点可以提供更多更优秀的算法设计。

  (7)完全支持ACID完整的事务管理特性。

  (8)提供分布式高可用模式,可以支持大规模的数据增长。

  (9)数据库安全可靠,可以实时备份数据,很方便恢复数据。

  (10)图的数据结构直观而形象地表现了现实世界的应用场景

  • 硬件部署

  Neo4j如果没有热备、容错的需求,一台普通的服务器就可以了,比如内存 32G,4 个内核。

 图数据库2015-2019排名

 

 

 

posted @ 2020-10-14 17:09  鲍鲍tql  阅读(3825)  评论(0编辑  收藏  举报