作者:empty 出版社:empty |
Cypher查询语言
在Java应用中使用Neo4j
在Python应用中使用Neo4j
远程客户端访问库
多语言支持
Neo4j服务器
REST API
目录
前言
I. 简介
1. Neo4j的亮点
2. 图数据库概要
3. Neo4j图数据库
II. 教程
4. 在Java应用中使用Neo4j
5. Neo4j远程客户端库
6. 遍历查询框架
7. 数据模型范例
8. 多语言支持
9. 在Python应用中使用Neo4j
10. 扩展Neo4j服务器
III. 参考
11. 性能
12. 事务管理
13. 数据导入
14. 索引
15. Cypher查询语言
16. 图形算法
17. Neo4j服务器
18. REST API
19. 在Python中使用Neo4j嵌入模式
IV. 操作
20. 安装和部署
21. 配置和调优
22. 高可用性模式
23. 备份
24. 安全
25. 监视服务器
V. 工具集
26. 基于Web的Neo4j图数据库管理工具
27. Neo4j命令行
VI. 社区
28. 社区支持
29. 促进Neo4j发展
A. 联机帮助页
A.1. neo4j
A.2. neo4j-shell
A.3. neo4j-backup
A.4. neo4j-coordinator
A.5. neo4j-coordinator-shell
B. 常见问题
第 1 章 Neo4j的亮点
作为一款强健的,可伸缩的高性能数据库,Neo4j最适合完整的企业部署或者用于一个轻量级项目中完整服务器的一个子集存在。
它包括如下几个显著特点:
完整的ACID支持
高可用性
轻易扩展到上亿级别的节点和关系
通过遍历工具高速检索数据
适当的ACID操作是保证数据一致性的基础。Neo4j确保了在一个事务里面的多个操作同时发生,保证数据一致性。不管是采用嵌入模式还是多服务器集群部署,都支持这一特性。更多详细的介绍,请参考章节:transactions。
可靠的图型存储可以非常轻松的集成到任何一个应用中。随着我们开发的应用在运营中不断发展,性能问题肯定会逐步凸显出来,而Neo4j不管应用如何变化,他只会受到计算机硬件性能的影响,不受业务本身的约束。部署一个neo4j服务器便可以承载上亿级的节点和关系。当然,当单节点无法承载我们的数据需求时,我们可以进行分布式集群部署,详细的细节,请参考章节:ha。将图数据库用于存储关系复杂的数据是他最大的优势。通过Neo4j提供的遍历工具,可以非常高效的进行数据检索,每秒可以达到上亿级的检索量。一个检索操作类似于RDBMS里面的连接(_join_)操作。
第 2 章 图数据库概要
这个章节包括一个对图数据模型的介绍以及将它与其他我们常见的数据持久化模型的比较。
2.1. 什么是图数据库?
图数据库用图来存储数据,是最接近高性能的一种用于存储数据的数据结构方式之一。让我们跟随下面的图表,用他们来解释图数据库相关概念。我们将跟随图表中箭头方向来读懂图想表达的真正含义。
2.1.1. 一个图由无数的节点和关系组成
“一张图 – 数据记录在 → 节点 → 包括的 → 属性里面”
最简单的图是单节点的,一个记录,记录了一些属性。一个节点可以从单属性开始,成长为成千上亿,虽然会有一点点麻烦。从某种意义上讲,将数据用关系连接起来分布到不同节点上才是有意义的。
2.1.2. 关系将图各个部分组织起来
“节点 — 被组织 → 关系 — 可以有 → 属性”
关系可以将节点组织成任意的结构,允许一张图被组织成一个列表,一棵树,一张地图,或者一个复杂的实体 – 这个实体本身也是由复杂的,关系高度关联的结构组成。
2.1.3. 用 Traversal 进行数据库查询
“一个 Traversal — 导航 → 一张图; 他 — 标示 → 路径 — 包含 → 节点”
一次 Traversal, 你可以理解为是你通过一种算法,从一些开始节点开始查询与其关联的节点,比如你想找到 “我朋友喜欢但我不喜欢的那首音乐是什么呢?”,又或者 “如果断电了,拿下服务器的服务会首影响?”等等问题。
2.1.4. 为节点和关系建立索引
“一个索引 — 映射到 → 属性 — 属于 → 节点或者关系”
经常,你想通过某一给定的属性值找到节点或者关系。比起通过遍历我们的图来书,用索引将会更加高效。比如“找到用户名是tony的用户”。
2.1.5. Neo4j是一个图数据库
“一个图数据库 — 管理 → 一张图 和与图相关的 → 索引”
Neo4j是一个有商业支持的开源图数据库。他被设计来用于拿下数据不断高速成长的数据存储,用高效的图数据结构代替传统的表设计。用Neo4j工作,您的应用将得到图的所有优越表现,以及您期望的高可靠性。
2.2. 比较各种数据库模型
图数据库通过在一张图上存储节点和关系来持久化我们的数据结构。比起其他持久化数据模型如何呢?因为图是一种常规数据结构,让我们与其他的进行一下比较试试看。
2.2.1. 从图数据库转换成 RDBMS
将所有的数据用竖立的堆栈表示,并且保持他们直接的关系,你可以看到下面一张图。一个 RDBMS 被优化用于聚合数据,而Neo4j擅长于高度关联的数据。
图 2.1. RDBMS