Нам нужно сохранить наши данные Firebase
в синхронизации с другими databases
для full-text search
(в ElasticSearch
) и другими типами запросов, которые Firebase
не поддерживает.
Это должно быть как можно ближе к реальному времени, мы не можем просто экспортировать ночной дамп Firebase JSON
или что-то в этом роде, кроме того, что это будет довольно большим.
Моя первоначальная мысль заключалась в том, чтобы запустить клиент Node.js
, который прослушивает события child_changed
, child_added
, child_removed
и т.д. всех основных списков, но это может быть немного неумелым и будет ли оно надежный способ синхронизации, если клиент повторно подключается через определенный промежуток времени?
Моя следующая мысль заключалась в том, чтобы поддерживать список событий "измененных элементов" и записывать их каждый раз, когда элемент создается или обновляется, подобно Firebase work queue. Очередь может содержать полный путь к данным, которые были изменены, и рабочий просто потребляет это и соответственно обновляет локальную базу данных.
Проблема здесь - это каждый бит кода, который заставляет обновления помнить, чтобы писать в эту очередь, иначе две системы выйдут из синхронизации. Некоторый прокси-код не должен быть слишком сложным для записи.
Кто-нибудь еще сделал что-либо подобное с любым успехом?