自2017年中開始微軟整合MongoDB、原有的DocumentDB、導入Gremlin(GraphDB)與Azure Tables,提出全新的Azure Cosmos雲端服務資料庫,該Azure Cosmos雲端服務資料庫有別於傳統的關聯式資料庫的架構,可以提供全球化分散式架構需求、大型數據的水平式擴充需求、效能保證需求、高可用度需求、資料模型API化需求與高SLA(Service Level Agreement)保證需求,這些都是資料高速成長的雲端時代,真正企業所需。從以下的列表就可以看出,微軟之所提出Azure Cosmos雲端服務資料庫,著實就是針對大數據的時代,讓企業可以免除複雜設定而輕鬆藉由單一設定(Turnkey),滿足多種應用程式的使用需求。
表一、微軟Cosmos雲端服務資料庫與關聯式、NoSQL資料庫的差異
功能 |
關聯式 |
NoSQL資料庫 |
Azure Cosmos雲端服務資料庫 |
全球化分散式架構 |
無 |
無 |
有,全球超過 30地區 |
水平式擴充 |
無 |
有 |
有,獨立式儲存體,確保產出一致 |
效能保證 |
無 |
有 |
有, 99%保證效能,讀取快於10 ms, 寫入快於15 ms |
高可用度 |
無 |
有 |
有,提供 PACELC 效能與同步的五種手動設定,支援容錯移轉 |
資料模型API化 |
關聯資料表+ SQL |
多重模型+ OSS API |
有,多重模型+ SQL + OSS API |
SLAs |
有 |
無 |
有, 高SLAs 滿足 效能、產出、同步與高可用 |
Azure Cosmos雲端服務資料庫整體的功能與架構,可以從下圖完整看出,該Cosmos資料庫已經支援四種型態的資料類型,有Key-value儲存、Column-family儲存、Document儲存與Graph儲存,分別對應到MongoDB API、Azure Tables API、DocumentDB API與Gremlin API四大類型。
Azure Cosmos雲端服務資料庫,之所以可以提供全球化分散式架構,主要是藉由兩種分散式模式,第一種就是全球式分散架構,譬如說將一家航空公司的資料,讀取分離到美國、歐洲與澳洲,在不同資料串流分離讀寫,達到垂直式分散架構。第二種就是區域性分散架構,使用關鍵欄位將資料置於不同分割區,達成水平式分散。當Azure Cosmos雲端服務資料庫,整合全球式垂直式分散架構與區域性分散架構,達成真的分散式架構。如下圖就是用【Airport】為關鍵字區分LAX/AMS/MEL等資料,將不同航線的運行狀況根據partition-key進行水平分割,然後再根據讀寫,進行垂直切割至於全球不同區域。
有關資料同步模式,Azure Cosmos雲端服務資料庫,更是值得一覽的功能。主要是強化非關聯式資料庫(NoSQL)的兩種極端方式(Strong、 Eventual consistency),額外新增三種介於兩種之間的模式(Bounded Staleness、Session與Consistent Prefix)。
-
Strong資料同步模式
-
屬於高資料同步模式,確保前端只可以看到最新且已確認後資料,因此選擇該模式的時,讀取資料過程中,系統需要得到其他節點的同步回應,才可以確保讀取資料是一致,也因此時間成本是最多。
-
-
Bounded staleness資料同步模式
-
屬於延遲資料同步模式,可以指定讀取動作可以延遲於寫入,根據資料異動版本與允許時間區間,多用於全球性分散式應用系統並且可以提供較高讀取效能的架構。
-
-
Session資料同步模式
-
屬於前端連線同步模式,可以讓連現在不同的設備與單程寫入、讀取的過程中,達成資料一致並且提供更高於【Strong】、【Bounded staleness】模式的讀取與寫入的效能。
-
-
Consistent Prefix資料同步模式
-
屬於較低成本的同步模式,該模式可以確保資料異動順序會跟讀取順序一致,譬如異動順序是A, B, C, 則前端可能看到 A, A,B, or A,B,C, 但是無法看到這樣的順序 A,C or B,A,C.。
-
-
Eventual資料同步模式
-
屬於最低成本的同步模式,該模式可以確保在最後沒有異動的狀況下,最終所有的分散式節點都會同步。但是同步的過程中,最容易發生讀取不一致的狀況,主要是因為節點回應前端資料時候,沒有再跟其他節點確認,當然也是所有同步模式中回應查詢速度最快者。
-
此外Azure Cosmos雲端服務資料庫針對每一種資料類型,同時支援多種API提供給前端應用程式連接,有以下的四種。
-
第一種Key-value儲存的MongoDB API,現在應用程式只要是使用驅動程式連上MongoDB者,可以直接連上Azure Cosmos雲端服務資料庫的MongoDB API,僅需要改變連線字串就可以將變更應用程式,直接存取Azure Cosmos雲端服務資料庫的MongoDB。當使用Azure Cosmos雲端服務資料庫的MongoDB時候,更可以比傳統自己建立的MongoDB有以下的益處。
-
彈性擴充與置放到高速的Azure硬體,加速輸出效能。
-
全球多點同步複寫與支援容錯移轉,減少管理負擔。
-
完全相容現有MongoDB減少移轉負擔。
-
雲端服務減少自己管理伺服器負擔。
-
五種資料同步模式,可以根據需求調整Strong, Bounded-staleness, Session, Consistent prefix 與Eventual consistency。
-
免除設定資料結構即可自動進行資料索引,提升效能。
-
-
第二種Azure Cosmos 資料庫就是Document儲存的DocumentDB API,可以儲存大量文件資料並且使用JSON格式進行交換,過程中Azure Cosmos資料庫可以確保DocumentDB有以下的優點。
-
彈性擴充與置放到高速的Azure硬體,加速輸出效能。
-
全球多點同步複寫與支援容錯移轉,減少管理負擔。
-
支援SQL陳述查詢資料內容。
-
允許使用JavaScript開發專屬DocumentDB的物件,包含stored procedures, triggers, 與user defined functions (UDFs)。
-
五種資料同步模式,可以根據需求調整Strong, Bounded-staleness, Session, Consistent prefix 與Eventual consistency。
-
免除設定資料結構即可自動進行資料索引,提升效能。
-
支援多種前端開發語言,包含.NET/.NET Core/Java/Node.js/Python/Xamarin
-
當使用Azure Cosmos 資料庫建立的DocumentDB,可以從以下的架構圖徹底了解整個運作模式。首先DocumentDB會將資料以JSON格式儲存在指定的資料庫與Collections,此外DocumentDB的Collections中可以支援使用JavaScript語言撰寫伺服器端的trigger, stored procedure 或user defined function取代使用T-SQL撰寫伺服器端的物件,執行個過程中JavaScript依然可以實作出交易的一致性,再發生錯誤的時候,可以讓JavaScript語言撰寫伺服器端的trigger, stored procedure退回整個資料異動。
最後整體DocumentDB的管理,可以使用Azure Cosmos DocumentDB概觀看到同步狀況與使用率。
-
第三種Azure Cosmos 資料庫就是Gremlin(GraphDB) API,提供圖形化模組與traversal API,支援的語言有Apache TinkerPop's graph traversal查詢語言與Gremlin,以及支援Apache Spark GraphX.軟體,有以下的優點。
-
圖形資料庫描述人、地、事之間的關聯,主要由vertices 與edges組成。
-
全球多點同步複寫與支援容錯移轉,減少管理負擔。
-
支援Gremlin 陳述查詢資料內容。
-
相容Apache TinkerPop圖形系統。
-
五種資料同步模式,可以根據需求調整Strong, Bounded-staleness, Session, Consistent prefix 與Eventual consistency。
-
免除設定資料結構即可自動進行資料索引,提升效能。
-
支援多種前端開發語言,包含.NET/Gremlin console/Java/Node.js
-
圖形資料庫可以運用在人與手持設備種類,作業系統與人與人之間關係的描述,這樣的情境就是典型的NoSQL資料庫的特質,微軟的
Azure Cosmos DB提供圖形資料庫功能,基本上該服務是一種PAAS種類,提供上的功能,一般使用的情境可以於社群網路、建議引擎、地圖系統與IOT(物聯網)。
-
第四種Azure Cosmos 資料庫的Azure Table API,提供key-value的儲存搭配彈性化結構,有以下的優點。
-
保證讀取小於10ms延遲時間,寫入小於15ms延遲時間。
-
全球多點同步複寫與支援容錯移轉,減少管理負擔。
-
支援SQL陳述查詢資料內容。
-
五種資料同步模式,可以根據需求調整Strong, Bounded-staleness, Session, Consistent prefix 與Eventual consistency。
-
免除設定資料結構即可自動進行資料索引,提升效能。
-
支援多種前端開發語言,包含.NET/Gremlin console/Java/Node.js
-
結論
從微軟發表的Azure Cosmos雲端服務資料庫整體的功能與架構,可以看出來關聯資料庫到NoSQL,可以藉由Azure Cosmos雲端服務資料庫的輔助,提升到全球化分散式架構、水平式擴充、效能保證、高可用度、資料模型API化、SLAs。該Azure Cosmos資料庫已經支援四種型態的資料類型,有Key-value儲存、Column-family儲存、Document儲存與Graph儲存,分別對應到MongoDB API、Azure Tables API、DocumentDB API與Gremlin API四大類型。
Microsoft
熱門新聞
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-03