我们需要让Firebase
数据与databases
的其他full-text search
同步(ElasticSearch
)以及Firebase
无法解决的其他类型的查询很容易支持。
这需要尽可能接近实时,我们不能只导出Firebase JSON
的夜间转储或类似的东西,除了这会变得相当大。
我最初的想法是运行一个Node.js
客户端,该客户端会监听child_changed
,child_added
,child_removed
等...所有主要列表中的事件,但这可能得到一点unweildy,如果客户端在一段时间后重新连接,它会是一种可靠的同步方式吗?
我的下一个想法是维护一个“项目已更改”事件的列表,并在每次创建/更新项目时写入,类似于Firebase work queue示例。队列可以包含已更改的数据的完整路径,工作人员只需消耗该数据并相应地更新本地数据库。
这里的问题是每一段代码都使得更新必须记住写入此队列,否则两个系统将失去同步。一些代理代码不应该写得太难。
还有其他人做过类似的事情吗?
答案 0 :(得分:5)
对于搜索查询,您可以直接与ElasticSearch集成;无需与辅助数据库同步。 Firebase有一个blog post about integrating和一个lib Flashlight,可以快速轻松地使用它。
答案 1 :(得分:1)
另一种选择是使用logstash-input-firebase Logstash插件来收听Firebase实时数据库中的更改,并使用elasticsearch
输出将数据实时转发到Elasticsearch