我是否需要将ElasticSearch的数据存储在数据库中?

时间:2016-08-22 10:43:11

标签: database elasticsearch lucene social-networking fuzzy-search

我正在构建一个社交网络,我想使用ElasticSearch来搜索用户。除了创建ElasticSearch索引之外,我还需要将用户信息存储在数据库中以进行登录和这类事情,这不是多余的吗?

1 个答案:

答案 0 :(得分:0)

首先:如果数据已经存在于Elasticsearch中,请考虑为什么需要数据库。这真的是必要的。

第二:如果您需要多个系统中的数据,请定义哪个是领先系统。它将保证始终保存最新数据。其他的可能会滞后。

第三:有些情况下,Elasticsearch作为一个可搜索的数据湖是美妙而充足的。除非你需要事务逻辑,否则你可能没有数据库。但是,如果您需要仅由某个数据库覆盖的特殊功能,那么您需要两者。

根据我的经验,这主要是以下情况之一:

  • 您需要一个事务数据库(如MySQL,MariaDB,Oracle,...)来管理数据记录,Elasticsearch是它的快速检索引擎(例如:目录服务,电话簿)

  • 您需要一个分析数据库(例如,Exasol)来对热数据运行更复杂的检索和分析,而Elasticsearch用于具有更简单的属性驱动检索语义的暖/冷数据

  • 您需要一个高性能数据库(例如,Exasol,Apache Cassandra)来接收大量数据或大规模操作,而Elasticsearch是后台的长期数据湖。

需要结构化和非结构化数据的情况不一定需要数据库,因为您可以轻易地将Elastisearch滥用为数据库。

所以,你的问题实在太笼统了,我建议在真正建立社交网络之前,寻求专业人士帮助你进行设置。否则,如果您的平台未正确反映业务需求,您可能会发现自己面临重大业务问题。