首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用弹性搜索的辅助指标

使用弹性搜索的辅助指标
EN

Database Administration用户
提问于 2023-03-25 08:37:15
回答 1查看 65关注 0票数 0

什么时候把数据放在弹性搜索中,而不是在主数据存储上创建二级索引呢?弹性搜索与另一个主存储

优点:

  1. 可以为读写应用程序优化主数据存储。
  2. 弹性搜索支持的不仅仅是键值匹配,如模糊匹配等。

缺点:

  1. 与主数据存储不同步
  2. 另外两个要管理的组件(ES以及插入ES的管道)
  3. 需要一些来自主数据存储的更改数据捕获功能。

初级数据存储的二级索引

优点:

  1. 少动的部件。
  2. 较少的一致性问题(因为次要索引最终可能是一致的)

缺点

  1. 并不是所有的数据存储都支持二级索引。
  2. 辅助索引查询更容易分散聚集,在较高的QPS上执行,将限制读写qps对主访问模式如读、写PK的影响。

在决定这件事时还有其他考虑吗?

EN

回答 1

Database Administration用户

发布于 2023-03-25 12:49:06

什么时候把数据放在弹性搜索中,而不是在主数据存储上创建二级索引呢?

这些东西就像把苹果比作橘子一样。

当您的主要用例是复杂的基于单词的搜索和/或需要标记为易于搜索的单词的大量文本时,请使用Elasticsearch。

否则,对于大多数其他标准用例,您可能希望使用关系数据库系统(RDBMS)。在RDBMS中,有时表的主索引(通常称为聚集索引)就足够了。其他时候,需要一个辅助索引(或几个辅助索引)来支持谓词用例。在需要时创建辅助索引是非常常见的。

关于你提到的其他一些事情:

弹性搜索与另一个主要商店Pros:

  1. 可以为读写应用程序优化主数据存储。

不知道你这么说是什么意思。Elasticsearch本身在读写操作上不会自动变得更快。如果您的意思是,通过将部分工作卸载到Elasticsearch,源数据存储的读写将得到改进,那么这也不一定是正确的,除非您使用最终的一致性方法来复制数据。而且,在这种情况下,它与使用Elasticsearch无关,更重要的是,您要持久化数据的副本,这可以在任何其他系统中完成,包括同一源系统的另一个实例。

  1. 弹性搜索支持的不仅仅是键值匹配,如模糊匹配等。

正如我前面提到的,Elasticsearch被设计为在复杂的基于单词的搜索中进行优化。它不像RDBMS那样在标准键值匹配和经典索引寻找相等和范围匹配时进行优化。同样,这两个系统都针对并精通不同的用例。

一级数据存储Pros的二级索引:

  1. 较少的一致性问题(因为次要索引最终可能是一致的)

不知道你这么说是什么意思。RDBMS中的所有索引通常都是立即一致的,而不是最终一致的。我只能想象您可能是指在具有切分拓扑的数据库系统中,但这只是因为碎片最终可能是一致的,但是即使是碎片中的索引也将在碎片同步之后立即保持一致。

缺点

  1. 辅助索引查询更容易分散聚集,在较高的QPS上执行,将限制读写qps对主访问模式如读、写PK的影响。

这不是完全正确的。是的,一个表拥有的索引越多,需要对该表进行更多的写入工作,才能使所有索引保持一致。但这种权衡实际上是大O理论--搜索时间复杂度与空间复杂性之间的权衡。同样,如果您试图复制数据并将其保存到另一个数据存储区(如Elasticsearch ),则同样如此。同样,还有额外的写开销。

此外,现代的RDBMS提供了不同的并发隔离级别,以提高性能。乐观并发隔离级别通过允许并发写入和读取来提高性能。作家不会阻止读者,读者也不会阻止作家。如何做到这一点的一个实现是通过数据库自动维护的数据版本存储来实现的。

资源:

  1. 什么是弹性搜索?
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/325163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档