Graph Thinking

Kopei article

When to start use graph?

当我们需要使用图数据库时, 需要考虑三个问题:

  • 图数据库是否比关系型数据库更优?
  • 如何把我的数据看做图?
  • 如何给图的原型结构建模?

关系vs图形

从存储和数据检索的角度看, 关系型数据库将数据以三范式的形式存储, 将真实世界的实体与表映射; 而图数据库关注存储和检索的关系, 这些关系代表了真实世界实体的连接, 比如: 一个人认识另一个人, 人住在什么地方, 人拥有东西等等. 其实两个系统都可以表示实体和关系, 但是关注点和优化点不同. 他们底层的数学算法也不同, 一个是关系型代数, 一个是图论.

图论的思想?

图是由节点(Vertex)和边(Edge)组成的,Vertex代表数据实体,Edge代表实体之间的关系, edge是有方向的(单项与双向)。如果把节点当作名词,边当作动词,那么它们分别都有形容词和副词来修饰它们,即属性。

  • Adjacency: 如果两个节点通过边相连,那么它们是临近的。
  • Neighborhood: 对于节点v, 所有与之相连的节点形成节点v的邻居, 称N(v).
  • Distance: 从一个节点走到另一个节点所需的边数称为距离。
  • Degree: 程度描述了一个节点链接的边数。图论中,只有程度为1的节点成为叶。如果有很高的程度(>100000edges)称为超级节点。
  • Multiplicity: 描述节点间有不同属性的edges.

为什么不直接用关系型数据库?

直接回答:当需要突出数据的关系时使用图数据库, 尤其数据的结构复杂时。

图数据建模和关系型数据建模很相似,主要的区别在于考虑实体之间的关系。图技术突出了关系优先的数据结构。在物理存储方面,图数据库直接存储概念数据模型(Conceptual data model), 不像关系型数据库做三范式处理。具体处理上,图数据库把节点的边直接组成数据结构存储在一起,这样可以方便地寻址某个节点的关系。
当新增一个需求时, 关系型数据库往往需要改变数据结构, 增加表, 新增sql语句. 而图数据库只需要增大原型(schema)和插入数据.

  • Post title:Graph Thinking
  • Post author:Kopei
  • Create time:2021-03-08 00:00:00
  • Post link:https://kopei.github.io/2021/03/07/database-neo4j-2021-03-08-graph-thinking/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments