问:什么是 Amazon SimpleDB?

Amazon SimpleDB 是高可用性、灵活并且可扩展的非关系数据存储,可以免除数据库管理的工作负担。它提供在中进行数据索引和查询的核心数据库功能。

问:Amazon SimpleDB 可以用来做什么?

Amazon SimpleDB 提供简单的 Web 服务接口,可以创建和存储多个数据集、轻松查询数据,并返回结果。该服务管理基础设施预配置、硬件和软件维护、数据项目复制和索引,以及性能优化。通过该服务,您可以侧重于应用程序部署,并仅按存储数据和发布请求实际使用的资源付费。Amazon SimpleDB 还允许您在多个域中分配工作负载,由此实现扩展。如果您的工作负载超出单个域提供的存储和请求吞吐量,您可以创建更多域并在它们当中分布数据和请求,由此提高吞吐量。通过在多个域中分布数据和请求(因此,机器资源),您可以获得更大的计算资源“表面积”来执行请求和查询。例如,如果您将数据分布到了 10 个域中并且并列执行 10 个查询,将比按顺序针对包含所有数据的单个域执行 10 次查询获得更大的吞吐量。

Amazon SimpleDB 非常灵活,允许您实时更改数据模型(添加或删除属性),而不会造成稳定的架构中断。因此,您可以快速将更改反映到应用程序和业务中,而无需耗资重构架构或执行复杂的架构更新。此外,您还可以选择一致性或最终一致性读取请求,灵活地使读取性能(延迟和吞吐量)与应用程序甚至应用程序内不同部分需求的一致性要求匹配。

使用 Amazon SimpleDB,服务不需要您做的部分同样非常重要。Amazon SimpleDB 可自动管理基础设施预配置、硬件和软件维护、数据项目复制和索引,以及性能优化。

问:Amazon SimpleDB 有哪些技术优势?

Amazon SimpleDB 的主要技术优势就是自动执行,可以在不同地区冗余复制。每次存储数据项目时,将在您选择的地区内不同的数据中心创建多个副本。这样,即使万一出现数据中心故障,也可实现高可用性和数据耐久性。此外,Amazon SimpleDB 还能自动执行数据索引,以实现有效地查询并提供简单的存储和访问 API。最后,开发人员可利用 Amazon 经过证实的计算环境的安全性和可靠性。



问:开发人员可以实现哪些以前无法实现的功能?

过去,Amazon SimpleDB 的可用性和耐久性特征通过需要大规模前期投入的集群关系数据库实现,这种方法带来的复杂程度通常会超过需求,而且通常需要 DBA 进行维护和管理。此外,Amazon SimpleDB 的非关系特征(或通过创建更多域)还可实现低管理的扩展及实时数据模型更改。

问:Amazon DynamoDB 与 Amazon SimpleDB 有何区别?我应该使用哪种服务?

两种服务均属于非关系数据库,无需您管理数据库。Amazon DynamoDB 旨在实现无缝扩展,并提供快速且可预测的性能。它在固态硬盘 (SSD) 上运行,以提供低延迟的响应时间,而且特定表的请求容量或存储大小不受限制。这是因为 Amazon DynamoDB 自动在足够数量的服务器上对您的数据和工作负载进行分区,以满足您的扩展要求。相比之下,Amazon SimpleDB 中的域具有 10GB 的严格存储限制,且请求容量也被限制为在所能达到的范围内(通常低于每秒 25 次写入操作);如果您需要额外扩展,则应自行判断是否管理数据在更多 SimpleDB 表上的分区和再分区。

有关最适合您的解决方案,请参阅在 AWS 上运行数据库,获取更多指导。

问:分别会在什么时候用到 Amazon SimpleDB、Amazon RDS 以及 Amazon EC2 关系数据库 AMI?

AWS 为开发人员提供大量数据库备选项。Amazon SimpleDB 提供简单的索引和查询功能。借助 Amazon RDS,用户可以运行功能全面的关系数据库,同时免除数据库管理工作;而且,通过使用 Amazon EC2 和 Amazon EBS 上的众多关系数据库 AMI 之一,用户还可以在云中操作自己的关系数据库。这些备选项之间存在很大的不同,这使其中的某项可能更符合您的使用案例。

有关最适合您的解决方案,请参阅在 AWS 上运行数据库,获取更多指导。

问:什么时候应该使用 Amazon S3?什么时候又应该使用 Amazon SimpleDB 呢?

Amazon S3 存储原始数据。Amazon SimpleDB 将所有数据视为输入并为所有属性设置索引,使您能够快速查询这些数据。此外,Amazon S3 和 Amazon SimpleDB 使用不同类型的物理存储。Amazon S3 使用了优化的密集存储驱动器,以便经济高效地存储大型数据元。Amazon SimpleDB 可存储小型数据位,并使用了密度稍低的驱动器以优化数据访问速度。

为了优化您使用 AWS 服务的成本,应将大型数据元或文件存储在 Amazon S3 中,而最好将小型数据元素或文件指针(可能指向 Amazon S3 数据元)保存在 Amazon SimpleDB 中。由于各服务之间可紧密集成并且 AWS 环境内的数据传输免费,因此通过在应用程序中集成这两种服务,开发人员既可轻松利用 Amazon SimpleDB 的高速性能和查询功能,又能享受在 Amazon S3 中存储数据的低成本优势。要详细了解配合使用 Amazon SimpleDB 与 Amazon S3 的优势,请关注此链接

问:如何开始使用 Amazon SimpleDB?

如果您已经有了 Amazon Web Services 账户,可以立即登录并开始使用 Amazon SimpleDB。如果您还没有账户,请单击此页面上的“创建 AWS 账户”按钮创建账户。下一步,请查看 Amazon SimpleDB 开发人员指南。接下来,您就可以使用 AWS 开发工具包创建域并开始存储和查询数据。

问:我可以存储哪种类型的数据?

您可以在 Amazon SimpleDB 中存储任何 UTF-8 字符串。请参阅 Amazon Web Services 客户协议以了解详细信息。

问:什么是域?什么是 Amazon SimpleDB 数据模型?

Amazon SimpleDB 数据模型由域、项目、属性和值组成。域是项目的集合,通过属性-值对进行描述。

这些术语可理解为类似于传统电子表格中的对应概念。以下表中显示的客户管理数据库详细信息为例,考虑它们在 Amazon SimpleDB 中的表示方式。整个表就是一个名为“customers”的域。各个客户就是表中的行或域中的项目。联系信息用列标题(属性)来描述。值位于各个单元格中。

客户 ID 街道地址 城市 邮编 电话
123 Bob Smith 123 Main St Springfield MO 65801 222-333-4444
456 James Johnson 456 Front St Seattle WA 98104 333-444-5555

问:我可以存储多少数据?

Amazon SimpleDB 当前支持单个域最高增长到 10 GB。如果您的数据集大于 10 GB,只需利用 Amazon SimpleDB 的扩展架构并将数据分布到多个域中即可。因为 Amazon SimpleDB 在设计时已考虑到并行机制,所以将数据分布到多个域中还可增加写入和读取吞吐量潜力。开始时,最多可为您分配 250 个域;如需增加域,请填写此表

问:我的数据存储在哪里?

Amazon SimpleDB 可在您所指定地区的多个数据中心冗余存储您的数据。当您使用 Amazon SimpleDB 创建域时,可以为域指定地区,以优化延迟、降低费用或达到法律和法规要求。目前有八个地区提供 Amazon SimpleDB:美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、美国西部(加利福尼亚北部)、欧洲(爱尔兰)、亚太地区(新加坡)、亚太地区(东京)、亚太地区(悉尼)和南美洲(圣保罗)地区。

问:我如何确定将数据存储在哪个地区?

需要基于您的特定应用考虑多个因素。您可能希望将数据存储在具备以下条件的地区…

  • …距离您的客户、数据中心或其他 AWS 资源(如 EC2 实例)较近,以便缩短数据访问延迟。
  • …距离其他运营地点很远,以实现地理位置冗余和灾难恢复。
  • …让您能够达到特定法律和法规要求。
  • …让您能够缩短机器小时数和降低存储费用。您可以选择价格较低的地区以节省资金。请参阅 Amazon SimpleDB 详细信息页面上的定价部分。

问:Amazon 如何处理我在 Amazon SimpleDB 中的数据?

Amazon 将存储您的数据,并跟踪其相关使用情况,用于账单用途。除非法律要求,Amazon 不会出于任何目的访问您的数据。请参阅 Amazon Web Services 客户协议以了解详细信息。

问:Amazon 是否将自身数据存储在 Amazon SimpleDB 中?

可以。Amazon 内部的开发人员也将 Amazon SimpleDB 用于众多项目。其中很多项目使用 Amazon SimpleDB 作为授权数据和查询存储,并依赖它执行业务关键型操作。

问:读取一致性是什么意思?我为什么应该予以关注?

Amazon SimpleDB 可存储每个域分散在各地的多个副本,以实现高可用性和数据持久性。成功的写入(使用 PutAttributes、BatchPutAttributes、DeleteAttributes、CreateDomain 或 DeleteDomain)意味着将持久保留每个域的所有副本。读取一致性表示的是某个数据项目的成功写入或更新会在何时、以何种方式反映在该数据项目的后续读取操作(使用 Select 或 GetAttributes)中。Amazon SimpleDB 公布的逻辑使您能够针对应用程序中的每次读取请求,指定您需要的一致性特征。

问:Amazon SimpleDB 提供哪些读取一致性选择?如何权衡这些选择?

Amazon SimpleDB 支持两种读取一致性选择:最终一致性读取和一致性读取。

最终一致性读取(默认)。最终一致性读取选择可使您的读取性能(在延迟和高吞吐量方面)最大化。但是,最终一致性读取(使用 Select 或 GetAttributes)可能不会反映最近完成的一次写入操作(使用 PutAttributes、BatchPutAttributes、DeleteAttributes)的结果。所有数据副本的一致性通常可在一秒钟之内实现;在短时间之后重复读取,应会返回更新的数据。

一致性读取。除了提供最终一致性读取外,Amazon SimpleDB 还使您可以根据应用程序或应用程序某元素的要求,以灵活而有控制力的方式请求一致性读取。一致性读取(在 ConsistentRead=true 条件下使用 Select 或 GetAttributes)返回的结果可反映在读取前收到成功响应的所有写入。

默认情况下,GetAttributes 和 Select 执行最终一致性读取。由于一致性读取可能导致延迟提高和读取吞吐量降低,所以最好仅在以下应用环境下才使用:读取操作绝对需要读取所有在该次读取前收到了成功响应的写入。对于所有其他案例,默认的最终一致性读取将为用户提供最佳的性能。要详细了解 Amazon SimpleDB 的一致性选择,请参阅我们的《Developer Guide》

问:每种读取一致性模型最适合哪些类型的使用案例和应用程序?

前面提到,Amazon SimpleDB 在指定读取一致性要求时提供的灵活性非常重要,因为不同类型的应用程序和使用案例可能有不同的性能和一致性要求。另外请注意,Amazon SimpleDB 允许您为每个单独的读取请求指定一致性设置,所以同一应用程序的不同部分可能采用了不同的一致性设置。下面是关于什么时候最适合使用每种读取一致性选择的一些指南:

最终一致性读取:

对读取性能(延迟和吞吐量)的重视超越强一致性的任何应用程序(或应用程序的一部分)都非常适合最终一致性读取。通常,读取到写入比例高的数据符合此描述。例如,社交网络中的朋友/关注者列表、照片标签和个人详细信息。一般而言,在这些使用案例中,性能(提供答案)比提供最答案更加重要。例如广告网络,在此向用户尽可能快地显示清单中的广告比基于过去一秒内的更新逻辑显示广告更加重要。衡量最终一致性读取是否适合您的应用程序,另一准则是它能否处理用户感知的一致性概念。想像一项应用程序涉及直接的用户交互,而不是编程访问。例如,想像一下更新博客帖子和不停刷新的用户或者向博客发布评论的其他用户。这种等待时间就是我们所指的用户感知的一致性,只要在最终用户看到数据时,它们是一致的,该应用程序即可利用最终一致性。在这些案例下,写入到达数据所有副本所需的时间量小于客户期待新数据可见(例如,刷新页面)的时间延迟。如前面所述,Amazon SimpleDB 通常可在一秒内达到一致性。如果应用程序的最终用户不注意或不介意是否可以在一秒内反映更新,则最终一致性将对一般的读取性能优势有意义。

更新项目时,最终一致性读取可能会返回当前值或旧值。插入项目时,最终一致性读取可能不会返回该项目。

一致性读取:

根据您的应用程序,您可能需要用户读取数据项目,以便从许多并行写入更新中查看最新更新的版本。例如,您可能正在运行数据统计或报告应用程序,在此您无法接受调用 GetAttributes 或执行 Select 查询的结果中不反映最新写入操作的风险。在这种情况下,传送 ConsistentRead = True 参数可提供一致的结果:

另一示例是在 SimpleDB 中存储应用程序内存中状态。由于应用程序的状态值不断变化,所以应用程序可以更新 SimpleDB。如果应用程序关闭并需要重新启动,然后该应用程序可向 SimpleDB 发布一致的 GetAttributes 或 Select 调用,来获取上次更新的应用程序状态。

要详细了解 Amazon SimpleDB 的一致性,请参阅《Amazon SimpleDB Developer Guide》《Consistency Enhancements Whitepaper》

问:Amazon SimpleDB 是否支持事务?

Amazon SimpleDB 不是关系数据库,它舍弃了复杂的事务处理和关系(即:联接),从而提供了独一无二的功能和性能特征。不过,Amazon SimpleDB 还是提供了事务处理语义,例如:

Conditional Puts/Deletes – 如果现有的属性值与您指定的值匹配,允许您插入、替换或删除项目的一个或多个属性值。如果值不匹配或不存在,将会拒绝更新。当不同的来源向同一项目并行写入时,Conditional Puts/Deletes 有助于防止丢失更新。

通过用预期值指定可选条件,Conditional puts/deletes 可借助 PutAttributes 和 DeleteAttributes API 显示出来。例如,如果您的应用程序是针对某项活动预订座位或售票,则您可能仅在指定的座位仍然可用时(可选条件)才允许购买(即:写入更新)。此外,也可以使用这些语义来实施计数器、仅在项目尚不存在时插入项目以及乐观并行控制 (OCC) 等功能。通过保留版本号(或时间戳)属性作为项目的一部分并根据此版本号的值执行 conditional put/delete,应用程序可实施 OCC。

要详细了解 Amazon SimpleDB 的事务语义,请参阅 Amazon SimpleDB Developer Guide

问:Amazon SimpleDB 的费用是多少?

您可以免费试用 Amazon SimpleDB,毫无风险。在免费套餐计划下,您可以免费使用每月消费的前 25 个机器小时和 1 GB 存储。Amazon SimpleDB 让开发人员仅按实际用量付费,没有最低费用。

有关完整的 Amazon SimpleDB 定价,请单击此处

问:可以提供一些收费示例吗?

下面示例是超出以上描述的免费使用级别后,按使用量收费的情况。如上所述,下面是每月免费套餐免费提供的使用量。

机器使用率:
Amazon SimpleDB 将基于完成特定请求(QUERY、GET、PUT 等)使用的机器容量计算每个请求的机器使用率和费用,规格化为大约 2007 1.7 GHz Xeon 处理器的小时容量。 机器使用率由每个请求处理的数据量(属性数、属性长度)决定。检索 256 个属性的 GET 操作使用的资源量高于仅检索 1 个属性的 GET 操作。检查 100,000 个属性的多谓语 QUERY 的费用高于检查 250 个属性的单一谓语查询。

在每个请求的响应消息中,Amazon SimpleDB 均会返回一个名为“Box Usage”的字段。Box Usage 用于衡量每个请求耗用的机器资源量。它不含带宽或存储。在报告时,Box usage 将作为完成特定请求所需机器小时数的一部分。在美国东部(弗吉尼亚北部)和美国西部(俄勒冈)地区,单个请求的费用为 Box Usage(以小时数表示)* 每 Amazon SimpleDB 机器小时 0.14 USD。所有请求的费用为 Box Usage(以小时数表示)的总和 * 0.14 USD。

例如,如果在一个月内,您请求的 Box Usage 总和使用了相当于一台 1.7 GHz Xeon 处理器 9 小时,则您的费用为:

9 小时 * 每 Amazon SimpleDB 机器小时 0.14 USD = 1.26 USD。

如果您的查询域位于欧洲(爱尔兰)地区、亚太地区(新加坡)地区、亚太地区(悉尼)地区或美国西部(加利福尼亚北部)地区,Amazon SimpleDB 机器小时的定价将为每机器小时 0.154 USD。如果您的查询域位于亚太地区(东京),则 Amazon SimpleDB 机器小时的定价为每机器小时 0.162 USD。如果您的查询域位于南美洲(圣保罗)地区,则 Amazon SimpleDB 机器小时的定价为每 Amazon SimpleDB 机器小时 0.19 USD。所有费用计算应适当调整,以反映相关地区的定价。

数据传输示例:

在美国东部(弗吉尼亚北部)地区,3 月份,您每天从 Amazon SimpleDB 传出 500 MB 数据。

当月传出数据的总费用 = 500 MB x (1 GB / 1,024 MB) x 31 天 = 15.14 GB

总费用= 15.14 GB x (0.12 USD/GB) = 1.82 USD

存储
预测结构化数据存储的最好方法如下所示:

所有项目 ID 的原始字节大小 (GB) + 每个项目 45 字节 + 所有属性名称的原始字节大小 (GB) + 每个属性名称 45 字节 + 所有属性-值对的原始字节大小 (GB) + 每个属性-值对 45 字节

要估算美国东部(弗吉尼亚北部)地区或美国西部(俄勒冈)地区的每月存储费用,请用得出的大小(以 GB 为单位)乘以 0.25 USD。在欧洲(爱尔兰)地区、亚太地区(新加坡)地区、亚太地区(悉尼)地区或美国西部(加利福尼亚北部)地区,请用得出的大小(以 GB 为单位)乘以 0.275 USD。在亚太地区(东京)地区,请用得出的大小(以 GB 为单位)乘以 0.29 USD。在南美洲(圣保罗)地区,请用得出的大小(以 GB 为单位)乘以 0.34 USD。

问:为什么价格因我选择的 Amazon SimpleDB 地区而异?

当我们的成本较低时,我们的收费也比较低。例如,我们在弗吉尼亚北部地区的成本低于加利福尼亚北部地区的成本。同理,我们在新加坡地区的带宽成本高于加利福尼亚北部地区的成本。

问:Amazon SimpleDB 的使用如何收费和记账?

开始使用服务时,没有安装费,用户无需对服务的使用签订任何长期使用期限合约。每个月底将自动从您的信用卡收取当月使用费。您可以随时在 AWS 网站上查看当前账单期的费用,只需登录您的 Amazon Web Services 账户,并单击“您的 Web 服务账户”下的“账户活动”。

问:Amazon SimpleDB 数据是如何组织的?

您可以将结构化数据组织到域中,并对特定域中存储的所有数据运行查询。域由项目组成,而项目用属性-值对描述。要了解这些元素,可以借代考虑电子表格中存储的数据。一个 Amazon SimpleDB 域就像是一个电子表格,项目是数据的行,属性是列标题,而值就是每个单元格中输入的数据。

但是,与电子表格不同的是,Amazon SimpleDB 每个单元格关联多个值(例如,对于项目“123”,属性“color”可以是“blue”值和“red”值)。此外,在 Amazon SimpleDB 中,每个项目可以有其唯一的关联属性集(例如,项目“123”可以包含属性“description”和“color”,而项目“789”可以包含属性“description”、“color”和“material”)。Amazon SimpleDB 将自动建立数据索引,使用户能够快速找到他们所需的信息。如果稍后加入新的数据,无需预先定义架构或更改架构。

问:我如何与 Amazon SimpleDB 交互?

Amazon SimpleDB 提供基于标准的简单 REST Web 服务接口,此接口可以配合任何互联网开发工具包使用。我们特意对这些操作进行了简化,以便简化添加新的服务接口的流程,并方便您随时添加自定义功能层。有关更多详情,您可以单击此处

问:我的数据的安全性如何?

Amazon SimpleDB 采用经过验证的加密方法对用户进行身份验证。只有您才能使用个人的数据。如果想要增强安全性,您可以在将数据存入 Amazon SimpleDB 前对其加密。如果选择加密数据,请注意 SimpleDB 直接针对您存储的字符串执行查询,而不会为您解码。

问:Amazon SimpleDB 是否可以与 AWS Identity and Access Management 集成?

是,通过与 AWS 注册的 AWS Identity and Access Management 集成,SimpleDB 可以创建多个用户并向各个用户分配 SimpleDB API 级权限,以访问母账户拥有的各种 SimpleDB 域。

问:与 AWS Identity and Access Management 集成可以解决哪些客户案例?

通过与 AWS Identity and Access Management 集成,Amazon SimpleDB 用户现在可以处理以下常见场景:利用相应的权限安全地在组织内外分享域

  • 只读域、读/写域、只写域
  • SimpleDB API 级权限
  • 将 SimpleDB 访问权限限制为一定范围内的 IP 地址
  • 限制 SimpleDB 访问的日期/时间。

问:如何将 AWS Identity and Access Management 用于 Amazon SimpleDB?

使用 AWS Identity and Access Management Service API 可以启用 SimpleDB 权限。SimpleDB 中没有可以使用此功能的 API。例如,您可以使用 AWS Identity and Access Management API CreateUser 通过所需的访问密钥创建一个 User。然后,您可以使用所需的权限和条件制定 AWS 策略,并使用 AWS Identity and Access Management PutPolicy API 将该策略与 User 关联起来。此策略将确保 User 具有正确级别的特权。现在,User 即可使用自己的密钥调用 SimpleDB 来访问 AWS 账户资源。当 SimpleDB 收到调用后,它将获取与 AWS Identity and Access Management 服务关联的策略,并根据权限授权或拒绝 User。

问:我是否可以使用 AWS Identity and Access Management 与组织之外的用户共享我的 SimpleDB 域?

不能直接共享。SimpleDB 域只能在单个 AWS 账户内共享。不过,您可以使用访问密钥创建一个 User,以此与外部合作伙伴或组织进行共享。

问:在哪里可以详细了解 AWS Identity and Access Management?

有关完整的详细信息,请访问 AWS Identity and Access Management 产品页面

问:Amazon SimpleDB 的可靠性如何?

该服务在 Amazon 高可用性的数据中心内运行,可提供强大、一致的性能。为防止数据丢失或不可用,您的完全索引的数据都将在多个服务器和数据中心冗余存储。所有 Amazon SimpleDB 地区内都一样可靠。

问:如果来自我的应用程序的流量突然达到峰值,会出现什么情况?

Amazon SimpleDB 从一开始就将处理来自任何互联网应用程序的高流量作为设计目标。按用量付费的定价以及无限制的容量,可以确保您的递增费用不会变化,而且您的服务也不会中断。Amazon SimpleDB 的规模使得我们能够均衡地分布负载,任何应用程序都不会受到流量峰值的影响。

问:我不在美国,如何使用 Amazon SimpleDB?

任何人都可以使用 Amazon SimpleDB。您只需要决定希望 Amazon SimpleDB 将您的数据存储在哪个地区。

问:你们的价格包括税费吗?

除非另行说明,否则我们的价格不包括适用的税费和税收(包括增值税和适用销售税)。使用日本账单地址的客户若使用亚太地区 (东京),则需承担日本消费税。了解更多