【问题标题】:Dynamo Db vs Elastic Search [closed]Dynamodb 与 Elasticsearch [关闭]
【发布时间】:2017-06-07 08:29:27
【问题描述】:

我刚刚阅读了弹性搜索,发现它可以索引文档中的每个术语以及所有字段。虽然它有一些缺点,比如它不能提供事务等。但是对于我只需要从 DB 中读取数据而没有写入的应用程序,使用 Dynamo Db 代替 Elastic Search 有什么好处。早些时候,我想使用 Dynamo Db,但现在看到它为每个字段编制索引后,为什么不使用 Elastic Search 本身。到目前为止,为我的项目定义的唯一用例是按 id 搜索。但是将来会有更多用例出现,那么在 Dynamo Db 中添加更多索引将非常困难,但在 Elastic Search 中已经存在。

谁能告诉我 Dynamo Db 相对于 Elastic Search 的一些优势。

请提出您的建议。

【问题讨论】:

    标签: elasticsearch amazon-dynamodb


    【解决方案1】:

    我使用过 elasticsearch 和 MongoDB,但没有使用过多的 Dynamodb。 MongoDB 在索引和强一致性方面运行良好。

    我对 elasticsearch 和 DynamoDB 知之甚少;

    弹性搜索 是一个搜索引擎,您可以在其中按任何术语搜索,或根据某些条件汇总记录,但它也可用作文档存储,尽管不是主要目的。而且绝对适合少写多读。

    弹性搜索的一些优势

    elasticsearch 的缺点

    • 在多个文档之间没有原子性(ACID 中的 A)

    • 您可能要检查安全选项,我上次使用它可能是版本 3,没有好的选项

    另一方面,

    Dynamodb 是一个数据存储(技术上称为文档存储/亚马逊版本的 MongoDB)。

    优势

    当文档写入 DynamoDB 表并收到 HTTP 200 响应,文档的所有副本都会更新。该文件将 最终在所有存储位置之间保持一致,通常在 一秒或更短。

    当您请求强一致性读取时,DynamoDB 会返回一个 以最新数据响应,反映来自 所有先前成功的写入操作。强烈一致的 在网络延迟或中断的情况下可能无法读取。

    但有一些限制

    • 对于 1KB 大小的文档/秒,每个表仅支持最多 40K 写入 = 对于 100K 大小的文档/秒(在美国东部地区),这将是 400 次写入

      在其他地区仅支持 1KB 大小的文档/每个表的 10K 写入

    • 每个表每秒最多读取 4KB 大小的文档(在美国东部地区)

      在其他地区仅支持 4KB 大小的文档/表的 10K 读取

      因此,请根据您的平均文档大小计算您的吞吐量并查看 DynamoDB 是否适合

    • dynamodb 中的最大文档/项目大小为 400KB(如果文档大小超过 400KB,则参考 s3 可能会解决问题,但仍然取决于您是否真的想走这条路)/ MongoDB 可能是替代品@ 987654329@.

    • 您只能在一个请求中从 DynamoDB 中获取 1000 KB 个文档

    所以,基本上,

    • 所需的吞吐量,
    • ACID 合规性 (DynamoDB +1),
    • 每个文档大小(elasticsearch +1,MongoDB +1)和
    • 安全性可能是决定因素。

    我还会考虑研究 MongoDB 与 DynamoDB,因为 MongoDB 是开源的,具有原子性中 A 以外的所有功能,并且也是 supported by AWS

    【讨论】:

    • “没有原子写入”介于误导和错误之间。 Partial updates 可能比您预期的要复杂一些,但在大多数情况下都是可能的。另外我觉得这个结论有点出人意料:Elasticsearch 和 DynamoDB 的优缺点——使用 MongoDB。
    • AWS 提供一键配置流式 Dynamodb 数据到 elasticsearch 集群。此功能的缺点是弹性搜索未锁定到 vpc
    • @xeraa 不知道我的英语有那么差:) 我根本不是说要使用 MongoDB,我只是说我也会考虑研究 MongoDB,它是一个文档存储几乎所有 Dynamodb 都有,但没有像亚马逊那样锁定供应商。我还说要进行吞吐量测试/如果数据存储符合您正在寻找的文档大小标准以及选择最适合的安全性标准。感谢您在弹性搜索中指出“没有原子写入”,因为我的回答是错误的。我应该是原子性而不是原子性,抱歉。再次感谢您指出这一点:)
    • 补充一点,DynamoDB 现在具有按需配置,每次操作的价格比预配置的要高,但是您只需为您使用的东西付费 - 恕我直言,最适合 POC 或当您不确定什么时将是负载。
    • 是否已更新以匹配 AWS 支持的 ElasticSearch 资源?
    猜你喜欢
    • 2013-07-29
    • 1970-01-01
    • 2012-06-02
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多