Dynamo Db vs Elastic Search

时间:2017-06-05 08:34:31

标签: elasticsearch amazon-dynamodb

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

有人能告诉我Dynamo Db对弹性搜索的一些优点。

请提出您的建议。

1 个答案:

答案 0 :(得分:12)

我使用了elasticsearch和MongoDB但没有使用Dynamodb。 MongoDB在索引和强一致性方面非常有效。

我对elasticsearch和DynamoDB的了解很少;

<强> elasticsearch 是一个搜索引擎,您可以在其中搜索任何条款,或根据特定条件汇总记录,但它也可以作为文档存储,但不是主要目的。对于更少的写入和更多的读取来说绝对是好的。

一些弹性研究优势

弹性搜索缺点

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

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

另一方面,

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

<强>优点

  

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

     

当您请求强一致性读取时,DynamoDB会返回一个   响应最新数据,反映来自的更新   所有先前的写操作都是成功的。非常一致   如果出现网络延迟或中断,可能无法读取。

但有一些限制

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

    仅支持1KB大小的docs /其他区域中每个表的10K写入

  • 每张桌子最大40K读取4KB大小的文件/秒(在美国东部地区)

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

    因此,请根据平均文档大小计算吞吐量,并参阅

  • 中的DynamoDB
  • dynamodb中的最大文档/项目大小为400KB(如果文档大小超过400KB,则可以引用s3,但仍然取决于您是否真的想要使用该路径)/ MongoDB可能是替代{ {3}}

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

所以,基本上,

  • 期望的吞吐量,
  • ACID-compliancy(DynamoDB +1),
  • 每个文档大小(elasticsearch +1,MongoDB +1)和
  • 安全可能是决定因素。

我还会考虑调查MongoDB与DynamoDB,因为MongoDB是开源的,具有除原子性A以外的所有功能,并且也是which allows upto 16M of document