《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) 选择适当的一致性级别的更多相关文章

  1. Azure CosmosDB (2) CosmosDB中的数据一致性

    <Windows Azure Platform 系列文章目录> 为了保证分布式数据库的高可用性和低延迟性,我们需要在可用性.延迟和吞吐量之间进行权衡. 绝大部分的商业分布式数据库,要求开发 ...

  2. Azure CosmosDB (4) 在一致性(Consistency)可用性(Availability)和性能(Performance)之间的权衡

    <Windows Azure Platform 系列文章目录> 我个人感觉,这个概念和分布式系统中的CAP原则是类似的: CAP原则指的是在一个分布式系统中,Consistency(一致性 ...

  3. Azure CosmosDB (8) 性能指标Request Unit-RU

    <Windows Azure Platform 系列文章目录> 本次将介绍Cosmos DB的性能指标RU (Request Unit). 总的来说,我们设置的Azure CosmosDB ...

  4. Azure CosmosDB (5) 高可用性

    <Windows Azure Platform 系列文章目录> Azure Cosmos DB 透明地复制与您的Cosmos帐户关联的所有Azure区域中的数据. Cosmos DB 对数 ...

  5. Azure CosmosDB (7) 分区键Partition Key

    <Windows Azure Platform 系列文章目录> Azure Cosmos DB使用分区键(Partition Key),来对数据进行水平缩放(Horizon Scale), ...

  6. Azure CosmosDB (6) 冲突类型和解决策略

    <Windows Azure Platform 系列文章目录> 当我们为CosmosDB配置多个Azure Region写入,就需要考虑冲突类型和解决策略. 对于配置了多个写入区域的 Az ...

  7. Azure CosmosDB (1) 概述

    <Windows Azure Platform 系列文章目录> Azure CosmosDB是一个全球分布式数据库服务(Global Distributed Database),提供低延迟 ...

  8. Azure CosmosDB (14) 使用Postman访问CosmosDB REST API

    <Windows Azure Platform 系列文章目录> 今天研究了一下如何使用Postman访问Azure CosmosDB. CosmosDB API接口,可以参考:https: ...

  9. 落地Azure CosmosDb的一个项目分享

    我们遇到了什么? 我们有这么一个业务场景,就是某供应商会去爬取某些数据,爬到后会发到一个FTP上,然后我们定时去获取这些数据 这个数据有大有小,小的30多M数据量百万级,大的数据量能到数百M上千万数据 ...

随机推荐

  1. EL函数库及用法

    导入标签库: <%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%&g ...

  2. input 标签的 disabled 和 readonly 属性

    首先这两种属性都会使显示出来的文本框不能输入. disabled 属性:规定禁用 input 元素.被禁用的 input 元素既不可用,也不可点击和编辑,使用 tab 键时将会被跳过,用户的所有操作对 ...

  3. 【原创】一篇学会vue路由配置 、 动态路由 、多层路由(实例)

    先来看看效果图: 为了方便讲解,我没有使用vue脚手架,如果需要的,可以留言跟我要.不多说开工: 首先,html先组上 <div id="app"> <div&g ...

  4. 2015-10-19 sql1

        SQL SERVER(一) 一.设置登陆验证 1.右键点击数据库->属性->安全性设置密码登陆 2.数据库下找到安全性->登录名->sa,右键点击sa->属性(修 ...

  5. Linux目录结构下部

    第1章 linux目录结构 (linux必知必会的文件或目录) 1.1 在linux下面如何安装软件 yum install tree 1.2 linux无法上网了怎么办? [root@oldboye ...

  6. tensorFlow 零散知识

    收集一些碰到的关于细节的函数在这里记录下 1.tf.flags.DEFINE_xxx() 读别人家的代码的时候经常看到这个,结果两三天不看居然忘记了,这脑子绝对上锈了,决定记下来免得老是查来查去的.. ...

  7. squid代理

    概念    高性能dialing服务软件,作为前置缓存服务,用于替代用户向网站服务器请求页面数据并进行缓存.    默认占用端口3128.3401.4827    分类    从作用分类       ...

  8. 50个常用的Linux命令(二)sed

    [root@localhost cee]# echo this thisthisthis |sed 's/this/THIS/g'THIS THISTHISTHIS[root@localhost ce ...

  9. python基础11_函数作用域_global_递归

    看到了一个16进制转换的小知识点,就验证了一下运行结果. #!/usr/bin/env python # coding:utf-8 # 看到了16进制转换的问题.顺便验证一下. a = 255 b = ...

  10. summernote富文本编辑器

    下载summernote官方demo,解压,把文件夹中的summernote.js,summernote.css和font整个文件夹都放到服务器对应的项目目录里 引入summernote 所需要的bo ...