携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详情
Neo4j是一种新型数据库产品,除了能像传统关系模型数据库一样支持处理数据、分析、存储的功能外,它以数学知识中的图论为理论基础,非常擅长于处理庞大数据之间的关系分析,因此在学术领域和产业领域上一般称之为:图数据库(Graph Database)是以图论的相关知识为支撑实现的,该数据库从广义上来看是属于NoSQL数据库的一个种类。与传统的关系数据库相似,Neo4j不需要去系统的学习比较高深的建立在数学集合论基础上的关系代数,只需要掌握一定程度上的SQL(Structured Query Language)知识即可。在图数据库里,一个关系列表里面会存放各个节点之间的关系记录信息,而每个节点中都存放着一个关系列表。一个节点表示一个实体,节点与节点之间通过有向边连接,可以是单向也可以是双向关系,通过边的方向与节点类型将图中的关系记录连接起来,同时将一些附属信息保存起来[3]。每当进行此类关系数据库的连接(JOIN)操作处理时,数据库不需要对这些记录进行匹配和搜索计算操作,而是通过这些列表对节点进行直接访问。Neo4j 之所以能够提供比传统关系数据库更高数量级的性能就是凭借把关系信息提前保存到关系列表中这一能力。相比较与传统的关系数据库而言,图数据库所构建的数据模型在处理大规模数据集合时其性能更加高效。
Neo4j与其它数据库对比
性能 | 关系数据库 | Neo4j |
---|---|---|
存储结构 | 存储的数据储存是指一种可以提前描述出来的、结构稳定的二维数据。数据的关联主要表现为数据的行和列之间彼此联系,但是检索速度较低的 | Neo4j使用图存储结构,其结构自由邻接,能够给事务处理、数据关系处理带来更高的效率,更快的速度 |
数据查询性能 | 在关系数据库中进行多表联合数据查询时,数据的处理效率与连接操作息息相关,如果单一表的行数非常大,即便是一个简单的连接查询也会耗费大量系统资源 | 由于Neo4j使用的图存储结构,数据之间的关系是附加在节点上,无论数据关系的数量或深度如何增大都可以确保零延迟和实用功能 |
查询语言 | 使用SQL查询语言,语句的复杂度会因连接查询的操作数量而增加 | 使用Cypher图查询语言,可以最有效的表达出关系查询 |
事务处理 | 使用关系数据库的ACID事务处理企业应用程序,保证了数据的可靠和一致性 | Neo4j可以为企业应用程序提供ACID事务,保证了数据全面一致和可靠性 |
数据库扩展性 | 关系数据库是通过服务器间的复制进行扩展,这种维护成本很高。如果数据表之间存在多种复杂的关系,则这种数据库的扩展会降低整体性能 | Neo4j本质是适用于基于模式的查询。其扩展是通过主从服务器之间进行复制来维护数据信息。可以支持CAPI Flash系统和IBM POWER8进行大规模扩展 |