elasticsearch NoSQL(Mongo,DynaoDB)与Elasticsearch的对比,elasticsearch,amazon-dynamodb,bigdata,nosql,elasticsearch,Amazon Dynamodb,Bigdata,Nosql" /> elasticsearch NoSQL(Mongo,DynaoDB)与Elasticsearch的对比,elasticsearch,amazon-dynamodb,bigdata,nosql,elasticsearch,Amazon Dynamodb,Bigdata,Nosql" />

elasticsearch NoSQL(Mongo,DynaoDB)与Elasticsearch的对比

elasticsearch NoSQL(Mongo,DynaoDB)与Elasticsearch的对比,elasticsearch,amazon-dynamodb,bigdata,nosql,elasticsearch,Amazon Dynamodb,Bigdata,Nosql,最近,我开始使用DynamoDB存储具有如下结构的事件: {开始日期:'2016-04-01 15:00:00',结束日期:'2016-04-01 15:30:00',从id:320到id:360,键入:'yourtype',持续时间:1800} 但当我开始分析它时,我遇到了这样一个事实:DynamoDB没有聚合,有读/写限制,响应大小限制等等。然后我安装了一个插件,将数据索引到ES。因此,我发现我不再需要使用DynamoDB了。 所以我的问题是,什么时候肯定需要NoSQL(在我的例子中是Dyn

最近,我开始使用DynamoDB存储具有如下结构的事件:

{开始日期:'2016-04-01 15:00:00',结束日期:'2016-04-01 15:30:00',从id:320到id:360,键入:'yourtype',持续时间:1800}

但当我开始分析它时,我遇到了这样一个事实:DynamoDB没有聚合,有读/写限制,响应大小限制等等。然后我安装了一个插件,将数据索引到ES。因此,我发现我不再需要使用DynamoDB了。 所以我的问题是,什么时候肯定需要NoSQL(在我的例子中是DynamoDB)实例以及Elasticsearch?
当您不仅存储索引,而且存储完整文档时,会降低性能吗?(是的,我知道ES只是一个索引,但无论如何,在某些情况下,这种方法可能比使用MySQL群集更经济划算)

您将数据写入DynamoDB,然后使用DynamoDB Streams在Elasticsearch中对其进行自动索引的原因是,DynamoDB或MySQL被认为是一个可靠的数据存储。Elasticsearch是一个索引,一般来说,它不被认为是存储数据的合适位置,而这些数据是你真的不能丢失的

DynamoDB本身在存储时间序列事件数据方面存在问题,正如您所说的,聚合是不可能的。但是,您可以将DynamoDB流与AWS Lambda和单独的DynamoDB表结合使用,根据您试图计算的内容具体化聚合视图。根据您的使用情况和所需的灵活性,这可能是值得考虑的问题。 如果您愿意接受数据丢失的可能性,那么使用Elasticsearch作为日志等内容的唯一目的地通常被认为是可以接受的。如果您想要存储和分析的记录真的太有价值而不能丢失,那么您真的应该将它们存储在其他地方,并让Elasticsearch成为您查询的副本。Elasticsearch允许非常灵活的聚合,因此对于这种类型的用例来说,它是一个极好的工具

作为一个总体替代方案,您可以使用AWS Kinesis Firehose接收事件并将其持久存储在S3中。然后,您可以使用S3事件触发AWS Lambda函数将数据发送到Elasticsearch,在那里您可以聚合数据。这是一个负担得起的解决方案,唯一的主要缺点是Firehose带来的60秒延迟。使用这种方法,如果丢失Elasticsearch集群中的数据,仍然可以从存储在S3中的文件重新加载数据