Azure CosmosDB (3) 选择适当的一致性级别
《Windows Azure Platform 系列文章目录》
绝大部分的商业分布式数据库,要求开发人员选择两个极端的数据库一致性:强一致性(Strong Consistency)和最终一致性(Eventual Consistency)
在笔者之前的文章中,我们介绍了Azure CosmosDB的五种一致性级别:
- Strong (强一致性)
- Bounded Staleness
- Session (会话一致性)
- Consistent prefix (一致性前缀)
- 最终一致性 (Eventual Consistency)
五种一致性级别在可用性(availability)和性能(Performance)方面进行了权衡,并有全面的SLA保障。
以下简单的注意事项将有助于我们在常见方案中选择合适的一致性场景。
SQL API:
如果我们的应用程序使用CosmosDB SQL API生成的,请注意以下几点:
1.在大部分的使用场景中,Session (会话一致性)是最佳,也是推荐的选项
2.如果应用程序需要强一致性,建议使用Bounded Staleness级别
3.如果需要提供比Session (会话一致性)提供更严格的写入毫秒延迟保证,建议使用Bounded Staleness级别
4.如果应用程序需要最终一致性(Eventual Consistency),建议使用Consistent prefix (一致性前缀)级别
5.如果需要的一致性级别不如Session (会话一致性)那么严格的话,建议使用Consistent prefix (一致性前缀)级别
6.如果需要最高的可用性和最低的延迟,请使用终一致性(Eventual Consistency)级别
7.如果需要更高的数据持久性而不想牺牲性能,可以在应用层创建自定义一致性级别
MongoDB API
MongoDB 3.4 与 Azure Cosmos DB 一致性级别之间的映射
MongoDB 3.4 | Azure Cosmos DB (多区域) | Azure Cosmos DB (单区域) |
Liner | Strong | Strong |
Majority | Bounded Staleness | Strong |
Local | Consistent prefix (一致性前缀) | Consistent prefix (一致性前缀) |
一致性保证:
1.当一致性级别设置为Bounded Staleness,CosmosDB保证客户端始终读取前一次的写入值,同时有一个过期窗口(Staleness Windows)
2.当一致性级别设置为Strong (强一致性),过期窗口(Staleness Windows)为0,保证客户端读取写入操作的最新的值
3.对于剩余的三个一致性级别,过去窗口在很大程度上取决于你的工作负载。比如,如果在数据库上没有执行任何写入操作,则Session (会话一致性),Consistent prefix (一致性前缀)和最终一致性 (Eventual Consistency)级别的读取操作,和Strong (强一致性)的读取操作,结果是一样的
Azure CosmosDB (3) 选择适当的一致性级别的更多相关文章
- Azure CosmosDB (2) CosmosDB中的数据一致性
<Windows Azure Platform 系列文章目录> 为了保证分布式数据库的高可用性和低延迟性,我们需要在可用性.延迟和吞吐量之间进行权衡. 绝大部分的商业分布式数据库,要求开发 ...
- Azure CosmosDB (4) 在一致性(Consistency)可用性(Availability)和性能(Performance)之间的权衡
<Windows Azure Platform 系列文章目录> 我个人感觉,这个概念和分布式系统中的CAP原则是类似的: CAP原则指的是在一个分布式系统中,Consistency(一致性 ...
- Azure CosmosDB (8) 性能指标Request Unit-RU
<Windows Azure Platform 系列文章目录> 本次将介绍Cosmos DB的性能指标RU (Request Unit). 总的来说,我们设置的Azure CosmosDB ...
- Azure CosmosDB (5) 高可用性
<Windows Azure Platform 系列文章目录> Azure Cosmos DB 透明地复制与您的Cosmos帐户关联的所有Azure区域中的数据. Cosmos DB 对数 ...
- Azure CosmosDB (7) 分区键Partition Key
<Windows Azure Platform 系列文章目录> Azure Cosmos DB使用分区键(Partition Key),来对数据进行水平缩放(Horizon Scale), ...
- Azure CosmosDB (6) 冲突类型和解决策略
<Windows Azure Platform 系列文章目录> 当我们为CosmosDB配置多个Azure Region写入,就需要考虑冲突类型和解决策略. 对于配置了多个写入区域的 Az ...
- Azure CosmosDB (1) 概述
<Windows Azure Platform 系列文章目录> Azure CosmosDB是一个全球分布式数据库服务(Global Distributed Database),提供低延迟 ...
- Azure CosmosDB (14) 使用Postman访问CosmosDB REST API
<Windows Azure Platform 系列文章目录> 今天研究了一下如何使用Postman访问Azure CosmosDB. CosmosDB API接口,可以参考:https: ...
- 落地Azure CosmosDb的一个项目分享
我们遇到了什么? 我们有这么一个业务场景,就是某供应商会去爬取某些数据,爬到后会发到一个FTP上,然后我们定时去获取这些数据 这个数据有大有小,小的30多M数据量百万级,大的数据量能到数百M上千万数据 ...
随机推荐
- netty-socketio(一)之helloworld,与springboot整合
netty-socketio是一个开源的Socket.io服务器端的一个java的实现, 它基于Netty框架. 1.参考资料 (1)netty-socketio项目github地址: https:/ ...
- 微服务架构演变过程-SpringCloud
- js实现数组去重
1.遍历 let aArray = [1,2,2,3,3,"3"] let bArray = [] for(const a of aArray){ let index = bArr ...
- zabbix3.4.7页面中文乱码
无须重启任何服务,刷新页面即可.
- redis-cluster配置
为什么要用redis-cluster 1.并发问题 redis官方生成可以达到 10万/每秒,每秒执行10万条命令假如业务需要每秒100万的命令执行呢? 2.数据量太大 一台服务器内存正常是16~25 ...
- Android : 关于HTTPS、TLS/SSL认证以及客户端证书导入方法
一.HTTPS 简介 HTTPS 全称 HTTP over TLS/SSL(TLS就是SSL的新版本3.1).TLS/SSL是在传输层上层的协议,应用层的下层,作为一个安全层而存在,翻译过来一般叫做传 ...
- vs11 微软下载地址
https://www.microsoft.com/en-us/download/details.aspx?id=30679 vs11 微软的官方下载.最安全
- 过滤器(filter),监听器(listener),与servlet的执行顺序
创建: 加载顺序 监听器-->过滤器-->Servlet.项目启动后,容器会首先创建声明的各种监听器,为后继的各个事件监听做准备,然后创建过滤器,最后是Servlet.销毁的时候是反序进行 ...
- 长字符串换行word-break
word-break: break-all,每个字符换行 word-break: break-word按照单词换行,长字符之间换行
- servlet邮箱激活验证实例含代码
也有很多人本来有机会的,他们都拒绝了,不想让自己太累,太麻烦.或者中途被情绪所左右,半途而废了. 成长是有代价的,同样悠闲也是有代价的. 流程: 用户填写相关信息,点击注册按钮 系统先将用户记录保存到 ...