我们需要保持Firebase数据与其他数据库同步,以进行全文搜索(ElasticSearch)和Firebase不容易支持的其他类型的查询.
这需要尽可能接近实时,我们不能仅仅出口Firebase JSON或任何类似的夜间转储,除了这将变得相当大的事实.
我最初的想法是运行一个Node.js客户端,它监听所有主列表的child_changed,child_added,child_removed等事件,但是这可能会有点不合适,如果客户端re – 连接一段时间后?
我的下一个想法是保持“项目更改”事件的列表,并在每次创建/更新项目时写入,类似于Firebase work queue示例.队列可以包含已更改的数据的完整路径,并且工作人员仅仅消耗该数据,并相应地更新本地数据库.
这里的问题是每一段代码,使得更新必须记住写入此队列,否则两个系统将失去同步.一些代理代码不应该太难写.
有没有人做过任何类似的任何成功?
解决方法
对于搜索查询,您可以直接与ElasticSearch集成;没有必要与辅助数据库同步. Firebase有一个
blog post about integrating和lib,Flashlight,使这个快速和无痛.