Amazon DynamoDB 设计思想(零)

今天我们来看看DynamoDb的设计思想。

DynamoDB主要是想要达到高可用性(availability),因为CAP理论,所以只能牺牲一致性了,但是会实现最终一致性。另外还想要达到高可扩展性(scalability)这个目标,方便进行水平扩展,也就是说高可用性和高可扩展性是DynamoDB要达到的两个目标,因为是分布式系统,所以需要对待失效处理向对待正常情况一样。

DynamoDB也不例外的利用了一致性哈希(consistent hashing)来对数据进行分区和复制。它的数据一致性是利用对象版本(object versioning)进行实现的。那我们来看看DynamoDB是怎么实现最终一致性的。

DynamoDB实现的最终一致性要解决两个问题,第一个问题是什么时候解决更新冲突,也就是说冲突是在读还是写的时候进行解决。很多数据存储系统是在写的时候进行冲突解决的,在这种情况下,如果所有的数据副本不能达成一致,那么写操作是有可能被拒绝的。而DynamoDB要实现总是可写的(always writable), 所以在读的时候进行冲突解决。

第二个问题是谁来解决更新冲突。可以使数据存储系统也可以是应用来解决冲突。如果是数据存储系统来解决冲突,那么只能使用简单的策略,如最后写有效(last write wins)。这里DynamoDB可以使应用来解决冲突,因为应用知道如何选择正确的数据,即把球踢给了应用。另外,如果应用不想解决冲突,也可以选择让DynamoDB来解决,当然它会采用最后写有效的策略来解决冲突,这样子的设计确实很灵活。

DynamoDB的几个特点:

1 总是可写的。

2 单一管理域中所有的节点都是可信的。

3 不需要层次化的命名。

4 读和写操作在99.9%的情况下都能在百毫秒的级别完成。所以它内部并不是靠多跳路由(multi hop routing),而是靠zero-hop DHT实现的。

原文:http://blog.csdn.net/hongchangfirst/article/details/26818503

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst

Amazon DynamoDB 设计思想(零)

时间: 2024-11-05 21:48:35

Amazon DynamoDB 设计思想(零)的相关文章

Amazon DynamoDB, 面向互联网应用的高性能、可扩展的NoSQL数据库

DynamoDB是一款全面托管的NoSQL数据库服务.客户能够很easy地使用DynamoDB的服务.同一时候享受到高性能,海量扩展性和数据的持久性保护. DynamoDB数据库是Amazon在2012年1月18日公布的. 它融入了亚马逊在大规模非关系型数据库和云计算领域积累的多年丰富经验.事实上早在2007年.亚马逊就以前公布了一篇论文.深入讨论了AmazonDynamo所使用的设计理念和实现技术,而且讨论了怎样在大规模扩展的同一时候提供高可靠的数据保护的问题. 最初的Dynamo设计基于一系

Kafka/Metaq设计思想学习笔记 转

转载自: http://my.oschina.net/geecoodeer/blog/194829 本文没有特意区分它们之间的区别,仅仅是列出其中笔者认为好的设计思想,供后续设计参考. 目前笔者并没有深入代码研究其细节,如有不正确的地方,请斧正. 概念和术语 消息,全称为Message,是指在生产者.服务端和消费者之间传输数据. 消息代理:全称为Message Broker,通俗来讲就是指该MQ的服务端或者说服务器. 消息生产者:全称为Message Producer,负责产生消息并发送消息到m

利用 Amazon DynamoDB 助力游戏应用

Amazon DynamoDB正迅速成为世界上发展势头最强劲的游戏数据库.<水果忍者>(由Halfbrick工作室开发).<战斗营地>(由PennyPop开发)等游戏都充分利用AmazonDynamoDB的一键式扩展性功能,支撑游戏高速的发展,为全球数百万玩家提供服务.AmazonDynamoDB还得到包括Supervillain工作室在内的众多开发人员的赞赏,该工作室的知名作品包括<塔炮战争>与<特隆:进化>. 在今天的文章中,大家将了解Amazon Dy

Web设计思想——渐进增强

最近在拜读一本Web体验相关的书<渐进增强--跨平台用户体验设计 >,阅读后做些总结,消化一下书中的精髓. 在阅读本文前,可以先思考下面几个问题. 1. 浏览网页的目的是什么? 2. 浏览网页的时候会碰到哪些问题? 3. 用什么方法来解决这些问题? 4. 这些方法具体的实施步骤有哪些? 一.契机 1)内容 内容是Web页面的核心,也是用户浏览页面的目的.内容可以是某些信息或某个功能,用户浏览网页就是为了获得它们.接下来所做的一切都是为了让内容脱颖而出,向用户传达更清晰明确的意义,传递更准确.更

四则运算进化版设计思想

设计思想: 1.题目避免重复 (1)调用系统时间函数,将生成的运算式存储,将新的运算式与已生成式子做比较,若相同则不输出,不同则输出 2.可定制(数量/打印方式) (1)提示用户输入题目数量,打印方式,从键盘输入 3.(1)是否有乘除法 在输入之前提示用户是否有乘除法,若没有,则只输出加减法 (2)是否有括号 (3)数值范围 由用户设置数值范围,如果输入不合法,提示输入错误,请重新输入,在随机生成数中保证随机数在用户设置的数值范围 (4)加减有无负数 如果没有负数,比较生成的两个数,保证做减法时

Amazon DynamoDB简介(一)

DynamoDB的数据是存储在SSD(Solid State Drive,固态硬盘),这样可在预测的低延迟响应时间之内,存储和访问任何规模的数据,另外SSD 还具有很高的 I/O 性能,能够处理大规模请求工作负载.我们来看看DynamoDB的不适合的使用场景:如果需要存储大量数据,但这些数据的访问频率很低,则 DynamoDB 可能不太适合. DynamoDb的数据模型是无模式的,可认为是简单的key-value模式.不过特殊之处在于它的主键可以是单属性的哈希键或复合的哈希-范围键.例如,单属性

Amazon DynamoDB 简介(二)

在DynamoDB中,database是table的集合,table是item的集合,item是attribute的集合.attribute是name-value对.value可以是单值属性也可以是多值属性(集合).一个item的大小不能超过64KB.理解了这个你就入门了. 另外,DynamoDB为了支持更为丰富的查询,提出了二级索引的思想,可以在表中创建一个或多个二级索引,并对这些索引发出 Query 请求.有两种类型的二级索引: 本地二级索引(Local Secondary Indexes)

09A-独立按键消抖实验01——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线--普利斯队长精心奉献 ? 实验目的: 1.复习状态机的设计思想并以此为基础实现按键消抖 2.单bit异步信号同步化以及边沿检测 3.在激励文件中学会使用随机数发生函数$random 4.仿真模型的概念 实验平台:芯航线FPGA核心板 实验原理: ????按键在电子设计中使用的最多,从复位到控制设置均可以看到其身影.现在按键的功能也种类也越来越多,例如多向按键.自锁按键.薄膜按键等.普通按键其硬件示意图如图9-1所示. 图9-1 按键示意图 芯航线开发板所载的为两脚贴片按键,分别位于开发板

中文翻译为&quot;具象状态传输&quot;的RESTful的架构风格和设计思想

本文标签:  具象状态传输 RESTful架构 RESTful理解 REST   服务器 REST 定义了一组体系架构原则,您可以根据这些,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态.所以在事实上,REST 对 Web的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计.在多年以后的今天,REST的主要框架已经开始雨后春笋般的出现. REST(Representational State Transfer ),有中文翻译为"具象状态传