天天看點

資料庫有哪些分類?應該怎樣選擇?終于有人講明白了鍵值資料庫02 文檔資料庫03 關系型資料庫04 圖資料庫05 列族資料庫06 時序資料庫07 搜尋引擎

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

鍵值資料庫

通常,隻需要使用主鍵甚至是部分鍵來檢索應用程式的資料。鍵/值資料庫可以被看作一個非常大的哈希表,該表在唯一的鍵下存儲了一些值。存儲的值可以通過鍵或者部分鍵高效地檢索到。因為該值對于資料庫是不透明的,是以如果需要按值來查找一條記錄的話就需要逐條掃描。

鍵/值資料庫中的鍵可以包含多個元素,甚至可以排序以提高查詢效率。一些鍵/值資料庫允許使用鍵的字首進行查找,進而可以使用複合鍵。如果資料可以通過一些簡單的鍵嵌套查詢,那鍵/值資料庫會是個不錯的選擇。

例如,我們将客戶xyz的訂單存儲在鍵/值資料庫中,可以使用客戶ID作為鍵的字首,結合訂單号組成鍵“xyz-1001”來存儲訂單。可以使用整個鍵來檢索特定的訂單,也可以使用“xyz”字首檢索客戶xyz的所有訂單。

資料庫有哪些分類?應該怎樣選擇?終于有人講明白了鍵值資料庫02 文檔資料庫03 關系型資料庫04 圖資料庫05 列族資料庫06 時序資料庫07 搜尋引擎

說明:鍵/值資料庫通常是比較便宜的,且具有高度可伸縮性的資料存儲。鍵/值資料庫能夠根據鍵對資料進行分區甚至重分區。使用鍵/值資料庫時,選擇鍵很重要,因為這将對資料存儲的規模和讀寫性能産生重大影響。

02 文檔資料庫

文檔資料庫和鍵/值資料庫類似,因為它也通過主鍵存儲文檔(值)。與鍵/值資料庫不同的是,文檔資料庫中的文檔需要符合某些定義好的結構,而鍵/值資料庫幾乎可以存儲任意值。這使得文檔資料庫可以啟用諸如維護二級索引的功能以及基于文檔查詢資料的功能。

通常存儲在文檔資料庫中的值是哈希圖(JSON對象)和清單(JSON數組)的組合。JSON格式在文檔資料庫中很常用,盡管許多資料庫引擎使用了更高效的内部存儲格式,例如MongoDB的BSON。

建議:當你從關系型資料庫轉換到基于文檔的資料庫時,你需要思考如何去組織資料。許多人需要時間來過渡到這種不同的資料模組化方法。

資料庫有哪些分類?應該怎樣選擇?終于有人講明白了鍵值資料庫02 文檔資料庫03 關系型資料庫04 圖資料庫05 列族資料庫06 時序資料庫07 搜尋引擎

傳統關系型資料庫(如PostgreSQL)存儲的資料大部分也可以存儲在文檔資料庫中。它們正變得越來越流行,與關系資料庫不同,這些存儲的文檔可以很好地映射成程式設計語言中的對象,并且不需要對象關系映射(ORM)工具。

這些資料庫通常不強制要求定義資料模式(schema),這對于在軟體持續傳遞(CD)過程中需要更新資料模式的情形具有一些優勢。

說明:不強制要求定義模式的資料庫通常被稱為“讀時模式(schema on read)”,因為盡管資料庫未強制要求模式,但是在使用資料的應用中存在固有的模式,并且需要知道如何轉化讀到的資料。

03 關系型資料庫

關系型資料庫将資料組織到稱為表的二維結構中,該結構由列和行組成。一張表中的資料可以與另一表中的資料有關聯,資料庫系統可以保證這種關聯。關系型資料庫通常強制執行嚴格的模式,也稱為“寫時模式(schema on write)”,在該模式中,向資料庫寫入的資料必須符合資料庫中定義的結構。

關系型資料庫已經存在很長時間了,許多開發人員都有使用它們的經驗。迄今為止,最流行和最常用的資料庫仍然是關系型資料庫。這些資料庫非常成熟,可以處理包含大量關系的資料,并且擁有大量知道如何使用它們的工具和應用程式生态系統。

在文檔資料庫中可能很難使用多對多關系,但是在關系型資料庫中這非常簡單。如果應用的資料具有很多關系,尤其是有事務處理的需求,那麼這些資料庫可能很合适。

04 圖資料庫

圖資料庫存儲兩種類型的資訊:邊和節點。邊定義了節點之間的關系,你可以把節點看作實體。節點和邊都具有屬性,其中存儲了該節點或邊的一些資訊。邊通常會定義關系的方向或性質。

圖資料庫可以很好地分析實體之間的關系。圖資料也可以存儲在任何其他資料庫中,但是當圖的周遊變得越來越複雜時,其他類型的存儲可能很難滿足圖資料對性能和伸縮性的需求。

05 列族資料庫

列族資料庫(column family database)将資料組織成行和列,乍一看可能與關系型資料庫非常相似。你可以将列族資料庫視為行和列組成的表格資料,但是列被分了組,稱為列族。

每個列族包含了一組邏輯上相關的列,通常被作為一個單元進行檢索或操作。能被單獨通路的資料可以存儲在單獨的列族中。在一個列族中,可以動态添加新列,并且行可以是稀疏的(也就是說,行不需要在每個列下面都有值)。

06 時序資料庫

時序資料庫是針對時間進行優化的資料庫,可根據時間來存儲值。這些資料庫通常需要支援大量的寫操作。它們通常被用于從大量資料源實時收集大量資料。這些資料很少更新,删除操作通常是批量進行的。寫入時序資料庫的記錄通常很小,但記錄的量很多。

時序資料庫非常适合存儲遙測資料。流行的用途包括物聯網(IoT)傳感器或應用程式/系統的計數器。時序資料庫通常會提供資料保持、下采樣以及根據資料使用模式的配置将資料儲存到其他存儲中的功能。

07 搜尋引擎

搜尋引擎資料庫通常用于搜尋儲存在其他存儲和服務中的資料。搜尋引擎資料庫可以對大量的資料建立索引,并提供近實時的索引查詢。

除了搜尋像網頁這樣的非結構化的資料,許多應用程式還使用它為其他資料庫中的資料提供結構化和即時搜尋功能。有一些資料庫也能提供全文索引功能,但是搜尋資料庫還具備通過詞幹和泛化将單詞縮減為詞根的功能。

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/live

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-06-11

本文作者:華章科技

本文來自:“

51CTO

”,了解相關資訊可以關注“