如何将 Firebase 与另一个数据库保持同步?

14
我们需要将Firebase数据与其他数据库同步,以进行全文搜索(在ElasticSearch中)和其他Firebase不容易支持的查询。
这需要尽可能接近实时,我们不能仅导出Firebase JSON的每夜转储之类的东西,除了这会变得相当大之外。
我的初步想法是运行一个Node.js客户端,监听所有主列表的child_changedchild_addedchild_removed等事件,但这可能会变得有点笨重,如果客户端在一段时间后重新连接,它是否是一种可靠的同步方式?
我的下一个想法是维护一个“已更改项目”的列表,并在每次创建/更新项目时写入该列表,类似于Firebase工作队列示例。队列可以包含已更改数据的完整路径,工作程序只需消耗该路径并相应地更新本地数据库。
这里的问题是每个进行更新的代码都必须记得写入此队列,否则两个系统将不同步。编写一些代理代码应该不太困难。有其他人成功地做过类似的事情吗?

我认为你的代理思路最有意义。我们确实看到过一些人运行存储最后写入数据时间戳的node.js进程的情况,如果该进程崩溃,您可以通过查看上次写入的时间戳进行初始导入。 - Anant
@rlivsey 你有解决方案吗?我也需要解决同样的问题,我在考虑使用 Elastic Search。如果你有任何经验信息,我将不胜感激。 - Tim
1
我们解决了这个问题,但在我们的情况下,设置是不同的 - 我们使用两个数据库,每个数据库都有不同的目的,我们很满意。我们有MongoDB(权威存储)和Firebase(实时存储),它们不是相同的,每个都保存所需的数据。并非所有Firebase中的实时数据都需要写入MongoDB,反之亦然 - 许多非实时数据不在我们的Mongo中。只有一部分数据被同步:客户端--> nodejs --> Mongo + Firebase。因此,我想问题是 - 您真的需要同步所有数据吗? - oori
2个回答

5

对于搜索查询,您可以直接与ElasticSearch集成;无需与次要数据库同步。 Firebase有一个博客文章介绍和一个库Flashlight,使这个过程快速简便。


1
虽然这很有帮助,但我决定编写一小段代码将Firebase同步到Mongo。更多信息可以在此文章中找到。 - Leo

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

你能否请添加如何安装插件到Logstash的说明? - Mahmoud Saleh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接