本节书摘来自异步社区出版社《图数据库(第2版)》一书中的第1章,第1.1节,作者:【美】Ian Robinson(伊恩•罗宾逊) , Jim Webber(吉姆•韦伯) , Emil Eifrem(埃米尔•艾弗雷姆),更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.1 图是什么
形式上,图不过是顶点
和边
的集合,或者说更简单一点儿,图就是一些节点
和关联这些节点的联系
的集合。图将实体表现为节点,实体与其他实体连接的方式表现为联系。我们可以用这个通用而富有表现力的结构来为各种场景建模,从宇宙火箭的建造到道路系统,从食物的供应链及原产地追踪到人们的病历,甚至更多。
无处不在的图
在我们了解科学、政府和商业领域的数据集广泛多样性的过程中,图起到了极大的作用。现实世界完全不同于关系型数据库背后的基于表的模型,它是丰富的且相互之间充满关联:有些部分是统一而规则的,而其他部分是特殊的、不规则的。一旦理解了图,你就会发现图无处不在。比如,Gartner定义了商业世界的5个图——社交、意向、消费、兴趣和移动,并指出运用这些图的能力是一个“可持续的竞争优势”。
就拿Twitter来说,它的数据很容易表示为一张图。在图1-1中,我们可以看到由Twitter用户组成的一个小型社交网络。每个节点都被标为User,表明了他在这个网络中的角色。然后这些节点又用联系连接起来,帮助更好地建立语义上下文。也就是说,Billy关注了(FOLLOWS
)Harry,相应地,Harry也关注了Billy。Ruth和Harry也是互相关注的,不过,尽管Ruth关注了Billy,但Billy还没有关注她。
带标签的属性图模型
在讨论图1-2的过程中,我们也顺便提一下现在最流行的图模型形式—带标签的属性图(labeled property graph)(在附录A中,我们会更详细地讨论其他几种图数据模型)。带标签的属性图具有如下特征。
它包含节点和联系。
节点上有属性(键值对)。
节点可以有一个或多个标签。
联系有名字和方向,并总是有一个开始节点和一个结束节点。
联系也可以有属性。
对于大部分人来说,属性图模型是直观且容易理解的。不过简单归简单,它却可以描述绝大部分图的使用场景,并对我们的数据产生有价值的见解。
当然,实际的Twitter图比图1-1要大数亿倍,但它们的工作原理是一样的。在图1-2中,我们把Ruth发布的消息也包含到图里面来。
尽管图很简单,但图1-2还是展示出了图模型的表现力。我们可以很容易从图中看出Ruth发布了一连串的消息。通过标记为CURRENT
的联系可以找到她最新发布的消息,PREVIOUS
联系建立了Ruth的消息时间线。