简介
在数据结构中, 图是顶点(Vertex)与边(Edge)的集合. 顶点与边可以有各自的属性.
在互联网的个性化推荐、知识图谱、社交网络等场景下, 用图来存储数据是直观而高效的.
图的规模可以很大, 百亿个节点, 千亿个关系.
为了存储与查询这些关系, 图数据库(Graph Database)就诞生了.
Graph Database at wiki-pedia
举个例子看一下. 图1-1是电商网站的场景.
图1-1 好友关系&购买图
说明:
Ui:user i
U
i
:
u
s
e
r
i
Ii:item i
I
i
:
i
t
e
m
i
矩形是节点的属性
弧代表了不同的关系, 如人与人之间, 人与商品之间.
查询语法
- gremlin
见参考[5].
业界数据库
- neo4j
见参考[1] - OrientDB
见参考[3] - titanDB
他们的对比见参考[4], [6].
阿里巴巴 iGraph
阿里巴巴搜索BU出品的, 集团自用的在线图存储系统,可以通过全量、增量等形式将数据导入在线系统,提供低rt的延时.
- 建图
每种结点一张表, 每种关系一张表. - 查询
不支持 gremlin 语法. 一种类似于多个sql拼接那样的不优雅语法.