我們需要保持我們的Firebase
數據同步的其他databases
爲full-text search
(在ElasticSearch
)和其他類型的查詢是Firebase
不容易支持。如何保持火力地堡同步與其他數據庫
這需要儘可能接近實時,我們不能只輸出Firebase JSON
或類似的東西的每晚轉儲,除了這將變得相當大。
我最初的想法是運行Node.js
客戶端,它會監聽child_changed
,child_added
,child_removed
等等所有的主要名單的事件,但是這可能會有點unweildy,這將是如果同步的一種可靠的方法客戶端在一段時間後重新連接?
我的下一個想法是維護一個「項目已更改」事件的列表,並在每次創建/更新項目時寫入該項目,類似於Firebase work queue示例。該隊列可以包含已更改的數據的完整路徑,並且該工作人員僅使用該路徑並相應地更新本地數據庫。
這裏的問題是每一點代碼,使更新必須記住寫入這個隊列,否則兩個系統將不同步。一些代理代碼不應該太難寫入。
有沒有其他人做過類似的任何成功?
我認爲你的代理理念最有意義。我們已經看到了人們運行node.js進程的情況,這些進程存儲了他們上次寫入數據的時間戳。如果進程崩潰,您可以通過查看您寫入的最後一個時間戳來進行初始導入。 – Anant
@rlivsey你想出了一個解決方案?我需要解決同樣的問題,我正在考慮使用彈性搜索。任何有關您的經驗的信息將不勝感激。 – Tim
我們解決了這個問題,但在我們的情況下,設置是不同的 - 我們愉快地生活在兩個數據庫中,每個數據庫都有不同的用途。 我們有**不相同的MongoDB(*權威商店*)和Firebase(*實時商店*),每個都擁有它需要的數據。並非Firebase中的所有實時數據都需要寫入MongoDB。反過來說 - 很多非實時數據都不在我們的Mongo上。只有數據的**片段**被同步:client - > nodejs - > Mongo + Firebase。 所以我想問題是 - 你真的需要**所有**數據同步嗎? – oori