如何权衡Amazon DynamoDB和SimpleDB?

日期: 2014-07-09 作者:Dan Sullivan翻译:张培颖 来源:TechTarget中国 英文

NoSQL数据库促进了可扩展性,且能够帮助Web应用减少开发时间。不像关系型数据拥有固定的模式,很多NoSQL数据库无模式,但也为开发者提供了更多的灵活性。两个比较流行的NoSQL数据库是亚马逊Web服务的SimpleDB和DynamoDB。

亚马逊DynamoDB和SimpleDB充分管理了非关系型数据库,并且提供了简单的应用程序接口(API)进行存储、查询和管理数据。这两个数据库都是适用于寻求灵活数据库设计的应用,但是也有数个不同点和应用。

用SimpleDB管理更小的数据库

SimpleDB最适合每一个域不超过10GB的小型数据库,这种数据库需要基本的存储和查询操作。如果你期望的表的增长速度比这个更大,而且计划使用SimpleDB的话,将需要自己将数据分成两个或者更多的域来管理。同时它也能够跨域手动分割数据,附加的管理费用破坏了SimpleDB的优势。

这项服务旨在服务于小型数据库应用,这些应用这种灵活性、可用性以及耐久性是关键考量,同时可扩展性需求较少。能够在运行中改变表的属性,且无须修改模式、重新索引数据或者离线操纵表结构都是其灵活性很好地体现。SimpleDB分布在一个区域中的多个数据中心提供了可用性和耐久性。

SimpleDB数据库围绕域组织管理,类似于关系表。域包含多个元素,或者键值对集。根据关系表中的行考虑元素,同时键和值分别是属性和属性组件。数据被添加到域中,要求使用基础API或者控制台。

SimpleDB支持简单的选择声明,即任何SQL程序员都能理解。然而也有明显的区别。SimpleDB不支持跨域联合。如果你需要结合多个域的数据,必须查询和结合每一个所使用的定制程序。对于简单的联合并不困难,但是如果你的应用需要支持多个复杂的联合,就要使用MySQL或者PostgreSQL这样的关系型数据库了。二者都可以通过亚马逊的关系型数据库服务获得。

SimpleDB的一个优势就是在一个表中索引所有的元素,这对于允许用户查询任何元素的应用很有用。由于所有的元素都在索引中,通过姓氏、城市、国籍或者邮政编码查询客户表可以很快实现。

用DynamoDB管理大型数据库

亚马逊DynamoDB旨在为要求更高的应用设计,这些应用要求可扩展的数据存储以及更高级的数据管理功能。代替使用硬盘,DynamoDB使用固态硬盘,实现恒定、低延迟的读写时间。旨在扩展大容量同时维持一致的性能,虽然这种性能伴随着更为严格的查询模型。

由于DynamoDB同更大的企业数据库协作,他们可能要求额外的数据管理服务。AWS同弹性MapReduce(EMR_AWS Hadoop服务)和Redshift(其数据仓库服务)集成DynamoDB。使用亚马逊Redshift或者EMR进行大规模特殊查询或者分析,使用DynamoDB基于散列和散列分区值进行更有针对性的查询。你可以使用DynamoDB来避免管理分割域产生的额外费用。DynamoDB没有规模限制,而且可以按需管理数据域。

DynamoDB在主键值上索引,允许二级索引。主索引和二级索引都基于散列或者散列分区键值。取代单一的选择声明,这项服务使用查询和扫描声明。查询声明同主或者二级散列或者刷哪里额分区键值使用。在表中扫描读取每一个元素,提供了更多的灵活性,但是这种操作比查询更慢,尤其是在大型的表中更是如此。你的应用的响应性也部分由此决定。

开发者可以使用DynamoDB Local来构建和测试本地数据库代码,而不是通过实际生产的数据库。DynamoDB和DynamoDB Local API互相兼容,因此代码可以在两种环境中运行。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

作者

Dan Sullivan
Dan Sullivan

Dan Sullivan是一名作家、系统架构师和顾问,拥有超过20年关于先进的分析、系统架构、数据库设计、企业安全、商业智能的IT从业经验。他的从业范围广泛,包括金融服务业、制造业、医药、软件开发、政府、零售、天然气和石油生产、发电、生命科学和教育。

翻译

张培颖
张培颖

云计算网站编辑

相关推荐