9

我的 Web 应用程序需要对可以存储为键值对的小型数据块 (<10KB) 进行极低延迟的读取/写入。我正在考虑使用 DynamoDB(使用 DAX)和 EFS 和 ElastiCache。AWS 声称它们都提供低延迟,但我找不到任何正面对比,而且我也不清楚这三个是否在同一个联盟中。有人可以分享任何见解吗?

4

1 回答 1

18

您正在尝试比较具有不同定价模型的不同用例的不同存储系统。

EFS 是一种文件系统,您无需为其配置存储设备,并且可以从多个 EC2 实例进行访问。EFS 可能适用于您的用例,但您需要管理文件。这意味着您将需要构建数据以适应文件。或者,您可能需要根据所需的结构和检索级别构建键值或 blob/对象存储系统。有一些产品可以为您解决这个问题,例如 S3、DynamoDB、Elasticache Redis 或 Memcached。

S3是一个blob存储,没有结构,没有数据类型,item不能更新只能替换。您只能通过列出存储桶中的 blob 来进行查询。它通常用于存储静态媒体文件。

DynamoDB 是一种非关系型(也称为 No-SQL)数据库,可用作文档或键值存储,其中数据是结构化的、强类型的并具有查询功能。最多可存储 400KB 的项目。

Elasticache(Redis 或 Memcached)是键值存储,通常用作持久数据存储(如 DynamoDB)前面的缓存。在这种情况下,应用程序需要了解不同的层;管理不同的 API 并处理应用程序中的缓存逻辑。

使用 DAX,您可以无缝集成缓存层,而无需在应用程序中使用缓存逻辑。DAX 当前为 DynamoDB 提供直写式缓存。DAX API 与 DynamoDB API 兼容,如果您的应用程序已经使用 DynamoDB,则可以通过将 DynamoDB 客户端替换为 DAX 客户端来无缝添加缓存层。请记住,DAX 目前仅支持 Java、Node.js、Go、.NET 和 Python 客户端。

所以这真的取决于你的工作量。如果您需要亚毫秒级延迟,而无需为管理缓存层而头疼,并且您的应用程序是 Java、Node.js、Go、.NET 或 Python,那么 DAX 适合您。

于 2017-10-06T17:24:24.283 回答