迪纳摩Db与弹性搜索
我刚刚阅读了关于弹性搜索的内容,发现它对文档中的每个术语以及所有字段进行索引。 虽然它有一些缺点,例如无法提供事务处理等。但对于只需从DB读取数据并且没有写入的应用程序,使用Dynamo Db而不是Elastic Search有什么优势。 早些时候,我想使用Dynamo Db,但现在看到它为每个字段编制索引之后,为什么不使用Elastic Search本身。 到目前为止,为我的项目定义的唯一用例是通过一个id进行搜索。 但是将来会出现更多用例,那么在Dynamo Db中添加更多索引将非常困难,但在Elastic Search中已经存在。
有人能告诉我Dynamo Db对Elastic Search的一些优势吗?
请给出你的建议。
我已经使用elasticsearch和MongoDB,但没有太多的Dynamodb。 MongoDB在索引和强一致性方面效果很好。
我对弹性搜索和DynamoDB知之甚少;
elasticsearch是一个搜索引擎,您可以通过任何条件进行搜索,或者根据特定标准汇总记录,但它也可以作为文档存储,但不是主要目的。 对于更少的写入和更多的读取来说绝对是好事
一些elasticsearch的优点
它允许的每个文档的最大大小在lucene级别为2G - > 2G
您可以让分区(称为Shards)默认分配基于_id
字段的文档
支持强大的一致性 - 可配置
支持在每个文档上使用版本控制的原子写入。
仅支持文档级原子性
您可以根据标准聚合文档 - 基于JSON的查询
elasticsearch的缺点
在多个文档之间没有原子性(A在ACID中)
你可能想检查安全选项,上次我使用它可能是版本3,没有很好的选择
另一方面, Dynamodb是一个数据存储(技术上称为文档存储/ Amazon的MongoDB版本)。
优点
完全由AWS管理,因为您不必担心服务器故障等。
由Amazon IAM角色保护
您可以使用分区(称为碎片)根据每个文档上的主键来分发文档
支持多项/文档级原子性(A中的A)
支持原子写入 - https://github.com/awslabs/dynamodb-transactions锁定每个文档的属性,它指向当前的transactionId
支持最终一致性和一致性强读取:
将文档写入DynamoDB表并收到HTTP 200响应时,会更新文档的所有副本。 该文件最终将在所有存储位置保持一致,通常在一秒钟或更短时间内。
当您请求强一致性读取时,DynamoDB会返回包含最新数据的响应,反映所有之前成功执行的写入操作的更新。 在网络延迟或中断的情况下,可能无法获得高度一致的读取。
但是有一些限制 ,
仅支持1KB大小的文档/每个表格的最大40K写入数=对于100K大小的文档数/秒(在美国东部地区)
在其他地区只支持10K写入1KB大小的文档/每张表
最大40K读取每张4KB大小的文件/秒(在美国东部地区)
在其他地区只支持4K大小文档/表格的10K读取
因此请根据您的平均文档大小计算吞吐量,并参阅DynamoDB
dynamodb中的最大文档/项目大小为400KB(如果文档大小超过400KB,参考s3可能会诀窍,但仍取决于您是否真的想要走这条路线)/ MongoDB可能是替代方案,允许高达16M的文档。
您只能在一个请求中从DynamoDB中获取1000 KB
的文档
所以,基本上,
我还会考虑研究MongoDB与DynamoDB,因为MongoDB是开源的,在Atomicity中具有除A以外的所有功能,并且也受AWS支持。
链接地址: http://www.djcxy.com/p/60141.html