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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容