AWS S3上的AWS dynamodb

时间:2016-06-17 11:55:51

标签: database amazon-web-services amazon-s3 amazon-dynamodb

我是AWS新手,需要决定在AWS dynamo db或AWS S3之间做出选择。

我有一个用例,我需要从数据源中获取多个项目并更新项目并放回数据源。我搜索过,发现我们无法在S3中执行多次获取。

任何建议都会有所帮助!!

11 个答案:

答案 0 :(得分:4)

我使用了Dynamodb和S3。 这取决于您的应用程序和数据类型,如果您打算将其用于实时应用程序,我会建议使用Dynamodb。与s3相比,dynamodb的延迟很好,您可以根据您的密钥更新数据。如果你要更新图像或某种文件,你可以使用s3,你可以用s3节省一些钱。

答案 1 :(得分:2)

AWS Dynamodb和S3有不同的用途。

Dynamodb - 适用于存储结构化或半结构化数据。它的存储大小有限(记录应小于400KB)但具有非常高的访问速度(单位数毫秒)

S3 - 适合存储文件。可以使用REST API通过http读取文件。它允许以合理的访问速度存储非常大的文件(最多5 TB)。

对于某些要求,两种服务可以一起使用。 例如 如果您需要存储包含个人资料图像的用户个人资料,您可以将图像上传到S3并将该链接存储在dynamodb中的用户个人资料表中作为属性。

答案 2 :(得分:2)

虽然我理解,您想要进行CRUD操作(创建,读取,更新和删除) - 了解以下因素以确定S3或dynamoDB是否适合您的用例至关重要。 [1]数据结构 - >您是将整个对象存储为文档还是数据元组? [2]数据的演变 - >您的数据更新频率如何? [3]并发 - >一次有多少并发读写?有多少客户端会读写数据存储? [4]可伸缩性 - >你的用例涉及数十亿个需要在亚秒响应时间内检索的对象吗?

AWS S3是一种可扩展的存储服务,不仅有助于将数据存储在安全的存储设备中。组织方式,但也有助于通过其他存储类(如IA和冰川)以经济高效的方式管理其生命周期。

AWS DynamoDB是一种NOSQL存储服务,可根据您的需要为您提供高并发读/写(可以配置),并且您只需为这些读/写付费。小学和初级辅助(本地或全局)索引,可以获得高度分布的集群模式,用于亚秒级响应查询。

在某些方面,您还可以通过面向在这些存储服务中分配计算需求的Lambda服务来同时使用S3和DynamoDB。希望它有所帮助!

答案 3 :(得分:1)

AWS S3是对象存储,能够存储大小达5 TB的超大对象。 DynamoDB是一个NOSQL数据库,可用作键值或文档存储。
如果您尝试将S3用作键值存储 - 文件的列表/版本控制将非常昂贵,您无法更新文件(仅替换它),无索引/搜索/事务/查询API。 如果您尝试将DynamoDB用作文件目录 - 项目的大小限制(400KB),则读/写限制。

答案 4 :(得分:0)

我实际上做了类似的实验,我会说DynamoDB是最好的选择,因为它的读写速度比S3快。

答案 5 :(得分:0)

如果您计划定期更新项目,那么最好使用DynamoDB。 DynamoDB将能够比S3更快地更新和删除记录。如果您的存储桶损坏或删除,S3会为您的文件提供许多功能(备份)。但是,更新和删除在S3中可见需要一些时间。因此,如果定期更新S3存储桶,那么您将面临客户看到无意识的信息的风险。如果您想要一种简单的方法来上传文件并下载它们而只需要删除和更新,或者不关心用户是否看到旧数据,那么只能使用S3。总结:在S3中写入和读取是即时的。更新和删除需要时间在设施之间传播。

答案 6 :(得分:0)

Dynamodb非常快,您可以期待可预测的性能。如果您的要求是以性能为导向,那么请选择dynamodb。您还可以根据需要查询/扫描数据。

如果您需要更多存储空间并通过REST读取文件,请转到S3。 S3比dynamodb便宜。您还可以为不经常访问的文件设置生命周期策略。

答案 7 :(得分:0)

对于您所描述的用例,请使用DynamoDB。

但是有一个例外。

DynamoDB中的最大项目大小为400 KB。因此,如果项目大于400KB,建议将部分信息存储在S3上,并添加一个属性,以引用s3项目到您的dynamodb条目。 对于并发更新,您可以使用条件更新或应用计数器。

答案 8 :(得分:0)

我建议您使用DynamoDb而不是S3,如果您使用正确的密钥(分区键或索引)搜索来自dynamodb的数据,则Dynamodb会像键盘一样处理键值对,然后搜索将非常快,否则Dynamo将扫描完整的如果表中的数据处于高容量或预配置读取容量较低,您可能还会面临预配置的吞吐量异常。

1读取容量意味着每秒4KB数据获取,而当表中的数据非常高时,需要扫描数据高预配置率。

请以数据应完全索引的方式使用dynamo意味着您必须使用分区和范围键搜索数据,以便可以避免扫描。

每次读写throghput几美元。

答案 9 :(得分:0)

Amazon S3是一个能够存储非常大的对象的对象存储。 S3通常用于存储图像,日志等文件。DynamoDBNoSQL数据库,可用作键值(架构少记录)商店。对于简单的数据存储,S3是最便宜的服务。 DynamoDB具有更好的性能,更低的成本以及更高的可扩展性和可用性。

答案 10 :(得分:0)

Dynamodb适用于元数据,当您基于密钥进行内部搜索时,它非常快,因为它使用散列来查找集合中的项目(表)。但其读写操作依赖于配置吞吐量。 1读取吞吐量意味着您可以每秒读取4Kb数据,1个写入吞吐量意味着您可以每秒写入1Kb数据。吞吐量越大,成本就越高。

因此,我建议您使用Dynamodb,以防万一您根据密钥查询数据,而不是根据密钥扫描数据(您将获得吞吐量异常)。

S3是基于对象的存储,如磁盘而不是数据库,数据将存在于桶中,您可以搜索但在更新后读取在S3中总是非常慢。