NoSQL的列式資料模型
為了有效地適應各種資料並滿足不斷增長的資料儲存需求,使用非常規資料庫型別的趨勢正在上升。關係資料庫多年來一直是標準。然而,隨著市場的演變和儲存成本的下降,非關係資料庫正變得越來越流行。
列式資料庫適合這種情況。這些NoSQL資料庫專為具有挑戰性、複雜的查詢而設計。與關係資料庫不同,列式資料庫按列而不是按行儲存資料。透過組合這些列來建立子組。
這種型別的資料庫具有可移動的鍵和列名。同一列族或列組的成員之間可以儲存的行數和資料型別各不相同。
當需要大型資料模型時,最常使用這些資料庫。它們對於資料倉庫非常有用,並且在需要高效能或處理苛刻的查詢時也很有用。
列式資料庫中發生了什麼
關係資料庫作為具有行和列的表工作,並具有預定的模式。寬列資料庫的模式類似但不同。它們也包括列和行。然而,它們具有動態模式,而不是固定在表中。每一列都單獨儲存。如果存在相關的或相似的列,則將它們組合成列族,然後將其與其他列族分開儲存。
每個列族的初始列(稱為行鍵)充當行識別符號。此外,每個後續列都有一個列鍵(名稱)。它允許透過識別行內的列來查詢列。列鍵之後是值和時間戳,提供資料條目或修改時間的記錄。
每行的關聯列數及其名稱可能不同。換句話說,資料庫的列並不都具有相同數量的行。與空著不同,在寬列資料庫中,對於給定列,這些行根本不存在。
行定向模型
序號 |
教師姓名 |
系別 |
ID |
---|---|---|---|
01 |
BK Sarkar |
CSE |
12 |
02 |
Supreeti Kaur |
MECH |
13 |
03 |
Sridher Patnaik |
ECE |
14 |
04 |
Bhaskar Karn |
HMCT |
15 |
列定向模型
序號 |
教師姓名 |
ID |
---|---|---|
01 |
BK Sarkar |
12 |
02 |
Supreeti Kaur |
13 |
03 |
Sridher Patnaik |
14 |
04 |
Bhaskar Karn |
15 |
序號 |
系別 |
ID |
---|---|---|
01 |
CSE |
12 |
02 |
MECH |
13 |
03 |
ECE |
14 |
04 |
HMCT |
15 |
熟悉關係資料庫的人知道,每一列都具有相同數量的行,儘管某些列有時具有空值或看起來為空。與空著不同,在寬列資料庫中,對於給定列,這些行根本不存在。
鍵空間中包含列族。類似於模式對關係資料庫的功能或意義,每個鍵空間都包含一個完整的NoSQL資料儲存。鍵空間表示一個無模式資料庫,具有資料儲存的設計及其自己的一組屬性,而NoSQL資料儲存沒有預定義的結構。
MariaDB是目前最流行的列式資料庫之一。它作為MySQL的一個分支而開發,目標是可靠且可擴充套件,能夠處理各種用途和大量查詢。Apache Cassandra是另一個列式資料庫示例,它可以跨多個伺服器處理大型資料負載,並使資料高度可用。此列表中的其他名稱包括專注於分析的Druid、Hypertable和Apache HBase。這些資料庫支援Outbrain、Spotify和Facebook等網站的特定方面。
列族型別
a)標準列族
這種列族型別具有鍵值對,其中行鍵作為鍵,值使用其名稱作為識別符號儲存在列中,就像表一樣。
b)超級列族
超級列表示一個列陣列。每個超級列都由一個名稱和一個值表示,該值對映到許多不同的列。透過將相關的超級列連線到單行下,形成超級列族。這類似於關係資料庫中多個獨立表的檢視。如果您可以在一個位置儲存單行的所有列和值——跨多個不同表的單個識別符號——那麼您將獲得超級列族。
列式資料庫的優勢
可擴充套件性。這是一個顯著的優勢,也是使用這種型別的資料庫來儲存海量資料的主要理由之一。它提供大規模並行處理,並且可以分佈在數百個不同的伺服器上,具體取決於資料庫的大小。這意味著它可以使用多個處理器同時執行相同的計算集。
壓縮。它們不僅無限可擴充套件,而且還可以有效地壓縮資料以減少儲存需求。
響應迅速 鑑於它們旨在保留海量資料並對分析有用,因此載入時間很少並且查詢執行速度很快。
列式資料庫的缺點
聯機事務處理。這些資料庫對於聯機分析處理比聯機事務處理有效得多。這意味著雖然它們旨在檢查事務,但它們在更新事務方面並不是特別有效。這就是為什麼通常看到它們包含業務分析所需的資料,而資料儲存在後端的關聯資料庫中。
增量資料載入如前所述,列式資料庫經常用於分析。由於資料緊密地儲存在列中,因此即使處理複雜的查詢,也很容易獲取它們。即使增量資料載入是可行的,列式資料庫也不是處理它們的最佳方法。首先必須透過掃描列來找到正確的行,然後必須再次掃描這些列以找到需要覆蓋的更改後的資料。
按行查詢。這完全取決於為正確的目標使用正確的資料庫型別,就像上面列出的可能的缺點一樣。透過使用特定於行的查詢,您會新增一個額外步驟來識別行,方法是掃描列,然後查詢要獲取的資料。訪問單個列中的捆綁記錄比獲取分散在多個列中的單個記錄更快。在列式資料庫中,它專門設計用於幫助您快速獲取所需的資訊,頻繁的特定於行的查詢可能會導致效能問題,從而降低資料庫的速度,從而削弱其用途。
結論
關係資料庫多年來一直是標準。列式資料庫適合這種情況。這種型別的資料庫具有可移動的鍵和列名。它們對於資料倉庫非常有用,並且在需要高效能或處理苛刻的查詢時也很有用。NoSQL 資料庫並非旨在用作廣泛形式的儲存,因為它們通常是為了滿足特定需求而建立的。