如何使Firebase与其他数据库保持同步

时间:2013-07-25 09:20:10

标签: database firebase

我们需要让Firebase数据与databases的其他full-text search同步(ElasticSearch)以及Firebase无法解决的其他类型的查询很容易支持。

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

我最初的想法是运行一个Node.js客户端,该客户端会监听child_changedchild_addedchild_removed等...所有主要列表中的事件,但这可能得到一点unweildy,如果客户端在一段时间后重新连接,它会是一种可靠的同步方式吗?

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

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

还有其他人做过类似的事情吗?

2 个答案:

答案 0 :(得分:5)

对于搜索查询,您可以直接与ElasticSearch集成;无需与辅助数据库同步。 Firebase有一个blog post about integrating和一个lib Flashlight,可以快速轻松地使用它。

答案 1 :(得分:1)

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