Elasticsearch никогда не задумывался как база данных, а всегда был мощным инструментом для поиска. Созданный на базе Apache Lucene, Elasticsearch изначально представлялся API для полнотекстового поиска, и даже руководство по применению от самой компании Elastic указывало, что источником истины данных должна быть другая система.
Последние десятилетия многие компании пытались превратить его в основное хранилище данных, что нередко приводило к неожиданным результатам.
Когда говорят о базе данных, имеют в виду систему, которая становится основным хранилищем данных для операционных транзакций. Такие системы, как PostgreSQL и MySQL, существенно выигрывают в стабильности и надежности при использовании в качестве основного источника данных.
Команды часто начинают с Postgres или MySQL, но сталкиваются с проблемами масштабируемости встроенного текстового поиска. Elasticsearch оказывается подходящим для этой задачи решением: он быстр и настраиваем. Но с течением времени данные начинают храниться только в Elastic. Это приводит к проблемам: операции не всегда синхронизированы, консистентность нарушается, так как Elasticsearch не поддерживает транзакции за пределами одного документа.
Кроме того, изменения схемы и миграции становятся более сложными. В то время как Postgres и MySQL позволяют выполнять такие операции с минимальными усилиями, в Elasticsearch изменения требуют полной перестройки индекса. Также особенно остро встает вопрос с запросами: Elastic ограничивает возможности, которые стандартные реляционные базы данных решают гораздо эффективнее.
Инженеры сталкиваются с увеличением операционных рисков и затрат при использовании Elasticsearch как основного хранилища, в то время как он остается отличным инструментом именно для поиска. ParadeDB предлагает решение этой проблемы, объединяя операции OLTP и полнотекстовый поиск в единой системе.
Источник: https://www.paradedb.com/blog/elasticsearch-was-never-a-database