[知识图谱] 3.1-图数据库是什么?Neo4j是什么?

3,028 阅读3分钟

图数据库是什么?就算是科班出身的朋友,可能也对图数据库没有多少了解。图数据库是基于图论实现的一种新型的NoSQL数据库。

关系型数据库的不适性

  • 随着关系数据库使用范围的不断扩大,也暴露出一些它始终无法解决的问题,其中最主要的是数据建模中的一些缺陷和问题,以及在大数据量和多服务器之上进行水平伸缩的限制。

  • 互联网发展产生了一些新的趋势变化:用户、系统和传感器产生的数据量呈指数增长,数据量不断增加,大数据的存储和处理; 新时代互联网形势下的问题急迫性,这一问题因互联网+、社交网络,智能推荐等的大规模兴起和繁荣而变得越加紧迫。

NoSQL数据库的数据模型

  • NoSQL(Not Only SQL,不限于SQL)是一类范围非常广泛的持久化解决方案,它们不遵循关系数据库模型,也不使用SQL作为查询语言。 其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般有水平可扩展的特征。

  • NoSQL数据库可以按照它们的数据模型分成4类:键-值存储库(Key-Value-stores);列数据库(BigTable-implementations);文档库(Document-stores);图形数据库(Graph Database)。

做知识图谱为什么选择图形数据库,为什么选择Neo4j?

  • 更快的数据库操作。当然,有一个前提条件,那就是数据量较大,在MySql中存储的话需要许多表,并且表之间联系较多(即有不少的操作需要join表)。

  • 数据更直观,相应的SQL语句也更好写(Neo4j使用Cypher语言,与传统SQL有很大不同)。

  • 更灵活。不管有什么新的数据需要存储,都是一律的节点和边,只需要考虑节点属性和边属性。而MySql中即意味着新的表,还要考虑和其他表的关系。

  • 数据库操作的速度并不会随着数据库的增大有明显的降低。这得益于Neo4j特殊的数据存储结构和专门优化的图算法。

图数据库有哪些特征?

  • 包含节点和边;

  • 节点上有属性(键值对);

  • 边有名字和方向,并总是有一个开始节点和一个结束节点;

  • 边也可以有属性。

在项目中使用Neo4J

  • 对事务的支持。Neo4J强制要求每个对数据的更改都需要在一个事务之内完成,以保证数据的一致性。

  • 强大的图形搜索能力。Neo4J允许用户通过Cypher语言来操作数据库。该语言是特意为操作图形数据库设计的,因此其可以非常高效地操作图形数据库。 同时Neo4J也提供了面向当前市场一系列流行语言的客户端,以供使用这些语言的开发人员能够快速地对Neo4J进行操作。

  • 具有一定的横向扩展能力。由于图中的一个结点常常具有和其它结点相关联的关系,因此像一系列Sharding解决方案那样对图进行切割常常并不现实。 因此Neo4J当前所提供的横向扩展方案主要是通过Read Replica进行的读写分割。 反过来,由于单个Neo4J实例可以存储几十亿个结点及关系,因此对于一般的企业级应用,这种横向扩展能力已经足够了。

参考资料

下一篇

3-2. Neo4j的配置和使用