使用图形数据库模型数据

本文章所处阶段为个人阅读图数据库的相关书籍资料
以下图片来自图书 Graph database 第二版 ,O'Reilly图书,Ian Robinson,Jim Webber & Emil Eifrem著

这里不再赘述图形数据库blahblah的优点,还有怎么安装部署。
在很多文章中,都提到图数据库的一项用途:处理社会关系。比如


image.png

上图应该算是图库最基础的应用,因为现实生活中的社会关系并不是对称的,而如果要用关系数据库或者常见的kv cloumn nosql来实现,则一个朋友关系就需要至少2个字段,friend of与 friend by。如果要查询“朋友的朋友”,或“朋友的朋友的朋友”,那么数据库的算法复杂度则会直线上升,直到任务由于查询时间过长而无法完成。
并且,假设一对或单向的朋友关系(意识到自己把别人当朋友,别人却把自己不当回事)结束,那么使用传统的存储方式,你还需要删除上文中类似friend by字段中的内容。

现在再上面应用的基础上,增加一点难度,或者说让例子能更贴近广大程序员的业务场景。


image.png

在这张图中,包含了3张表的内容(用户、订单与货物)
同时也表现出一种“大同”的景象,在图库中,数据就是一个一个node,彼此都是完全平等的。所以我们需要用一个字段来表示某个node的角色,比如在neo4j中系统指定了label这个属性,而dgraph并没有指定,需要我们自行设置,这里需要注意。
另外需要指出这个most_recent关系,它和其他关系相比是不固定的,如果有了新订单,可以马上将这个most recent关系指向新的node。
而且订单可能失效,可能被删除。当这个node被删除后,相关的关系都会自动被清除。这也是图数据库的一大灵活性,如果你是一个经验不足的程序员,在设计业务关系时是很容易遗漏这些应该被清除的数据,而图数据库则能自动帮你清理不要的“垃圾”

图书在这里顺便提到,现在的图库大多对数据节点node的字段有做一些类型处理,比如存储地理信息,而不是说一个node就是简单的kv键值对集合。在dgraph中,你还可以对node的某key执行不同的索引策略。比如某key的类型是string,你可以对其应用hash索引,也可以进行全量索引。
但抛开这些细枝末节的内容,我们需要把握一点,关系是图库中的一等公民,而且你应更抽象地理解这个“关系”,这里的关系不仅仅是node与node之间,node本身的各个自定义的kv也可以认为是“关系”。

Chapter 3 Data Modeling with Graphs
1,相比传统数据库,图库的modeling更“白板友好”
2,一个node可以有多个label
3,注意设置node与node之间的关系方向,没有变幻方向的关系,而应明确的指出是从node A 指向node B
4,不光node可以具有属性(properties,可以理解为就是node存储的kv set),关系也是可以有属性的,这样就给实际应用提供更多meta 数据
接下来图书介绍的是如何利用上面这些简单的原则来创建图库model,需要使用sql语言,图书中介绍的是cypher,而dgraph使用的是GraphQL

先放一些书中介绍cypher时的图片


image.png

image.png

image.png

cross-domain models


image.png

这张图片是关于莎士比亚文学相关的内容,通过 图中关系线的类型,可以看到这跨越了3个 domain。
所以这也是关系为什么重要的原因,关系可以帮助我们建立一个domian,也可以帮助我们将不同的domain之间的数据进行关联。

职业生涯


image.png

演员的表演记录


image.png

发送邮件并抄送


image.png

可以注意到,图中的关系,既可是一种动作,也可以是一个属性
而数据节点node,既可以是动作的主体,也可以是动作的客体

影评家写的影评


image.png

某电视节目的timeline tree(记录一系列事件)


image.png

剧集之间的关系


image.png

再次强调关系需要方向

不同的关系应对不同的需求


image.png

这个人通过ADDRESS关系拥有2个地址,这两个地址分别应用于两种不同的场景

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容