DDIA 讀書心得 #2

Simon Chu
Bucketing
Published in
May 23, 2021

Ch2:Data Models and Query Languages

第二章: 資料模型與查詢語言

資料模型分為以下三類:

一、 文檔模型

常見的文檔模型為 NoSQL ( Josn / Bson / XML ),主要適合儲存非結構化資料,因沒有強制的架構,所以比關係數據庫更好的伸縮性且架構靈活。
如果需要經常查詢整個文檔,那麼存儲局部性將帶來性能優勢,如果資料分散於多個表中,則需進行多次索引查找才能將其所需資料找出來,這可能耗費更多 I/O 時間查找。
文檔資料庫有時稱為無模式(schemaless),因讀取資料的程式通常有預設結構,但非由資料庫執行 (讀時模式(schema-on-read)與寫時模式(schema-on-write))。

讀時模式像是於程式語言中的動態(執行時)類型檢查,而寫時模式類似於靜態(編譯時)類型檢查。

二、 關係模型

為資料被組織成關係 (SQL 中稱作表),一個關係 (表) 是元組 (行) 的集合,每個關係是元組 (SQL中稱作行) 的無序集合。
其中又有兩種模式,SQL 是聲明式查詢語言,而 IMS 和 CODASYL 使用命令式指令來查詢資料庫。
聲明式查詢語言(如SQL或關係代數)只需指定所需資料的模式,例如: 必須符合哪些條件,資料如何轉換(排序/分組/集合)。而資料庫系統的查詢優化器將決定使用哪些索引和哪些連接方法,以及與何種順序執行查詢的各個部分。
聲明式查詢語言通常比命令式 API 更加簡潔和容易,且隱藏了資料庫引擎的實現細節,使得數據庫系統可以在無需對查詢做任何更改的情況下進行性能提升。

三、 圖形模型

一個圖由兩種對象組成:
頂點(vertices)也稱為節點(nodes) 或實體(entities)
邊(edges)也稱為關係(relationships)或弧(arcs)

在圖形數據庫中,頂點和邊不是有序的,如下圖:

圖數據結構示例(框代表頂點,箭頭代表邊)

文檔資料庫和圖資料庫有一個共同點,就是通常不會限制存儲的資料格式於一種,此方式可以適應不斷變化的需求。但是仍會假定資料具有一定的結構,而這是格式是明確的(寫入時強制)還是隱含的(讀取時處理)的問題。

Next:

--

--