vlambda博客
学习文章列表

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上找不到MongoDB?不妨试试Azure Cosmos DB


多区域:

可以一键将数据复制到与 Cosmos 帐户相关联的所有区域。对于国际版本Azure,Cosmos DB目前已经支持超过30个区域(注:Azure全球已经有55个区域):

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


对于中国版Azure,4个区域全部支持:

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


多模型:

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


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


多种API:

目前支持了SQL,MongoDB,Cassandra, Table, Gremlin等多种API(还在持续增加种)。


SLA保证的低时延:

使用 Cosmos DB 可以生成具有高响应能力的多区域规模应用程序。CosmosDB 可保证全中国任意位置99%的情况下读取(已编入索引)和写入延迟均低于10毫秒。 此功能使高响应度应用可以实现持续的数据引入和超快的查询。


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


利用Cosmos DB 的多区域 分布式特点的典型应用:

在多个区域部署WEB站点;

用户通过Traffic Manager访问到最靠近用户的区域的站点;

创建Cosmos DB,并一键复制到全球多个区域;

各个区域的WEB站点访问本区域或最靠近本区域的Cosmos DB;


(注)Traffic Manager请参见:

《》


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


五个一致性:

具体请参考官网:

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

非常一致性(Strong)

有限过期一致性(Bounded Staleness)

会话一致性(Session)

前缀一致性(Consistent Prefix)

最终一致性(Eventual)

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


分区:

AzureCosmos DB 使用分区缩放数据库中的单个容器,以满足应用程序的性能需求。 在分区中,可将容器中的项分割成不同的子集(称作“逻辑分区”)。 逻辑分区是根据与容器中每个项关联的分区键值形成的。 逻辑分区中的所有项具有相同的分区键值


例如,某个容器保存项。 每个项具有唯一的 UserID 属性值。 如果 UserID 充当容器中的项的分区键,并且有1,000 个唯一的 UserID 值,则会为容器创建1,000 个逻辑分区


除了用于确定项的逻辑分区的分区键以外,容器中的每个项还有一个项ID(在逻辑分区中保持唯一)。 将分区键与项 ID相结合可以创建项的索引用于唯一标识该项


吞吐量:

AzureCosmos DB 对数据库的所有操作(增删改等)的成本进行规范化,抽象了支持的数据库操作所需的系统资源,例如CPUIOPS 和内存,并最终以“请求单位”(缩写为RU)表示。可将每秒 RU 数(RU/S)视为吞吐量的计量单位。  


读取 1 KB 项的成本为 1 个请求单位(1 个 RU)。 以类似方式为其他所有数据库操作分配 RU 成本。 不管使用哪个API来与AzureCosmos 容器和数据库操作交互,都始终以RU来计量成本。 无论数据库操作是写入、读取还是查询,都始终以RU来计量成本。


计费方式:

预配的吞吐量+每小时消耗的存储的费用


预配的吞吐量可以给 数据库(database)和 容器Container(collection, graph, or table) 单独预配吞吐量(throughput )。


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


吞吐量可以预配到容器或数据库上,但是每个容器或数据库的最小预配量为:400RU/S。


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

因此,使用Cosmos DB的最低成本为 4*37.94,约等于152元/月


除此,还需要增加存储的费用:

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


如果将数据扩展至多个区域,则需支付多个区域的总存储成本。