2017-06-05 112 views
3

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

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

请给出您的建议。

回答

3

我已经使用elasticsearch和MongoDB,但没有太多的Dynamodb。 MongoDB在索引和强一致性方面效果很好。

我对弹性搜索和DynamoDB知之甚少;

elasticsearch 是一个搜索引擎,在那里你可以通过任何条款,或根据某些标准汇总记录搜索,但它也可以作为一个文件店,虽然不是主要目的。对于更少的写入和更多的读取来说绝对是好事

一些elasticsearch优势每个文档的

elasticsearch弊

  • 没有原子性(以酸)在多个文件之间

  • 你可能要检查安全选项,我用它也许第3版上一次,没有好的选择

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

优势

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

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

但有一些限制

  • 只支持最多40K经常为1KB大小的文件/每桌秒=这将是400经常为100K大小的文档/秒(在美国东部区域)

    仅支持10K在其他区域中写入为1KB尺寸文档/每表

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

    只支持10K在其他地区每桌读取4KB大小的文档/

    所以计算基于你的吞吐量你平均文档大小,请参阅DynamoDB适合

  • dynamodb中的最大文档/项大小为400KB(如果文档大小超过400KB,引用s3可能会诀窍,但仍取决于您是否真的想要走这条路线)/ MongoDB可能是替代which allows upto 16M of document

  • 你只能在一个请求获取来自DynamoDB文件1000 KB

所以,基本上,

  • 所需的吞吐量,
  • ACID顺从性(DynamoDB +1),
  • 每个文件的大小(elasticsearch +1,MongoDB +1)和
  • secu可能是决定性因素。

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

+0

“没有原子写道”介于误导和错误之间。 [部分更新](https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-updates.html)可能比您期望的更复杂一些,但在大多数情况下可能会有所变化。此外,我发现结论有点意外:Elasticsearch和DynamoDB的优缺点 - 使用MongoDB。 – xeraa

+0

AWS提供流式Dynamodb数据一键式配置到elasticsearch集群。 Disadvabtage的这个功能是,弹性搜索没有锁定到vpc –

+0

@xeraa不知道我的英语是那么糟:)我并不是说要使用MongoDB,我只是说我也会考虑调查MongoDB以及这是一个文档存储,几乎所有Dynamodb都有,但没有像亚马逊那样锁定供应商。我也在说吞吐量测试/如果数据存储满足您正在查找的文档大小标准以及安全性以选择最适合的文档大小标准。感谢您在elasticsearch中指出“没有原子写入”,因为我的回答是错误的。我原本应该是Atomicity而不是Atomic,对不起。再次感谢指出:) – prayagupd