最近被问到Azure上的MongoDB在哪里?html
答:Azure上目前没有Paas层的Mongo DB可用,但仍有两种方式使用Mongo DB, 1是使用Iaas层的虚拟机构建MongoDB集群,2.是使用更强大的Paas层的Cosmos DB。数据库
Azure Cosmos DB是多区域 分布式 多模型数据库服务。微信
您能够观看如下视频内容了解Azure Cosmos DB或者跳过视频阅读文章:分布式
https://v.qq.com/x/page/r3050khlbou.htmlide
多区域:性能
能够一键将数据复制到与 Cosmos 账户相关联的全部区域。对于国际版本Azure,Cosmos DB目前已经支持超过30个区域(注:Azure全球已经有55个区域):3d
对于中国版Azure,4个区域所有支持:视频
多模型:htm
目前支持Key-Value,Column-family, Document, Graph4种模型;blog
多种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元/月。
除此,还须要增长存储的费用:
若是将数据扩展至多个区域,则需支付多个区域的总存储成本。