什么时候把数据放在弹性搜索中,而不是在主数据存储上创建二级索引呢?弹性搜索与另一个主存储
优点:
缺点:
初级数据存储的二级索引
优点:
缺点
在决定这件事时还有其他考虑吗?
发布于 2023-03-25 12:49:06
什么时候把数据放在弹性搜索中,而不是在主数据存储上创建二级索引呢?
这些东西就像把苹果比作橘子一样。
当您的主要用例是复杂的基于单词的搜索和/或需要标记为易于搜索的单词的大量文本时,请使用Elasticsearch。
否则,对于大多数其他标准用例,您可能希望使用关系数据库系统(RDBMS)。在RDBMS中,有时表的主索引(通常称为聚集索引)就足够了。其他时候,需要一个辅助索引(或几个辅助索引)来支持谓词用例。在需要时创建辅助索引是非常常见的。
关于你提到的其他一些事情:
弹性搜索与另一个主要商店Pros:
不知道你这么说是什么意思。Elasticsearch本身在读写操作上不会自动变得更快。如果您的意思是,通过将部分工作卸载到Elasticsearch,源数据存储的读写将得到改进,那么这也不一定是正确的,除非您使用最终的一致性方法来复制数据。而且,在这种情况下,它与使用Elasticsearch无关,更重要的是,您要持久化数据的副本,这可以在任何其他系统中完成,包括同一源系统的另一个实例。
正如我前面提到的,Elasticsearch被设计为在复杂的基于单词的搜索中进行优化。它不像RDBMS那样在标准键值匹配和经典索引寻找相等和范围匹配时进行优化。同样,这两个系统都针对并精通不同的用例。
一级数据存储Pros的二级索引:
不知道你这么说是什么意思。RDBMS中的所有索引通常都是立即一致的,而不是最终一致的。我只能想象您可能是指在具有切分拓扑的数据库系统中,但这只是因为碎片最终可能是一致的,但是即使是碎片中的索引也将在碎片同步之后立即保持一致。
缺点
这不是完全正确的。是的,一个表拥有的索引越多,需要对该表进行更多的写入工作,才能使所有索引保持一致。但这种权衡实际上是大O理论--搜索时间复杂度与空间复杂性之间的权衡。同样,如果您试图复制数据并将其保存到另一个数据存储区(如Elasticsearch ),则同样如此。同样,还有额外的写开销。
此外,现代的RDBMS提供了不同的并发隔离级别,以提高性能。乐观并发隔离级别通过允许并发写入和读取来提高性能。作家不会阻止读者,读者也不会阻止作家。如何做到这一点的一个实现是通过数据库自动维护的数据版本存储来实现的。
资源:
https://dba.stackexchange.com/questions/325163
复制相似问题