![](https://img.haomeiwen.com/i28785037/e977f990a37929e3.png)
1. 图论
1.1. 起源于莱昂哈德·欧拉在1736年发表的一篇关于“哥尼斯堡七桥问题”的论文
1.2. 要解决这个问题,该图需要零个或两个具有奇数连接的节点
1.3. 任何满足这一条件的图都被称为欧拉图
1.4. 如果路径只访问每条边一次,则该图具有欧拉路径
1.5. 如果路径起点和终点相同,则该图具有欧拉回路,或称为欧拉环
2. 图
2.1. 顶点和边的集合
2.2. 示例
2.2.1. 路线图
2.2.2. 组织结构图
2.3. 当要思考的数据集含有大量高度相互关联的项时,也可以将该数据集描述为一个由相关事物组成的网络,这也是图的另一种说法
3. 顶点
3.1. 图中零条、一条或多条边经过的点
3.2. 节点或实体
4. 边
4.1. 图中两个顶点之间的关系
4.2. 关系、链接或连接
5. 图数据库
5.1. 一种数据存储引擎
5.1.1. 将包含顶点和边的基本图结构与持久化技术和遍历(查询)语言相结合
5.1.2. 以创建针对高度关联数据的存储和快速检索进行优化的数据库
5.2. 实体之间的关系与数据中的实体同等重要,甚至比后者更加重要
5.2.1. 用开发人员的话来说,边和顶点一样,都是“一等公民”
5.3. 可以用于更准确、更容易地表示和推理现实世界中的关系
5.4. 将数据存储为顶点(节点、组件)和边(关系)
5.5. Neo4j、Apache TinkerPop的Gremlin Server、JanusGraph和TigerGraph
5.6. 默认情况下,只有关系数据库和图数据库才具有将数据中的实体关联起来的功能
5.7. 优势
5.7.1. 递归查询
5.7.1.1. 组织中员工的汇报层次结构或者组织结构图
5.7.1.2. 会连续执行多次,反复调用自己,直到满足某种终止条件
5.7.1.3. 关系数据库不能很好地处理递归操作
5.7.1.4. 图数据库能够利用其表示丰富关系的能力,干净、高效地处理无边界递归查询
5.7.1.5. 嵌套查询和递归查询(如前面的层次结构示例所示)是图数据库擅长解答的疑问类型
5.7.2. 复合结果类型
5.7.2.1. 订单和产品报告示例
5.7.2.2. 能够返回包含不同数据类型的结果集
5.7.2.3. 关系数据库指定联合返回的结果集必须包含一致的列
5.7.2.3.1. 在稀疏数据的情况下,这不仅增加了返回的数据量,还降低了数据结构的描述性
5.7.3. 路径
5.7.3.1. 过河问题
5.7.3.2. 一组顶点和边的序列,描述遍历如何在图中移动
5.8. 请把注意力集中在图数据库如何优雅地处理关系数据库里的UNION操作上
5.9. 可以把图数据库设计得能够容忍不断发展变化的数据
5.10. 使用
5.10.1. 并不一定全部使用图数据库,也并不一定全部不使用图数据库
5.10.2. 不要害怕尝试用图数据库来解决问题的一部分
5.10.3. 使用图数据库的多模型方法(即混合使用关系数据库和图数据库)很常见
6. 比较
6.1. 键值数据库
6.1.1. 所有数据都由唯一标识符(键)和关联的数据对象(值)表示
6.1.2. Berkeley DB、RocksDB、Redis和Memcached
6.2. 列存储数据库
6.2.1. 面向列、宽列式数据库
6.2.2. 数据按列来存储
6.2.2.1. 可能每行有大量的列
6.2.2.2. 可能每行的列数不一样
6.2.3. Apache HBase、Azure Table Storage、Apache Cassandra和Google Cloud Bigtable
6.3. 文档数据库
6.3.1. 面向文档数据库
6.3.2. 将数据存储到带有唯一键的文档中
6.3.3. 该文档可以具有不同的模式,也可以包含嵌套数据
6.3.4. MongoDB和Apache CouchDB
6.4. 关系数据库
6.4.1. 将数据存储在包含具有严格模式行结构的表中,允许在表之间连接行来建立关系
6.4.2. 关系数据库中的查找表或链接表使用的不是查询时的指针结构,而是存储了有关关系属性的结构,类似于图数据库中的边结构
6.4.3. PostgreSQL、Oracle Database和Microsoft SQL Server
6.5. 数据复杂性
![](https://img.haomeiwen.com/i28785037/a35ee52481719b53.jpg)
网友评论