- 圖數據實戰:用圖思維和圖技術解決復雜問題
- (美)丹妮絲·柯斯勒·戈斯內爾等
- 1472字
- 2024-05-23 17:09:33
2.2 關系和圖:差異在哪里
到這里,我們已經提到了兩種迥異的技術:關系型和圖。當談及關系型系統,我們指的是數據的組織方式更關注如何存儲和檢索真實世界的實體,例如人物、地點和事物。而談及圖系統的時候,我們指的是那些關注如何存儲和檢索關系的系統。這些關系代表了真實世界實體間的關系:人們認識他人,人們生活在什么地方,人們擁有事物,等等。
類似地,兩個系統都可以呈現實體和關系,只是構建和優化的方向不同。
為你的應用選擇關系型系統還是圖系統不是一個非黑即白的選擇;每個選項都有利有弊。選擇關系型數據庫還是圖數據庫通常都會觸發關于存儲需求、可擴展性、查詢效率、易用性和可維護性的討論。這個對話中的任何一個話題都值得討論,我們旨在闡明那些更主觀的標準:易用性和可維護性。
盡管關系型(relational)和關系(relationship)這兩個詞非常相似,但我們明確地使用它們來指代兩種不同類型的技術。關系型(relational)指的是一種數據庫,例如Oracle、MySQL、PostgreSQL或IBM Db2。這些系統是建立在特定的數學領域之上的,用于組織和推理數據,即關系代數。與其相反,我們只在圖數據和圖技術的上下文中使用關系(relationship)一詞。這些系統建立在另一種數學理論之上,即圖論。
在關系型技術和圖技術之間做選擇是很困難的,因為沒辦法在它們之間做功能對比。它們的差異可以追溯到奠定它們核心的數學理論的不同:關系型系統的關系代數,以及圖系統的圖論。也就是說,每種技術的適用性在很大程度上取決于這些理論及其相關思路對你的問題的適用性。
出于兩個原因,我們會在接下來的章節里深入探討關系型技術和圖技術之間的差異。首先,大多數人對關系型思維已經很熟悉了,我們可以對比關系型思維介紹圖思維。其次,我們希望能夠回應那個無法回避的問題:“為什么不用關系型數據庫?”在理解圖技術的上下文中,探究這兩個原因都很重要,因為關系型系統已經非常成熟并廣泛應用了。
縱觀全書,我們會使用數據來闡釋概念、例子和新的術語。讓我們從本章將要用的數據開始,來說明關系型概念和圖概念之間的區別。你會在第3~5章中也看到這些數據。
可運行用例的數據
我們將會用表2-1中的數據來構建關系型數據模型和圖數據模型。
表2-1:用以闡明概念、例子和術語的樣本數據

對于第一個用例,數據描述了金融服務行業的幾個客戶的資產。這些客戶可以共享賬戶和貸款,但是一張信用卡只能被一個客戶使用。
讓我們看幾行數據。表2-1展示了5位客戶的數據。在本章和第3~5章里,我們會建模這5位客戶的數據,用以引入新的概念。
表2-1展示了五位不同客戶的五條樣本數據。其中一些客戶共享了賬戶和貸款,用來展示在金融服務系統里常見的不同類型的客戶。
例如,customer_0和customer_1,Michael和Maria代表了典型的親子關系;Michael是家長,Maria是孩子。而customer_2 Rashika的數據,則代表了金融服務中的獨立用戶。在大型系統中,這類用戶量最大,像Rashika這種用戶的數據不和其他任何客戶共享。最后,customer_3和customer_4(Jamie和Aaliyah)共享一個賬戶和貸款。這類數據通常代表這些用戶是配偶關系,合并了他們的金融賬戶。
如果這就是你公司的樣本數據,你會怎樣和同事討論這些數據的建模問題呢?在這個場景里,你可能在共享一個白板,或者其他繪圖工具,并嘗試繪制數據中的實體、屬性和關系。無論用的是關系型系統還是圖系統,你都可能會討論出圖2-1中的概念模型。

圖2-1:觀察表2-1中的數據之間的關系得到的概念性描述
我們可以從圖2-1中找到四個主要實體:客戶(customer)、賬戶(account)、貸款(loan)和信用卡(credit card)。這些實體都和客戶有關系。客戶可以有多個賬戶,這些賬戶也可以有不止一個客戶??蛻粢部梢杂卸鄠€貸款,而貸款也可以有多個客戶。最后,客戶可以有多張信用卡,但是每張信用卡只能綁定一個客戶。