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 (强一致性)的读取操作,结果是一样的
转载于:https://www.cnblogs.com/threestone/p/10641132.html
Azure CosmosDB (3) 选择适当的一致性级别相关推荐
- sql azure 语法_将SQL工作负载迁移到Microsoft Azure:服务选择
sql azure 语法 In the previous article, Migrating SQL workloads to Microsoft Azure: Planning the jump, ...
- 如何选择正确的RAID级别
存储世界5月23日报道:目前,根据应用程序.磁盘驱动器种类.预算标准选择正确的RAID级别和10年前一样重要. 例如,如果你想实现高效能的读操作和写操作,你可能就要使用小型磁盘驱动器,避免使用RAID ...
- Azure CosmosDB (13) CosmosDB数据建模
<Windows Azure Platform 系列文章目录> 我们在使用NoSQL的时候,如Azure Cosmos DB,可以非常快速的查询非结构化,或半结构化的数据.我们需要花一些时 ...
- Zookeeper一致性级别分析,含爱奇艺,小米,腾讯,阿里
摘要 Spring框架自诞生来就备受开发者青睐,很多开发者一致认为它是目前最屌的Java项目,正是因为它的"过人之处",市面上99%的企业都在使用Spring框架. 所以,Spri ...
- Zookeeper一致性级别分析,面试题附答案
有赞: 一面 hashMap原理,put和resize过程 线程池有哪些类型, concurrentHashMap分段锁原理,java8和java7实现的区别 B-树和B+树区别,数据库索引原理,组合 ...
- Zookeeper一致性级别分析,终于彻底把握了
1. 垃圾回收机制 Stop-the-World: JVM由于要执行GC而停止了应用程序的执行称之为Stop-the-World,该情形会在任何一种GC算法中发生.当Stop-the-world发生时 ...
- 分布式系统的一致性级别划分,面试总结+解答分享!
前言 为什么互联网资讯这么发达,但是没有出现技术人才井喷? 为什么会出现应届生薪资倒挂多年老员工的现象? 这个世界有太多的现象都可以用**"二八定律"**来解释. 20%拿着高工资 ...
- BASE理论(基本可用策略+ 最终一致性实现)
目录 实现基本可用的几个策略 1.流量削峰(不同地区售票时间错峰出售) 2.延迟响应,异步处理(买票排队,基于队列先收到用户买票请求,排队异步处理,延迟响应) 3.体验降级(看到非实时数据,采用缓存数 ...
- Cassandra,NoSQL中的兰博基尼
首先,给大家送个福利!最近整理了自己的工作资料,出一份面试资料<Java面试BATJ通关手册>,覆盖了Java核心技术.JVM.Java并发.SSM.微服务.数据库.数据结构等等. 领取方 ...
最新文章
- 如何快速的vue init 属于自己的vue模板?
- 线程安全的无锁RingBuffer的实现
- 炒股Java_基于java计算买卖股票的最佳时机
- 虚拟机linux系统王及密码的破解方式——重设root密码
- 我脸都问绿了!二面竟然被问到 MySQL 时间类型 datetime、bigint 及 timestamp 的查询效率。。。
- linux下安装jdk,非常简单的操作
- JVM类加载理解(线程上下文类加载器、Tomcat类加载器)
- 设计原本 --- 批判理性模型
- 实用动效UI素材,高效向用户展示你的app功能!
- 再论微服务架构之七宗罪
- 线性代数中的克莱姆法则与几何解释
- 请简述GC(垃圾回收)产生的原因,并描述如何避免?
- 微信公众号采集 php,如何采集微信公众号历史消息页的详解
- 如何下载ScienceDirect(Elsevier)文献的补充材料
- 路由器pppoe服务器无响应,宽带拨号服务器无响应
- 彻底解决“你的时钟快了”问题
- fastjson 序列化问题:Comparison method violates its general contract
- FFmpeg分离(解封装)视频和音频
- 1034: 夏季促销 Python
- 2018 ACM/ICPC 沈阳站 J How Much Memory Your Code Is Using?