Dynamo Db vs Elastic Search

hat*_*lla 13 elasticsearch amazon-dynamodb

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

有人可以告诉我Dynamo Db对弹性搜索的一些优点.

请提出你的建议.

pra*_*upd 14

我使用了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大小的docs/10K读取

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

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

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

基本上,

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

我还考虑调查MongoDB与DynamoDB,因为MongoDB是开源的,具有Atomicity中除A以外的所有功能,并且也受AWS支持.

  • “没有原子写入”介于误导和错误之间。[部分更新](https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-updates.html)可能比您预期的要复杂一些,但在大多数情况下都是可能的。我也发现结论有些出乎意料:Elasticsearch和DynamoDB的优缺点-使用MongoDB。 (3认同)
  • @xeraa不知道我的英语是不是很糟糕:)我并不是说要完全使用MongoDB,我只是说我也将考虑同时使用MongoDB,这也是一个文档存储库,几乎包含了Dynamodb的所有功能,但是没有像亚马逊那样锁定供应商。我还要说的是进行吞吐量测试/如果数据存储符合您要查找的文档大小标准,并且要选择最适合的安全性。感谢您在Elasticsearch中指出“无原子写入”,因为我的回答是错误的。我本应该原子性而不是原子性的,对不起。再次感谢您指出:) (2认同)