代码之家  ›  专栏  ›  技术社区  ›  stepanian

在aws中存储非常大的字符串数组

  •  0
  • stepanian  · 技术社区  · 6 年前

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

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

    我看了一下:

    1. rds(mysql)-对于一个表(数百万条记录)来说,这可能是过度的,而且可能会变得非常大。
    2. dynamodb—这是为键/值对设计的,但是我对每条记录只有一个值。而且,更重要的是,在dynamodb中检索大量记录似乎是一个问题,因为扫描操作需要分页,而且在容量单位等方面也可能很昂贵。
    3. 单一的s3文件-这可能是一个实用的解决方案,除了我可能需要同时写入(追加)文件,而且这不是s3中可用的特性。而且,很难强制元素的唯一性
    4. documentdb-这似乎太贵了,而且为此目的太过分了
    5. Elasticache—我对此没有太多经验,我想知道它是否适合我的需求,以及定期备份是否可行。这也使用键/值对,不建议同时读取数百万条记录(整个数据)

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

    更新:

    我不知道人们为什么投票来结束这一切。这绝对是一个与编程相关的问题,我已经得到了非常有用的答案和评论,这将帮助我和希望其他人在未来。为什么会有这么一个痴迷于固执己见地关闭有用的帖子呢?

    0 回复  |  直到 6 年前
        1
  •  2
  •   Milan Cermak    6 年前

    迪纳莫德可能是个不错的人选。

    你的“钥匙”没有任何“价值”并不重要。只需使用字符串作为主键。这也将加强独特性。

    你得到 on-demand continuous 备份。我没有这方面的经验,所以我只能指给你看文件。

    全面检索数据可能是最大的麻烦。不建议使用dynamodb进行全表扫描;它可能会变得很昂贵。有一种方法可以使用数据管道 to do an export (我也没用过)。或者,你可以自己组装一个系统,利用dynamodb streams ,例如,您可以将流推送到kinisis,然后推送到s3。