- 内容提要
- 序
- 前言
- 第一部分 背景知识
- 第 1 章 Spring Data 项目
- 第 2 章 Repository:便利的数据访问层
- 第 3 章 使用 Querydsl 实现类型安全的查询
- 第二部分 关系型数据库
- 第 4 章 JPA Repository
- 第 5 章 借助 Querydsl SQL 实现类型安全的 JDBC 编程
- 第三部分 NoSQL
- 第 6 章 MongoDB: 文档存储
- 第 7 章 Neo4j:图数据库
- 第 8 章 Redis:键/值存储
- 第四部分 快速应用开发
- 第 9 章 使用 Spring Roo 实现持久层
- 第 10 章 REST Repository 导出器
- 第五部分 大数据
- 第 11 章 Spring for Apache Hadoop
- 第 12 章 使用 Hadoop 分析数据
- 第 13 章 使用 Spring Batch 和 Spring Integration 创建大数据管道
- 第六部分 数据网格
- 第 14 章 分布式数据网格:GemFire
- 关于封面
7.1 图数据库
本章会介绍一种很有意思的 NoSQL 存储:图数据库( http://en.wikipedia.org/ wiki/Graph_database )。很明显,图数据库是一种后关系型(post-relational)的数据存储,因为它们进一步演进了数据库的概念并保持了一些原有的特性。它们提供了一种有效的方式来存储半结构化(semistructured)但高度连通的数据,并且允许我们以很快的速度查询和遍历链接数据(Linked Data)。
图数据库由节点(node)组成,节点通过带有标向和标记的关系(即边)进行连接,如图 7-1 所示。在属性图中,节点和关系都可以存有任意的键值(key/value)对。图由这些元素形成了复杂的网络,它鼓励我们按照真实世界原始数据结构进行领域建模。关系型的数据库依赖于固定的模式(schema),而图数据是无模式的(schema-free)并且数据结构上没有限制。关系可以很容易添加和修改,因为它们不是模式的一部分,而是实际数据的一部分。
图 7-1 图数据库概览
可以将图数据库的高性能归功于将关联实体(join)的成本转移到了插入阶段 - 这是通过将关系作为数据结构的一等公民来实现的 - 从而允许我们以相同的时间从一个实体(节点)遍历到另一个节点。所以,不管数据集的规模如何,在图中进行指定遍历所消耗的时间是由遍历时跳跃的次数决定,而不是图中一共有多少节点和关系决定。在其他的数据库模型中,查找两个(或更多)实体之间关联的成本花费在每个查询之上。
借助于这一点,一个图就可以存储很多不同的领域实体,并在所有的实体之间建立有意思的关联。二次存取(secondary access)和索引结构也可以集成到图中,从而为一些节点或子图提供特殊的分组和访问路径。
鉴于图形数据库的特性,它们不依赖于聚集边界来管理原子性的操作,而是构建在 ACID(原子性、一致性、隔离性、持久性)的数据存储之上,从而具备了行之有效的事务保证。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论