資料量過大,或特殊執行需求,造成關聯式資料庫執行時速度較慢,應該要如何處理?
現今蒐集資料的形式與數量都比過去增長許多倍,因此可能會發現關聯式資料庫不符合使用需求。
關聯式資料庫雖然其嚴密的交易控制及多資料表關聯的性質,仍然有其使用的必要性。
但是在其他特殊使用情況下,應視情況使用不同性質的NoSQL資料庫。
常見NoSQL資料庫種類包含:文件資料庫、列式資料庫、鍵值資料庫、圖形資料庫
文件資料庫是一種形式的 NoSQL 資料庫,其特徵為以單一文件、非正規化的方式進行儲存。市場上有多種不同性質的文件資料庫,根據其設計目的和特性,各自的優缺點略有不同。
列式資料庫(Columnar Database) 以Column為單位儲存資料,因此若目標是僅需要抓取少數欄位進行分析,可以快速取得所需欄位的數值。
例如,對於銷售資料中的許多明細欄位,其中有兩個欄位:商品編號和銷售金額。
這些欄位被分開儲存,因此若想要取得特定商品的銷售金額,只需要掃描商品清單的欄位,找到目標商品的對應行索引(row idx)。
然後使用該行索引篩選銷售金額欄位的對應數值資料,即可取得該商品的銷售金額。
由於資料存放時,未使用的欄位是分開存放的,所以資料讀取速度比基於行的傳統資料庫更快。
鍵值資料庫 (Key Value Database) 將資料以Key做為資料索引來存放資料,無須定義每筆資料的內容格式。由於每一筆資料都各自獨立,因此可以在水平擴展下,快速的存放極大量的資料。
圖形資料庫(Graph Database)專門用於記錄大量資料之間的關聯性,其中的資料以節點(Node)表示,而節點之間的關係則以邊(Edge)表示。透過定義邊的起點、終點、方向和屬性,圖形資料庫能夠在擁有大量邊需儲存的情況下,以特定節點為基礎快速尋找相關的節點。為了提升查詢速度,通常會建立常用邊的索引。