我正在开发一个项目,需要提供一个通用仪表板,用户可以在不同的领域进行不同类型的分组,过滤和深入分析。为此,我们正在寻找一个允许切片和数据切片的搜索商店。
会有多个数据源,并将其存储在搜索商店中。源数据可能需要一些预先计算,这可以由中间组件完成。
我查看了几个博客,了解ES是否可以作为主数据存储区可靠地使用。它主要取决于我们正在寻找的用例。关于我们使用的用例的一些信息:
有些博客称其可靠性足以用作主要数据存储 -
有些博客称ES没有什么限制 -
有没有人使用Elastic Search作为数据的唯一真相而没有像PostgreSQL,DynamoDB或RDS这样的主存储?我已经查明ES存在某些问题,例如分裂大脑和索引损坏,其中可能存在数据丢失问题。所以,我想知道是否有人使用过ES并且遇到了数据方面的麻烦
感谢。
答案 0 :(得分:32)
简短回答:这取决于您的使用案例,但您可能不希望将其用作主要商店。
更长的答案:您应该真正了解弹性和数据丢失可能出现的所有问题。 Elastic有一些great documentation of these issues,在将它用作主数据存储之前,您应该真正了解它。此外,Aphyr's post on the topic是一个很好的资源。
如果您了解自己所承担的风险,并且您认为这些风险是可以接受的(例如因为您的申请不会导致小数据丢失),那么您应该随意尝试。
答案 1 :(得分:6)
设计冗余数据存储解决方案通常是个好主意。例如,它可能是一种快速可靠的方法,首先将所有内容作为平面数据推送到静态存储,如s3,然后从那里获取ES拉取和索引数据。如果你需要更多的灵活性来利用一些ORM,你可以在它们之间有一个RDS或Redshift层。这样,数据总是可以在ES中重建。
这取决于您在冗余和灵活性/性能之间如何平衡的需求和要求。如果涉及到大量数据,您可以静态存储原始数据,并通过ES索引其中的某些部分。
Amazon Lambda提供了很多功能:
许多开发人员在使用Amazon DynamoDB时在Amazon S3中存储对象 存储和索引对象元数据并启用高速搜索。 通过运行a,AWS Lambda可以轻松地保持所有内容的同步 用于自动更新Amazon DynamoDB中的索引 从Amazon S3添加或更新时间对象。