Azure上的MongoDB在哪里?
答:Azure上目前没有Paas层的Mongo DB可用,但仍有两种方式使用Mongo DB, 1是使用Iaas层的虚拟机构建MongoDB集群,2.是使用更强大的Paas层的Cosmos DB。
Azure Cosmos DB是多区域 分布式 多模型数据库服务。
多区域:中国版4个区域,国际版超过30个区域
可以一键将数据复制到与 Cosmos 帐户相关联的所有区域。对于国际版本Azure,Cosmos DB目前已经支持超过30个区域(注:Azure全球已经有55个区域):
对于中国版Azure,4个区域全部支持:
使用新式多主数据库复制协议,每个区域都支持写入和读取。 多主数据库功能还可以实现:
- 无限弹性写入和读取可伸缩性。
- 在全中国实现 99.999% 的读写可用性。
- 在 99% 的时间内,在 10 毫秒内为读写提供服务。
多模型:Key-Value,Column-family, Document, Graph
目前支持Key-Value,Column-family, Document, Graph4种模型;
多种API:SQL,MongoDB,Cassandra, Table, Gremlin
目前支持了SQL,MongoDB,Cassandra, Table, Gremlin等多种API(还在持续增加种)。
SLA保证的低时延
使用 Cosmos DB 可以生成具有高响应能力的多区域规模应用程序。CosmosDB 可保证全中国任意位置99%的情况下读取(已编入索引)和写入延迟均低于10毫秒。 此功能使高响应度应用可以实现持续的数据引入和超快的查询。
典型应用
在多个区域部署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 )。
因此,使用Cosmos DB的最低成本为 4*37.94,约等于152元/月。
除此,还需要增加存储的费用:
如果将数据扩展至多个区域,则需支付多个区域的总存储成本。