自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雲端服務資料庫,之所以可以提供全球化分散式架構,主要是藉由兩種分散式模式,第一種就是全球式分散架構,譬如說將一家航空公司的資料,讀取分離到美國、歐洲與澳洲,在不同資料串流分離讀寫,達到垂直式分散架構。第二種就是區域性分散架構,使用關鍵欄位將資料置於不同分割區,達成水平式分散。當Azure Cosmos雲端服務資料庫,整合全球式垂直式分散架構與區域性分散架構,達成真的分散式架構。如下圖就是用【Airport】為關鍵字區分LAX/AMS/MEL等資料,將不同航線的運行狀況根據partition-key進行水平分割,然後再根據讀寫,進行垂直切割至於全球不同區域。

 

Azure Cosmos分割架構

有關資料同步模式,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

熱門新聞

Advertisement