ElasticSearch作为主要数据存储区与写丢失,数据可用性等因素的可靠性如何

Har*_*wal 61 full-text-search search-engine nosql elasticsearch

我正在开发一个项目,需要提供一个通用的仪表板,用户可以在不同的领域进行不同类型的分组,过滤和深入分析.为此,我们正在寻找一个允许切片和数据切片的搜索商店.

将有多个数据源,并将其存储在搜索存储中.源数据可能需要一些预先计算,这可以由中间组件完成.

我查看了几个博客,了解ES是否也可以可靠地用作主数据存储区.它主要取决于我们正在寻找的用例.有关我们使用的用例的一些信息:

  • 每年约有3亿条记录,1-2 KB.
  • 假设存储1年的数据,我们现在有300 GB,但由于数据增长,用例可以达到400-500 GB.
  • 截至目前尚不确定,我们将如何推送数据,但粗略地说,它每5分钟可以达到约2-3百万条记录.
  • 搜索请求很少,但需要复杂的查询,可以搜索最近6周到6个月的数据.
  • 文档将在文档中的几乎所有字段中编制索引.

一些博客称它足够可靠,可用作主要数据存储 -

一些博客称ES没有什么限制 -

有没有人使用Elastic Search作为数据的唯一真相,而没有像PostgreSQL,DynamoDB或RDS这样的主存储?我已经查明ES存在某些问题,例如分裂大脑和索引损坏,其中可能存在数据丢失问题.所以,我想知道是否有人使用过ES并且遇到了数据方面的麻烦

谢谢.

Cor*_*ory 32

简短回答:这取决于您的使用案例,但您可能不希望将其用作主要商店.

更长的答案:您应该真正了解弹性和数据丢失可能出现的所有问题.Elastic在将这些问题用作主数据存储之前,您应该真正了解这些问题.此外,Aphyr关于该主题的帖子是一个很好的资源.

如果您了解您正在承担的风险,并且您认为这些风险是可以接受的(例如,因为您的应用程序不会出现小数据丢失问题),那么您应该随意尝试一下.


mar*_*ful 8

设计冗余数据存储解决方案通常是个好主意.例如,它可能是一种快速可靠的方法,首先将所有内容作为平面数据推送到静态存储,如s3,然后从那里获取ES拉取和索引数据.如果你需要更多的灵活性来利用一些ORM,你可以在它们之间有一个RDS或Redshift层.这样,数据总是可以在ES中重建.

这取决于您在冗余和灵活性/性能之间如何设置平衡的需求和要求.如果涉及大量数据,您可以静态存储原始数据,并通过ES索引其部分内容.

Amazon Lambda提供强大的功能:

许多开发人员在Amazon S3中存储对象,同时使用Amazon DynamoDB存储和索引对象元数据并启用高速搜索.每次从Amazon S3添加或更新对象时,AWS Lambda都可以通过运行函数自动更新Amazon DynamoDB中的索引,从而轻松实现所有内容的同步.