技術(shù)分享,如何用Ultipa Graph構(gòu)建網(wǎng)站后臺數(shù)據(jù)庫?
時間:2023-08-01 07:27:01 | 來源:網(wǎng)站運(yùn)營
時間:2023-08-01 07:27:01 來源:網(wǎng)站運(yùn)營
技術(shù)分享,如何用Ultipa Graph構(gòu)建網(wǎng)站后臺數(shù)據(jù)庫?:在數(shù)據(jù)庫設(shè)計開發(fā)之初,開發(fā)人員都會面臨一個重要的選擇:用哪個數(shù)據(jù)庫呢?用什么數(shù)據(jù)庫技術(shù)來實(shí)現(xiàn)呢?在本文中,我們將以構(gòu)建一套文檔系統(tǒng)為例,具體闡述用Ultipa Graph如何將開發(fā)需求轉(zhuǎn)化成圖數(shù)據(jù)庫的存儲結(jié)構(gòu),以及圖數(shù)據(jù)庫區(qū)別于傳統(tǒng)關(guān)系型數(shù)據(jù)庫有哪些優(yōu)勢。
一 快捷| 5步完成設(shè)計創(chuàng)建
1.了解功能需求。在設(shè)計數(shù)據(jù)庫之前,設(shè)計人員必須要先了解系統(tǒng)的功能需求。這里可以通過閱讀產(chǎn)品需求規(guī)格說明書,與項(xiàng)目相關(guān)人員(比如項(xiàng)目經(jīng)理、客戶等)進(jìn)行充分溝通。
2.定義實(shí)體及關(guān)系。了解系統(tǒng)功能需求之后,設(shè)計人員通過分析系統(tǒng)功能定義出系統(tǒng)有哪些實(shí)體,以及實(shí)體之間的關(guān)系。
比如,用戶閱讀響應(yīng)權(quán)限的不同語言的書目及文章,可包含五種實(shí)體:
1.用戶
2.權(quán)限
3.書目
4.文章
5.語言
五種關(guān)系:
1.用戶-權(quán)限
2.書目-權(quán)限
3.文章-權(quán)限
4.書目-語言
5.書目-文章
對應(yīng)五種
屬性定義:
用戶-權(quán)限 | 用戶id,權(quán)限id,授權(quán)時間,過期時間 |
書目-權(quán)限 | 書目id,權(quán)限id |
文章-權(quán)限 | 文章id,權(quán)限id |
書目-語言 | 書目id,語言id |
書目-文章 | 書目id,文章id |
3.繪制點(diǎn)邊圖示例。定義好
實(shí)體和
關(guān)系之后,接下來我們應(yīng)該根據(jù)實(shí)體以及實(shí)體之間的關(guān)系繪制出
點(diǎn)、
邊圖??磮D如下:
圖1:點(diǎn)邊圖4.總結(jié)邊的創(chuàng)建規(guī)則。繪制好點(diǎn)邊圖以后,總結(jié)一下圖中
邊的創(chuàng)建規(guī)則:
1.用戶-權(quán)限:每個用戶可以有多個權(quán)限,每個權(quán)限可以對應(yīng)多個用戶;
2.書目-權(quán)限:每本書可以有多個權(quán)限,每個權(quán)限可以對應(yīng)多本書;
3.文章-權(quán)限:每篇文章可以有多個權(quán)限,每個權(quán)限可以對應(yīng)多篇文章;
4.書目-語言:每本書只能有一種語言,每種語言可以對應(yīng)多本書;
5.書目-文章:每本書可以有多篇文章,每篇文章只能對應(yīng)一本書。
5.創(chuàng)建數(shù)據(jù)結(jié)構(gòu)。使用UQL語言進(jìn)行圖集、schema、屬性的創(chuàng)建:
至此,數(shù)據(jù)庫創(chuàng)建任務(wù)已經(jīng)完成!值得一提的是,程序員可以明顯地看到,在過去幾十年中,很多程序員已經(jīng)被訓(xùn)練的一定要先了解數(shù)據(jù)模型,不論它是關(guān)系型表結(jié)構(gòu)還是實(shí)體E-R模式圖,這也讓開發(fā)流程變得更加復(fù)雜和緩慢,請問,你還記得上一次參與解決方案的開發(fā)周期有多長?一個季度?半年?一年還是更久?在一個有8000張表的Oracle數(shù)據(jù)庫中,沒有任何一個DBA可以完全掌握所有表之間的關(guān)聯(lián)關(guān)系,這個時候體驗(yàn)一下用圖數(shù)據(jù)庫來操作一把吧。
二 精簡| 圖數(shù)據(jù)與表數(shù)據(jù)相比的優(yōu)勢
一是,點(diǎn)、邊分離,思路更清晰。傳統(tǒng)數(shù)據(jù)庫的設(shè)計過程往往是把重心放在各種“表”的構(gòu)建上,如將上面列舉的應(yīng)用場景用關(guān)系型數(shù)據(jù)庫的表結(jié)構(gòu)來表達(dá),見下圖:
圖2:傳統(tǒng)的關(guān)系表、關(guān)系型數(shù)據(jù)庫如圖2所示,可清晰地看到表之間的區(qū)別:其中,五張彩色表對應(yīng)的是圖數(shù)據(jù)中的五種實(shí)體(彩色表可看作實(shí)體表),五張灰色表對應(yīng)的則是圖數(shù)據(jù)中的五種關(guān)系(灰色表即為關(guān)系表)。圖數(shù)據(jù)、表數(shù)據(jù)雖然都存儲了同樣的信息,但是直觀上來講,圖數(shù)據(jù)將“關(guān)系表”抽離出來,對其賦予了“邊”的概念并進(jìn)行存儲,能把開發(fā)者從茫茫表海中解救出來,將更多的注意力放在實(shí)體上,有助于在建庫之后對數(shù)據(jù)進(jìn)行靈活多樣的查詢與分析。
二是,通過面向點(diǎn)、邊的路徑查詢來替代傳統(tǒng)SQL類數(shù)據(jù)庫的多表關(guān)聯(lián)查詢,原因是圖數(shù)據(jù)對“邊”概念進(jìn)行提煉的初衷是要從根本上改變數(shù)據(jù)的關(guān)聯(lián)方式和存儲方式,讓邊在查詢時所發(fā)揮的作用大大超過聯(lián)表查詢中的“關(guān)系表”,即將針對傳統(tǒng)關(guān)系表進(jìn)行的聯(lián)表查詢,變成針對點(diǎn)、邊圖進(jìn)行的路徑查詢,這是圖數(shù)據(jù)查詢比表數(shù)據(jù)查詢速度更快的根本原因。
由于邊在圖中所起的作用是連接兩個點(diǎn),圖數(shù)據(jù)庫需要對邊的起點(diǎn)和終點(diǎn)進(jìn)行特殊管理。在為圖中的邊創(chuàng)建屬性時,以前面例子中的“用戶-權(quán)限”邊為例,開發(fā)者并不需要創(chuàng)建“用戶id”和“權(quán)限id”這兩個屬性,原因是“用戶id”和“權(quán)限id”分別是“用戶-權(quán)限”邊的起點(diǎn)和終點(diǎn),而起點(diǎn)和終點(diǎn)在圖數(shù)據(jù)中被視為邊的固有屬性,是由系統(tǒng)自動創(chuàng)建并進(jìn)行管理的。
雖然關(guān)系型數(shù)據(jù)庫在業(yè)界仍占主流,但由于其天生的限制條件亟待被優(yōu)化或技術(shù)替代:
1.擴(kuò)展困難:由于存在類似Join這樣多表查詢機(jī)制,使得數(shù)據(jù)庫在擴(kuò)展方面很艱難;
2.讀寫慢:這種情況主要發(fā)生在數(shù)據(jù)量達(dá)到一定規(guī)模時,由于關(guān)系型數(shù)據(jù)庫的系統(tǒng)邏輯非常復(fù)雜,使得其非常容易發(fā)生死鎖等的并發(fā)問題,所以導(dǎo)致其讀寫速度下滑非常嚴(yán)重;
3.成本高:企業(yè)級數(shù)據(jù)庫的License價格很驚人,并且隨著系統(tǒng)的規(guī)模,而不斷上升;
4.有限的查詢效率:現(xiàn)有關(guān)系型解決方案還無法支撐海量數(shù)據(jù)存儲的高效查詢。
圖3:圖數(shù)據(jù)庫=100%的真實(shí)世界圖數(shù)據(jù)庫的所有特點(diǎn)都是相對 于傳統(tǒng)數(shù)據(jù)庫而言的,尤其是關(guān)系型數(shù)據(jù)庫。簡單而言,圖數(shù)據(jù)庫有三大特點(diǎn):
1.高維
2.高性能
3.高效率
我們正處于一個大數(shù)據(jù)的時代,互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)絡(luò)的快速發(fā)展帶來了數(shù)據(jù)產(chǎn)生速率的極大增長,相比于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫中的關(guān)系表(見圖2),圖數(shù)據(jù)庫(圖3)就是被人們創(chuàng)造出來解決這種不斷增長的數(shù)據(jù)挑戰(zhàn)的利器——采用可描述復(fù)雜關(guān)聯(lián)關(guān)系的高維拓?fù)浣Y(jié)構(gòu),通過可視化的方式,即能創(chuàng)建一套達(dá)到事半功倍支持海量數(shù)據(jù)和流量、管理部署簡單、提升用戶滿意度和優(yōu)化運(yùn)營成本的網(wǎng)站后臺數(shù)據(jù)庫了。
關(guān)鍵詞:后臺,數(shù)據(jù),技術(shù)