SQL 2017 & Azure SQL 新功能:图形数据库

沈云,资深工程师,微软解决方案专家

图形数据库是什么呢?如果从字面理解是进行图形处理的数据库,那么你就错了。

我们先来解释什么是图形数据库。

图形数据库是 NoSQL 数据库的一种类型,它应用图形理论存储实体之间的关系信息。最常见的例子,就是社会网络中人与人之间的关系。关系型数据库用于存储关系型数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷。

举个例子:



如图表示人、城市、餐馆三个实体,直接的关系有:人和人谁和谁是朋友的关系,人居住在某个城市的关系,城市和餐馆的关系,人和餐馆的关系。

按照传统做法,可以创建 person,Restaurant ,City 表,创建各种关系表。人与人,任何城市,任何餐馆,城市和餐馆的关系表。

假设我们要查询某人的朋友喜欢的餐馆、居住在同一城市的人喜欢的同一餐馆.....是不是感觉有点晕。感觉即需要关联 n 多张表,还要自我关联。

为了解决这样的问题,业界发明了图形数据库。而 SQL 2017 和 Azure SQL 现在全面支持图形数据库。怎么来实现呢?

见下图:



新的数据表节点(node)表和 edge(边缘表) ,节点表表示数据实体,比如人,城市,餐馆。

边缘表表示实体之间的关系。

第一张图所表示的关系,我们可以用下面代码创建节点表,注意关键词

NODE:

CREATE TABLE Person (ID INTEGER PRIMARY KEY, name VARCHAR(100)) AS NODE;

CREATE TABLE Restaurant (ID INTEGER NOT NULL, name VARCHAR(100), city VARCHAR(100)) AS NODE;

CREATE TABLE City (ID INTEGER PRIMARY KEY, name VARCHAR(100), stateName VARCHAR(100)) AS NODE;`

创建边缘表:

CREATE TABLE likes (rating INTEGER) AS EDGE;

CREATE TABLE friendOf AS EDGE;CREATE TABLE livesIn AS EDGE;

CREATE TABLE locatedIn AS EDGE;

创建好后,可看到数据库表属性下,会有一个图形表出现,node 表和 edge 表表示图标有所不同:



查询数据如下

select * from city

select * from person

select *from livesIn

创建好后,可看到数据库表属性下,会有一个图形表出现,node 表和 edge 表表示图标有所不同:



如图可以看到:node 表自动生成了 node_id 这列,edge 自动生成了 edge_id,from_id,to_id,后面都加上了唯一标识。这列的属性是 nvarchar(1000),事实上每张表系统会生成一个 graph_id_,和其他的系统列,这些列都无法访问,由系统进行管理。见下图:



边缘表表示了实体之间的关系,from to 的关系,如果双向关系,就需要建立两条。下面进行查询是这样的 :

--查找 john 的朋友喜欢的餐馆

SELECT Restaurant.name

FROM Person person1, Person person2, likes, friendOf,

Restaurant

WHERE MATCH(person1-(friendOf)->person2-(likes)->Restaurant)

AND person1.name='John';

-- 查找在同一城市里面喜欢同一餐馆的人

SELECT Person.name FROM Person, likes, Restaurant, livesIn,

City, locatedIn WHERE MATCH (Person-(likes)->Restaurant-

(locatedIn)->City  AND Person-(livesIn)->City);

---注意:使用关键字 Match 进行查询。

通过上面的简单的语句可以实现在关系型模型下,需要非常复杂的关联才能得到的结果。并且 SQL 2017 的图形数据库与数据库引擎完全融合,也就是可以使用比如备份,SSIS ,POWERBI 等各种功能。

在应用上可以分析如:社交关系、犯罪追踪、医疗领域等等。

更多信息请参考:https://docs.microsoft.com/zh-cn/sql/relational-databases/graphs/sql-graph-overview

立即访问http://market.azure.cn

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

推荐阅读更多精彩内容