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上千万数据 ...
随机推荐
- pc远程控制凭证不工作的解决办法
感谢这位博主写的文章https://blog.csdn.net/u010433704/article/details/50679874 前提是要控制的电脑设置了密码,之前想不明白为什么需要这一项,后来 ...
- 1018. Binary Prefix Divisible By 5可被 5 整除的二进制前缀
网址:https://leetcode.com/problems/binary-prefix-divisible-by-5/ 一次for循环遍历数组,在上次计算的基础上得到本次的结果! class S ...
- 【CUDA】Win10 + VS2017新 CUDA 项目配置
一.新建项目 打开VS2017 → 新建项目 → Win32控制台应用程序 → “空项目”打钩 二.调整配置管理器平台类型 右键项目 → 属性 → 配置管理器 → 全改为“x64” 三.配置生成属性 ...
- python----常用模块(random,string,time&datetime,os,sys,xpinyin(拼音))
一.模块.包 1.1 什么是模块 在python中,一个.py文件就构成一个模块,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 1.2 什么是包 ...
- JS--reload 重新加载 true参数
location.reload() 作用是用来重新加载当前显示的页面. 如果调用reload()时不传递参数,页面就会以最有效的方式重新加载. 也就是说,如果页面自上次请求以来并没有改变过,页面就会从 ...
- 微信开发】【Asp.net MVC】-- 微信分享功能
[微信开发][Asp.net MVC]-- 微信分享功能 2017-01-15 09:09 by stoneniqiu, 12886 阅读, 15 评论, 收藏, 编辑 内嵌在微信中的网页,右上角都会 ...
- nodejs 安装失败 ,出现error 2502 和error2503
出现error 2502 和error2503是因为win8的权限问题所导致的,具体说就是要以管理员身份进行安装就可以解决,下面详细来说一下. 1.cmd命令行点击以管理员身份运行. 2.这时候就可以 ...
- Android : 跟我学Binder --- (5) C++实现
目录: Android : 跟我学Binder --- (1) 什么是Binder IPC?为何要使用Binder机制? Android : 跟我学Binder --- (2) AIDL分析及手动实现 ...
- mpvue 解析
前言 mpvue是一款使用Vue.js开发微信小程序的前端框架. 总结 生命周期的理解 文档 一次前后端实践 使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为H5和小程序提供了代码复 ...
- keil项目的调试与编译
编译: Translate===编译单个文件 Build====编译当前项目,如果该项目先前编译过1次,并且文件没有编辑改动,则点击时不会重新编译 Rebuild===重新编译,每点击一次就重新编译. ...