在AWS中存储大量字符串

时间:2019-02-15 21:28:33

标签: amazon-web-services

我想在AWS中存储大量字符串以供我的应用程序使用。要求如下:

  1. 在正常操作期间,字符串元素将添加到数组中,并且数组大小将继续增长
  2. 我需要强制执行唯一性-即同一字符串不能存储两次
  3. 我将不得不定期检索整个数组-最有可能将其放入文件中并从应用程序中使用它
  4. 我需要备份数据(或者至少要确信功能中包含一个良好的内置备份系统)

我查看了以下内容:

  1. RDS(MySQL)-对于单个表(数百万条记录),这可能会过大,而且可能会变得不舒服。
  2. DynamoDB-用于键/值对,但每个记录只有一个值。而且,更重要的是,在DynamoDB中检索大量记录似乎是一个问题,因为扫描操作需要分页,并且在容量单位等方面也可能很昂贵。
  3. 单个S3文件-这可能是一个实际的解决方案,除了我可能需要同时写入文件(追加),并且这不是S3中提供的功能。而且,很难强制元素唯一性
  4. DocumentDB-为此目的,这似乎太昂贵了,太过夸张了
  5. ElastiCache-我对此没有太多经验,想知道这是否可以很好地满足我的要求,并且定期进行备份是否可行。这也使用键/值对,建议不要同时读取数百万条记录(整个数据)

任何见解或建议都会有所帮助。

更新:

我不知道为什么人们投票关闭它。这绝对是一个与编程相关的问题,我已经获得了非常有用的答案和评论,它们将对我以及将来对其他人有帮助。为什么对SO的有用职位实行自以为是的痴迷呢?

1 个答案:

答案 0 :(得分:2)

DynamoDB可能很合适。

您的“键”没有任何“值”没关系。只需使用字符串作为主键即可。这还将强制唯一性。

您将获得on-demandcontinuous的备份。我没有这些方面的经验,因此只能将您指向文档。

完全检索数据可能是最大的麻烦。不建议对DynamoDB执行全表扫描。它会变得昂贵。有一种方法可以使用数据管道to do an export(我也没有使用过)。另外,您可以自己使用DynamoDB streams(例如您可以将视频流推送到Kinesis,然后推送到S3。