Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

从 SQL 到 NoSQL

如果您是应用程序开发人员,则可能在使用关系数据库管理系统 (RDBMS) 和结构化查询语言 (SQL) 方面有一些经验。在您开始使用 Amazon DynamoDB 时,您既会遇到许多相似之处,也会遇到许多不同之处。本节介绍常见数据库任务,并将 SQL 语句与其等效 DynamoDB 操作进行比较和对比。

NoSQL 是一个术语,用于描述高度可用的、可扩展的并且已针对高性能进行优化的非关系数据库系统。有别于关系模型,NoSQL 数据库 (如 DynamoDB) 使用替代模型进行数据管理,例如键-值对或文档存储。有关更多信息,请参阅 http://aws.amazon.com/nosql

注意

本节中的 SQL 示例可与 MySQL 关系数据库管理系统兼容。

本节中的 DynamoDB 示例显示 DynamoDB 操作的名称以及该操作的参数 (采用 JSON 格式)。有关使用这些操作的代码示例,请参阅 DynamoDB 入门

SQL 还是 NoSQL?

如今,应用程序的要求比以往更严苛。例如,在线游戏一开始时只有几个用户和极少数据。但是,如果游戏获得成功,则可以轻松超过基础数据库管理系统的资源。基于 Web 的应用程序拥有数百、数千或数百万并发用户,并且每天生成数 TB 或更多新数据,这并不少见。此类应用程序的数据库必须每秒处理数万或数十万次读取和写入。

Amazon DynamoDB 非常适合这些类型的工作负载。作为开发人员,您首先可以使用少量预置的吞吐量,并随着应用程序变得越来越受欢迎而逐渐增加该吞吐量。DynamoDB 将无缝扩展以处理大量数据和大量用户。

下表显示了关系数据库管理系统 (RDBMS) 和 DynamoDB 之间的一些高级区别:

性能 关系数据库管理系统 (RDBMS) Amazon DynamoDB
最佳工作负载 临时查询;数据仓库;OLAP (联机分析处理)。 Web 规模级应用程序,包括社交网络、游戏、媒体共享和 IoT (物联网)。
数据模型 关系模型需要一个明确定义的架构,其中,数据将标准化为表、列和行。此外,在表、列、索引和其他数据库元素之间定义所有关系。 DynamoDB 没有架构。每个表必须具有一个用来唯一标识每个数据项目的主键,但对其他非键属性没有类似的约束。DynamoDB 可以管理结构化或半结构化的数据,包括 JSON 文档。
数据访问 SQL (结构化查询语言) 是存储和检索数据的标准。关系数据库提供一组丰富的工具来简化数据库驱动型应用程序的开发,但所有这些工具都使用 SQL。 您可以使用 AWS 管理控制台或 AWS CLI 来操作 DynamoDB 并执行临时任务。应用程序可以利用 AWS 开发工具包 (SDK),通过基于对象的、以文档为中心的或低级别的接口来操作 DynamoDB。
性能 关系数据库已针对存储进行优化,因此,性能通常取决于磁盘子系统。开发人员和数据库管理员必须优化查询、索引和表结构以实现最高性能。 DynamoDB 已针对计算进行优化,因此,性能主要取决于基础硬件和网络延迟。作为一项托管服务,DynamoDB 可使您和您的应用程序免受这些实施详细信息的影响,以便您能够专注于设计和构建可靠的、高性能的应用程序。
扩展 利用更快的硬件进行向上扩展是最轻松的。此外,数据库表可以跨越分布式系统中的多个主机,只不过这需要额外的投资。关系数据库设定了文件数和文件大小的最大值,这将对可扩展性施加上限。 DynamoDB 设计为使用硬件的分布式集群来向外扩展。此设计可提高吞吐量而不会增加延迟。客户指定其吞吐量要求,DynamoDB 会分配足够的资源来满足这些要求。对于每个表的项目数和表的总大小都不施加上限。

本页内容: