14

我们需要使我们的Firebase数据与其他databasesfor full-text search(in ElasticSearch) 和其他Firebase不容易支持的查询保持同步。

这需要尽可能接近实时,我们不能只导出每晚的转储Firebase JSON或类似的东西,除非这会变得相当大。

我最初的想法是运行一个Node.js客户端来监听所有主列表的事件child_changed,但这可能会有点笨拙,如果客户端在一段时间后重新连接,这是否是一种可靠的同步child_added方式child_removed时间?

我的下一个想法是维护一个“项目更改”事件列表,并在每次创建/更新项目时写入该列表,类似于Firebase 工作队列示例。队列可能包含已更改数据的完整路径,工作人员只需使用该路径并相应地更新本地数据库。

这里的问题是每一个进行更新的代码都必须记住写入这个队列,否则两个系统将不同步。一些代理代码不应该太难写。

有没有其他人做过类似的事情并取得了成功?

4

2 回答 2

5

对于搜索查询,可以直接与 ElasticSearch 集成;无需与辅助数据库同步。Firebase 有一篇关于集成的博客文章和一个库Flashlight,可以快速轻松地完成此操作。

于 2014-03-20T16:43:55.577 回答
1

另一种选择是使用logstash-input- firebase Logstash 插件来监听 Firebase 实时数据库中的变化,并使用输出将数据实时转发到 Elasticsearch elasticsearch

于 2017-01-12T07:47:37.333 回答