Как сохранить Firebase в синхронизации с другой базой данных

Нам нужно сохранить наши данные Firebase в синхронизации с другими databases для full-text searchElasticSearch) и другими типами запросов, которые Firebase не поддерживает.

Это должно быть как можно ближе к реальному времени, мы не можем просто экспортировать ночной дамп Firebase JSON или что-то в этом роде, кроме того, что это будет довольно большим.

Моя первоначальная мысль заключалась в том, чтобы запустить клиент Node.js, который прослушивает события child_changed, child_added, child_removed и т.д. всех основных списков, но это может быть немного неумелым и будет ли оно надежный способ синхронизации, если клиент повторно подключается через определенный промежуток времени?

Моя следующая мысль заключалась в том, чтобы поддерживать список событий "измененных элементов" и записывать их каждый раз, когда элемент создается или обновляется, подобно Firebase work queue. Очередь может содержать полный путь к данным, которые были изменены, и рабочий просто потребляет это и соответственно обновляет локальную базу данных.

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

Кто-нибудь еще сделал что-либо подобное с любым успехом?

Ответы

Ответ 1

Для поисковых запросов вы можете напрямую интегрировать с ElasticSearch; нет необходимости синхронизировать со вторичной базой данных. Firebase имеет сообщение в блоге об интеграции и lib, Flashlight, чтобы сделать это быстрым и безболезненным.

Ответ 2

Другой вариант - использовать logstash-input-firebase плагин Logstash для прослушивания изменений в вашей базе данных Firebase реального времени, и пересылать данные в режиме реального времени в Elasticsearch с помощью вывода elasticsearch.