Neo4j全栈开发 - (EPUB全文下载)
文件大小:0.14 mb。
文件格式:epub 格式。
书籍内容:
Neo4j全栈开发
第1章 Neo4j概述
第2章 Neo4j API应用
第3章 Neo4j的安装及使用
第4章 Cypher查询语言简介
第5章 使用SDN建模和设计存储库接口
第6章 应用实例一:NBA季后赛预测
第7章 应用实例二:电影社区推荐引擎
第8章 Neo4j企业版安装及使用
第9章 Neo4j的数据安全及备份
结 束 语
附录A 参考资料
第1章 Neo4j概述
什么是Neo4j呢?Neo4j是一个NoSQL的图数据库管理系统。这里所说的图是指图论中的图这种数据结构,图是一个比线性表和树更高级的数据结构。在Neo4j中,图表示为一些节点和连接这些节点的关系的集合,其中,节点表示实体,关系表示实体之间的连接方式。
在Neo4j中存储的关联数据表现为树状或网络状的形形色色的图,它更加形象和直观地表现了现实世界中的应用场景。Neo4j不但能给人一种耳目一新的感觉,更重要的是它能始终保持高效的查询性能,不会因为数据的增长而降低了查询的反应能力。
Neo4j是一个NoSQL数据库,像其他NoSQL数据库一样具有高效的查询性能。同时,Neo4j还具有完全事务管理特性,完全支持ACID(Atomicity,Consistency,Isolation,Durability)事务管理。
实践证明,图数据库具有很强的表现力。像 Facebook中巨大的社交数据,Google搜索引擎的海量网页,或者现实世界中繁杂的交通网络,大至宏观世界的天文数据,小至微观世界的量子模型等,现实世界中不同领域的数据都可以使用图数据库来存储和访问。
Neo4j自2010年2月发布1.0.0版本,经过几年时间一些大中型企业的使用实践,可以充分证明Neo4j是一个成熟的数据库,同时也是一个安全可靠的数据库管理系统。
1.1 Neo4j数据的特点
在Neo4j数据库中存储的图数据,相比于大家比较熟悉的关系型数据库来说,它没有模式结构(如表或视图等逻辑结构的定义),而是用节点和关系的属性来表现实体的内容。使用属性,可以让Neo4j的图数据具有更加出色的表现能力,使其像关系型数据库那样包含非常丰富的内容。
Neo4j的图数据结构具有如下基本特征:
· 节点、关系和属性是构成图数据的三个基本要素。
· 节点和关系的属性是一个Key-Value的数据集合。
· 每个关系都有一个开始节点和一个结束节点相互连接。
· 大多数情况下关系可以不需要属性。
从以上特征中可以看出,Neo4j存储的数据是一个属性图。其中,节点表示一个实体,实体可以是人、事物或者任何一种定义,节点的属性就是实体的内容。而实体之间的关联表现为节点的关系,比如朋友关系、从属关系等。
从总体来看,Neo4j就是由无数相互联系的节点所组成的图形,它能很好并且形象地表现出现实世界中相互联系的事物。从这一方面来说,Neo4j存储的数据更能体现事物之间相互联系的本质,这种关联数据表现出了现实场景中事物本来的样子。
1.2 Neo4j数据的表现形式
由于Neo4j并不需要模式结构定义,因而非常适合用来存储非结构化或半结构化的数据,所以在数据表现形式上,与RDBMS或其他NoSQL数据库相比,都具有绝对的优势。
例如,在使用RDBMS设计数据库时,一般遵循这样一条规则:首先要做一些数据模型的分析,然后再进行实体-关系模型的设计,接下来才开始定义一些表结构。在这个过程中,必不可少地需要考虑一些范式规范,以便让存储的数据可以避免过多的冗余。最后可能为了一些性能要求,还会反过来使用一些反范式设计,再增加一点冗余字段。经过所有这些工作之后,才能确定数据结构的定义。而当数据结构确定之后,就不能再有大的变更了,否则整个系统结构都要跟着更改。
纵观使用RDBMS的整个设计和开发过程,有时你会觉得,在这种情况下的程序开发者似乎显得太蹩脚了。虽然明知这些工作很烦琐,但还是要求你必须得这样做。
使用Neo4j来设计数据库,就不需要有这么多繁琐的过程,我们只需借助于在做业务需求时画出的一些简单框图,就可以用来作为数据模型,很容易地将其转化为图数据结构。
例如,如图 1-1 所示的简单框图,它可以表示有用户和部门两个实体,并且它们之间存在一种隶属关系。至于在框图中是使用方框还是圆框则完全根据个人喜好,并没有什么区别。在使用Neo4j来进行数据库设计时,使用这个简单的框图就足够了。要用Neo4j来表现这一数据,将会存储部门和用户这两个节点,以及一个连接这两个节点的隶属关系。
图1-1 数据模型简单框图
如果我们按照这个数据模型在Neo4j中创建一些数据,实际的数据就可能表现为如图1-2所示的形式,它的样子跟原来的数据模型框图很相似。这些数据表明,现在有三个部门,分别是行政部、开发部和市场部,行政部有一个用户张三;开发部有两个用户,分别是李四和王一;市场部有三个用户,分别是小明、李红和小张。
图1-2 图数据实例
如果在Neo4j的Web控制台中查看这些数据,那么它的样子会显得更加漂亮和有趣,如图1-3所示。
图1-3 在Neo4j中的图数据实例
在这里,节点和关系的数量就体现了数据本身的数量,当我们再添加一定数量的数据之后,整个数据库就变得更加可观和有趣了。如图 1-4所示是一个应用实例——电影社区推荐引擎的一些测试数据。从这幅图中可以看到星罗棋布的节点由各种关系连接在一起,很像一个网络图形。
图1-4 电影社区推荐引擎的图数据
在早期一些介绍Neo4j的文章中,也曾有人把图数据库形象地描述为网络数据库。如果数据量很大,那么Neo4j图数据的样子确实很像一个巨型网络。
对于一个能够如此活灵活现地表现现实世界中的关联数据的数据库,不要认为在使用上会很难、很复杂,相反,对Neo4j的管理和开发是非常简单并且充满趣味的。因为使用Neo4j图数据库,你并不需要去了解那些复杂的图数据结构理论,以及那些让人头痛的公式和符号,你只要能看懂如图1-1所示的简单框图的意义就可以了。
1.3 Neo4j的优势
那么,如此引人入胜的 Neo ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Neo4j全栈开发 - (EPUB全文下载)