Azure上找不到MongoDB?不妨試試Azure Cosmos DB

最近被問到Azure上的MongoDB在哪裏?

答:Azure上目前沒有Paas層的Mongo DB可用,但仍有兩種方式使用Mongo DB, 1是使用Iaas層的虛擬機構建MongoDB集羣,2.是使用更強大的Paas層的Cosmos DB。

 

Azure Cosmos DB是多區域  分佈式  多模型數據庫服務。

 

您可以觀看以下視頻內容瞭解Azure Cosmos DB或者跳過視頻閱讀文章:

Azure Cosmos DB 基礎知識

 

多區域:

可以一鍵將數據複製到與 Cosmos 帳戶相關聯的所有區域。對於國際版本Azure,Cosmos DB目前已經支持超過30個區域(注:Azure全球已經有55個區域):

 

對於中國版Azure,4個區域全部支持:

 

多模型:

目前支持Key-Value,Column-family, Document, Graph4種模型;

 

 

多種API:

目前支持了SQL,MongoDB,Cassandra, Table, Gremlin等多種API(還在持續增加種)。

 

SLA保證的低時延:

使用 Cosmos DB 可以生成具有高響應能力的多區域規模應用程序。CosmosDB 可保證全中國任意位置99%的情況下讀取(已編入索引)和寫入延遲均低於10毫秒。 此功能使高響應度應用可以實現持續的數據引入和超快的查詢。

 

 

利用Cosmos DB 的多區域 分佈式特點的典型應用:

在多個區域部署WEB站點;

用戶通過Traffic Manager訪問到最靠近用戶的區域的站點;

創建Cosmos DB,並一鍵複製到全球多個區域;

各個區域的WEB站點訪問本區域或最靠近本區域的Cosmos DB;

 

(注)Traffic Manager請參見:

Azure Traffic Manager- 可以在全球 Azure 區域內以最佳方式分發流量

 

 

五個一致性:

具體請參考官網:

https://docs.azure.cn/zh-cn/cosmos-db/consistency-levels

非常一致性(Strong)

有限過期一致性(Bounded Staleness)

會話一致性(Session)

前綴一致性(Consistent Prefix)

最終一致性(Eventual)

 

分區:

AzureCosmos DB 使用分區縮放數據庫中的單個容器,以滿足應用程序的性能需求。 在分區中,可將容器中的項分割成不同的子集(稱作“邏輯分區”)。 邏輯分區是根據與容器中每個項關聯的分區鍵值形成的。 邏輯分區中的所有項具有相同的分區鍵值。

 

 

例如,某個容器保存項。 每個項具有唯一的 UserID 屬性值。 如果 UserID 充當容器中的項的分區鍵,並且有1,000 個唯一的 UserID 值,則會爲容器創建1,000 個邏輯分區。

 

除了用於確定項的邏輯分區的分區鍵以外,容器中的每個項還有一個項ID(在邏輯分區中保持唯一)。 將分區鍵與項 ID相結合可以創建項的索引用於唯一標識該項。

 

吞吐量:

AzureCosmos DB 對數據庫的所有操作(增刪改等)的成本進行規範化,抽象了支持的數據庫操作所需的系統資源,例如CPU、IOPS 和內存,並最終以“請求單位”(縮寫爲RU)表示。可將每秒 RU 數(RU/S)視爲吞吐量的計量單位。  

 

 

讀取 1 KB 項的成本爲 1 個請求單位(1 個 RU)。 以類似方式爲其他所有數據庫操作分配 RU 成本。 不管使用哪個API來與AzureCosmos 容器和數據庫操作交互,都始終以RU來計量成本。 無論數據庫操作是寫入、讀取還是查詢,都始終以RU來計量成本。

 

計費方式:

預配的吞吐量+每小時消耗的存儲的費用

 

預配的吞吐量可以給 數據庫(database)和 容器Container(collection, graph, or table) 單獨預配吞吐量(throughput )。

 

 

吞吐量可以預配到容器或數據庫上,但是每個容器或數據庫的最小預配量爲:400RU/S。

 

因此,使用Cosmos DB的最低成本爲 4*37.94,約等於152元/月。

 

除此,還需要增加存儲的費用:

 

如果將數據擴展至多個區域,則需支付多個區域的總存儲成本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章