Как сохранить Firebase в синхронизации с другой базой данных
Нам нужно сохранить наши данные Firebase
в синхронизации с другими databases
для full-text search
(в ElasticSearch
) и другими типами запросов, которые 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
.