Соло Elasticsearch против Couchbase+Elasticsearch

Позвольте мне описать проблему. Сейчас я на стадии архитектурных изменений. Раньше я использовал Elasticsearch в качестве инструмента агрегации и поиска, но теперь я думаю об использовании его в качестве основной базы данных. Я читал, что не рекомендуется использовать Elasticsearch как основную БД, только как индекс. Итак, я прочитал презентацию о подключении его к Couchbase:

https://2013.nosql-matters.org/bcn/wp-content/uploads/2013/12/nosql13-bcn-couchbase-elasticsearch-jeroen-reijn.pdf

Я скачал и установил Couchbase и плагин для интеграции с Elasticsearch

https://github.com/couchbaselabs/elasticsearch-transport-couchbase

Я не уверен в этом решении. Во-первых, в Elasticsearch агрегация быстрее. Во-вторых, Elasticsearch поддерживает гистограмму, геоточки, полнотекстовый поиск и многое другое, поэтому кажется, что единственная причина сохранить Couchbase — это не использовать Elasticsearch в качестве основной БД.

Итак, мой вопрос о преимуществах интеграции Elasticsearch с Couchbase в моем случае?


person esnosek    schedule 27.11.2015    source источник


Ответы (3)


Я использую ES в качестве базы данных уже несколько лет, у меня никогда не было проблем, тогда как я также пробовал MongoDB с множеством проблем!

Всегда хорошо иметь резервную копию данных, в вашем случае с «Couchbase», но это не обязательно. Вы можете создавать снапшоты ES каждый день, этого может быть достаточно.

Следует учитывать, что ES работает «почти в реальном времени», что означает, что данные доступны через несколько раз (миллисекунд) после редактирования.

ES быстр, прост в настройке и очень хорошо масштабируется. Протокол HTTP — лучший способ общения на любых языках.

person Thomas Decaux    schedule 02.12.2015
comment
Думаю, важно уточнить, что ES — это поисковик (а не БД, как многие думают). Согласно моему пониманию тех, кому потеря данных невозможна (безопасность, финансы и т. д.), не используйте ES в качестве основного хранилища данных discuss.elastic.co/t/elasticsearch-as-a-primary-database/85733/ - person Yohan; 16.03.2019

Использование плагина Couchbase позволит автоматически (пере)индексировать изменения данных в Couchbase в Elasticsearch. Тем не менее, вы можете посмотреть, подходит ли схема/сопоставление, которое может наложить Couchbase, для ваших запросов. Когда данные находятся в Elasticsearch, вы все еще можете запрашивать их, используя запросы Elasticsearch напрямую, чтобы выполнять такие действия, как поиск или агрегирование.

Одним из преимуществ использования Couchbase может быть то, что он позволяет выполнять репликацию между центрами обработки данных (с использованием нескольких кластеров elasticsearch), тогда как обычно использование Elasticsearch в нескольких центрах обработки данных не рекомендуется.

person Sarwar Bhuiyan    schedule 08.12.2015

Единственная серьезная проблема, с которой я столкнулся при использовании elasticsearch в качестве основного хранилища данных, — это задержка индексации при индексировании нового документа. Elasticsearch — это поисковая система «почти» в реальном времени... квалификатор «near» необходим, потому что после индексации документа происходит задержка до 1 секунды, прежде чем он будет найден во время поиска.

Вот ссылка на соответствующую часть руководства по поиску эластичных материалов:

Поиск почти в реальном времени в elasticsearch

Это была проблема в созданном мной веб-приложении, содержащем страницу со списком пользователей. Мой сценарий заключался в том, что администратор нажал кнопку «новый пользователь» на странице списка пользователей, а затем он был перенесен на другую страницу для создания пользователя. Когда администратор сохранил документ пользователя, он был перенаправлен на страницу списка, но вновь созданный пользователь не появился из-за задержки индексации elasticsearch.

В руководстве elasticsearch говорится, что вы можете вручную обновить индекс, но не делать этого в рабочей среде.

... не выполняйте обновление вручную каждый раз, когда индексируете рабочий документ; это повредит вашей производительности. Вместо этого ваше приложение должно понимать, что Elasticsearch работает почти в реальном времени, и учитывать это.

Я все равно обновил индекс, потому что создание новых пользователей — очень редкое явление в моем приложении, но это не очень хорошее решение.

Пару месяцев назад я задал вопрос, как другие люди решают эту проблему:

Как справиться с задержкой индекса Elasticsearch

В ответе на этот вопрос было предложение, которое мне понравилось. По сути, автор предлагает вставлять запись в список вручную, используя предоставленные вами данные, вместо того, чтобы ждать ответа от сервера. Это должно работать до тех пор, пока вы не полагаетесь на поля, сгенерированные сервером.

В конечном счете, вы не должны сталкиваться с этой проблемой с такой базой данных, как Couchbase.

person Troy    schedule 15.02.2016