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 是一个搜索引擎,您可以在其中搜索任何术语,或根据特定条件聚合记录,但它也可以作为文档存储,但不是主要目的.对于更少的写入和更多的读取,绝对是好的.
一些弹性研究的优势
它允许的每个文档的最大大小是2G - > 2G在lucene级别
您可以使用分区(称为Shards)来_id
默认根据字段分发文档
支持强一致性 - 可配置
仅支持文档级别的原子性
您可以根据标准聚合文档 - 基于JSON的查询
弹性研究的缺点
在多个文档之间没有原子性(ACID中的A)
您可能想检查安全选项,上次我使用它可能是版本3,没有很好的选择
另一方面,Dynamodb是一个数据存储区(技术上称为文档存储/亚马逊的MongoDB版本).
好处
完全由AWS管理,因为您不必担心服务器停机或等等.
由亚马逊IAM角色保护
您可以使用分区(称为Shards)根据每个文档的主键分发文档
支持多项/文档级原子性(ACID中的A)
支持原子写入 - 每个文档的https://github.com/awslabs/dynamodb-transactions锁定属性引用当前transactionId
将文档写入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 获取文档
基本上,
我还考虑调查MongoDB与DynamoDB,因为MongoDB是开源的,具有Atomicity中除A以外的所有功能,并且也受AWS支持.
归档时间: |
|
查看次数: |
11388 次 |
最近记录: |