Azure Cosmos DB 知识整理
Posted sukidagala2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure Cosmos DB 知识整理相关的知识,希望对你有一定的参考价值。
Azure Comos DB是什么?
Azure Cosmos DB 是多区域分布式多模型数据库服务。
RU的基本概念:
预配吞吐量以“请求单位数/秒 (RU/s 或复数形式 RUs)
可将每秒 RU 数视为吞吐量的货币,它抽象化了执行 Azure Cosmos DB 支持的数据库操作所需的系统资源,例如 CPU、IOPS 和内存。
SLA 服务级别协议
SLA 服务级别协议(Service-Level Agreement)SLA是关于网络服务供应商和客户间的一份合同,其中定义了服务类型、服务质量和客户付款等术语。((i) 详细的事件说明;(ii) 与停机时间和停机持续时间有关的信息;(iii) 受影响用户(如有)的数量和位置;以及 (iv) 您在事件发生时试图解决该事件的说明
自动索引
在 Azure Cosmos DB 中,每个容器都有一个确定了如何为容器项编制索引的索引策略。 新建容器的默认索引策略会对每个项的每个属性编制索引,对任何字符串或数字强制使用范围索引,对 Point 类型的任何 GeoJSON 对象强制使用空间索引。 这样,无需提前考虑索引和索引管理,就能获得较高的查询性能。
默认情况下不会定义组合索引,空间索引(允许你修改索引策略)
Azure Cosmos 的几个基本特点
1. 无限弹性写入和读取可伸缩性。Cosmos DB 可为读写操作提供 99.999% 的高可用性,适用于需要弹性扩展 流量暴增的服务
2. Cosmos DB 可保证全球任意位置第 99 个百分位的读取(已编入索引)和写入延迟均低于 10 毫秒(低延迟)
3. 提供五个妥善定义的一致性选项
4 .保证提供综合服务级别协议 (SLA) ,当服务区域出现意外故障,停机,或者没有达到约定性能,可以通过申请,向微软索要赔款
分布式一键式部署多区域分布
顾名思义,便是操作非常简单通过点击就能完成对多区域的部署、复制集备份。使用 Azure Cosmos DB 的多宿主 API,应用程序始终知道最靠近的区域并将请求发送到该区域。 无需进行任何配置更改就能识别最靠近的区域
你只要选择你需要部署的区域 然后点击部署即可完成。
在中国Azure Cosmos DB 支持四块区域的分布式部署,分别是 南部1 南部2 北部1 北部2 (实际区域为北京和上海)
简单而言,如果应用程序需要保证在中国任何位置都能提供快速响应、始终联机并需要无限且可弹性缩放的吞吐量和存储,则应在 Azure Cosmos DB 上生成应用程序
支持五种数据模型
一致性,可用性,性能权衡
依赖于复制实现高可用性和/或低延迟的分布式数据库在读取一致性与可用性、延迟和吞吐量之间进行基本权衡。
大多数商用分布式数据库都要求开发人员在两种极端一致性模型之间进行选择:非常一致和最终一致,最终一致性可提供更高的可用性和性能,但会加大应用程序的编程难度。精确定义的多个一致性选项。
在 Cosmos DB 中构建多区域分布式应用程序时,不再需要在一致性、可用性、延迟和吞吐量之间进行极端的权衡。 Cosmos DB 的多主数据库复制协议经过精心设计,提供五个妥善定义的一致性选项 - 非常一致性、有限过期一致性、会话一致性、一致前缀一致性和最终一致性 - 可为多区域分布式应用程序提供直观的编程模型以及低延迟和高可用性。
按最强到最弱的顺序,模型分别为:
1. 强
强一致性提供可线性化保证。 可线性化是指并发处理请求。 保证读取操作返回项的最新提交版本。 客户端永远不会看到未提交或不完整的写入。 始终保证用户读取最新确认的写入
2. 有效过期
保证读取遵循一致前缀保证。 读取操作可能滞后于写入,最多 "K" 个版本(即 "更新")或 "T" 时间间隔。
3. 会话
保证在单个客户端会话中进行读取,以保证一致前缀、单调读取、单调写入、读写和读写操作保证。 这假设单个 "writer" 会话或共享多个编写器的会话令牌。
4. 一致前缀
返回的更新包含所有更新的前缀,无间隔。 一致前缀一致性级别保证读取永远不会看到无序写入。
5. 最终
不会对读取进行排序。 如果缺少任何进一步的写入,则副本最终会收敛。最终一致性是最弱的一致性形式,因为客户端可以读取早于其读取的值。 最终一致性非常适合于应用程序不需要任何顺序保证。
Azure Cosmos DB的使用场景
1.多区域数据分布和使用
2.建立实时的客户体验
3.游戏和电子商务的最佳数据库服务(大规模和高性能需求,即使,弹性缩放处理流量突发,跨全球多数据中心)
汇总图
以上是关于Azure Cosmos DB 知识整理的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Microsoft.EntityFrameworkCore.Cosmos 连接到 Azure Cosmos Db 帐户 - 响应状态代码