Azure上找不到MongoDB?不妨试试Azure Cosmos DB - 图1

Azure上的MongoDB在哪里?

答:Azure上目前没有Paas层的Mongo DB可用,但仍有两种方式使用Mongo DB, 1是使用Iaas层的虚拟机构建MongoDB集群,2.是使用更强大的Paas层的Cosmos DB。

Azure Cosmos DB是多区域 分布式 多模型数据库服务。

您可以观看以下视频内容了解Azure Cosmos DB或者跳过视频阅读文章:

基础知识.mp4 (47.47MB)

多区域:中国版4个区域,国际版超过30个区域

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

对于中国版Azure,4个区域全部支持:
Azure上找不到MongoDB?不妨试试Azure Cosmos DB - 图4

使用新式多主数据库复制协议,每个区域都支持写入和读取。 多主数据库功能还可以实现:

  • 无限弹性写入和读取可伸缩性。
  • 在全中国实现 99.999% 的读写可用性。
  • 在 99% 的时间内,在 10 毫秒内为读写提供服务。

多模型:Key-Value,Column-family, Document, Graph

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

Azure上找不到MongoDB?不妨试试Azure Cosmos DB - 图5

多种API:SQL,MongoDB,Cassandra, Table, Gremlin

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

SLA保证的低时延

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

Azure上找不到MongoDB?不妨试试Azure Cosmos DB - 图6

典型应用

在多个区域部署WEB站点;
用户通过Traffic Manager访问到最靠近用户的区域的站点;
创建Cosmos DB,并一键复制到全球多个区域;
各个区域的WEB站点访问本区域或最靠近本区域的Cosmos DB;

(注)Traffic Manager请参见:
Azure Traffic Manager- 可以在全球 Azure 区域内以最佳方式分发流量

Azure上找不到MongoDB?不妨试试Azure Cosmos DB - 图7

五个一致性:
具体请参考官网:
https://docs.azure.cn/zh-cn/cosmos-db/consistency-levels
非常一致性(Strong)
有限过期一致性(Bounded Staleness)
会话一致性(Session)
前缀一致性(Consistent Prefix)
最终一致性(Eventual)
Azure上找不到MongoDB?不妨试试Azure Cosmos DB - 图8

分区:
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 )。

Azure上找不到MongoDB?不妨试试Azure Cosmos DB - 图9

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

Azure上找不到MongoDB?不妨试试Azure Cosmos DB - 图10
因此,使用Cosmos DB的最低成本为 4*37.94,约等于152元/月。

除此,还需要增加存储的费用:
Azure上找不到MongoDB?不妨试试Azure Cosmos DB - 图11

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

image.png