Wir müssen mit anderen databases
für full-text search
(in ElasticSearch
) und anderen Arten von Anfragen unserer Firebase
Daten synchron halten, dass Firebase
nicht leicht unterstützen nicht.Wie Firebase mit einer anderen Datenbank synchron halten
Dies muss so nah wie möglich an der Echtzeit sein, wir können nicht einfach eine nächtliche Dump der Firebase JSON
oder etwas ähnliches exportieren, abgesehen davon, dass dies ziemlich groß werden wird.
Mein erster Gedanke war ein Node.js
Client ausgeführt werden, die zu child_changed
hört, child_added
, child_removed
etc ... Veranstaltungen aller Hauptlisten, aber ein bisschen unweildy bekommen könnte und würde es eine zuverlässige Möglichkeit der Synchronisierung, wenn das sein Client verbindet sich nach einer gewissen Zeit neu?
Mein nächster Gedanke war, eine Liste der "geänderten Objekte" -Ereignisse zu führen und jedes Mal, wenn ein Element erstellt/aktualisiert wird, ähnlich dem Beispiel zu schreiben. Die Warteschlange könnte den vollständigen Pfad zu den Daten enthalten, die sich geändert haben, und der Worker verbraucht nur diesen und aktualisiert die lokale Datenbank entsprechend.
Das Problem hier ist jedes Bit des Codes, der Updates muss daran denken, in diese Warteschlange zu schreiben, sonst werden die beiden Systeme nicht mehr synchron sein. Einige Proxy-Code sollte nicht zu schwer zu schreiben sein.
Hat jemand anderes etwas ähnliches mit Erfolg getan?
Ich denke, dass Ihre Proxy-Idee am sinnvollsten ist. Wir haben definitiv Fälle gesehen, in denen Benutzer node.js-Prozesse ausgeführt haben, die Zeitstempel des letzten Schreibens von Daten speichern. Wenn der Prozess abstürzt, können Sie einen ersten Import durchführen, indem Sie sich den letzten von Ihnen geschriebenen Zeitstempel ansehen. – Anant
@rlivsey Hast du eine Lösung gefunden? Ich muss das gleiche Problem lösen und dachte über die Verwendung von Elastic Search nach. Irgendwelche Informationen über Ihre Erfahrung würden geschätzt. – Tim
Wir haben dieses Problem gelöst, aber in unserem Fall ist das Setup anders - wir leben glücklich mit zwei Datenbanken, jeder für einen anderen Zweck. Wir haben MongoDB (* autoritativer Speicher *) und Firebase (* Echtzeitspeicher *), die ** nicht ** identisch sind und jeweils die erforderlichen Daten enthalten. Nicht alle Echtzeitdaten in Firebase müssen in die MongoDB geschrieben werden. und umgekehrt - viele Nicht-Echtzeit-Daten sind nicht auf unserem Mongo. Nur ein ** Fragment ** der Daten wird synchronisiert: Client -> Nodejs -> Mongo + Firebase. Also ich denke, die Frage ist - brauchen Sie wirklich ** alle ** Daten synchronisiert? – oori