Mobile-app mit PouchDB-CouchDB und MySQL
Ich bin die Entwicklung einer mobile app, eingewickelt in Cordova, die läuft parallel zu unserer web-basierten Anwendung, basierend auf PHP & MySQL. Die mobile app nutzt, local-storage & bekommt die Daten über eine Schicht von Diensten, die geschrieben wurden, um den Austausch von Daten zwischen dem mobile-app - & MySQL-Datenbank. Die mobile app verwendet nur eine Teilmenge der Daten in der Haupt-MySQL-DB.
Ich bin auf der Suche nach Ersatz für meine mobile-app-local-storage-Lösung mit Beutel DB & sehen, dass es erfordert, CouchDB ... das hat mich zum nachdenken einer möglichen Konfiguration /Lösung, die ich herausfinden möchte ob wäre ratsam und machbar ...
Wäre es machbar ist die Einrichtung einer CouchDB-Datenbank läuft als mediator/slave zwischen der Haupt-MySQL-Datenbank - & mobile app PouchDB? Die mobile service-Schicht würde die Nutzung dieser Datenbank (sowie die Haupt-MySQL-DB falls nötig) & updates der Daten zwischen der Haupt-SQL & couch-DB geschoben werden periodisch per cron. Die CouchDB würde nur speichern eine Untermenge der Daten aus der MySQL-DB, die relevant ist für die mobile app.
Funktioniert diese Lösung klingt wie overkill /eine gute Idee? Gibt es einen besseren Weg der Annäherung an das setup oben beschrieben? Ich mag die Idee von pouchdb-CouchDB ... möchte aber nicht umschreiben, meine gesamte web-app zu verwenden, couch-DB, während eine weitere Ebene der Abstraktion bietet eine Teilmenge von mobile-spezifischen Daten sinnvoll erscheint.
Dank
Trace
Du musst angemeldet sein, um einen Kommentar abzugeben.
PouchDB läuft auf Knoten können tatsächlich nutzen alle LevelDOWN-adapter, und es ist eines für MySQL. Ich habe es noch nicht getestet. Mehr info hier: http://pouchdb.com/adapters.html#pouchdb_in_node_js.
Allerdings ist dies wahrscheinlich nicht eine gute Passform für Ihren Fall, weil die Daten, die PouchDB speichern in MySQL wird anders sein, als die Daten, die Ihre app ist derzeit mit MySQL. Um die Replikation unterstützen, PouchDB hält die revision der Geschichte eines jeden Dokuments gespeichert (denke, git), die unterscheidet sich von einer herkömmlichen Datenbank wie MySQL, die nur speichert Tabellen und Zeilen, die gelöscht werden können/eingefügt/aktualisiert. Datenbanken wie CouchDB und PouchDB gebaut wurden von Grund auf zur Unterstützung von Replikation, weshalb diese versioning system vorhanden ist.
That being said, wenn Sie schreiben Ihre eigenen sync-Schicht zwischen MySQL und CouchDB, es könnte funktionieren, in der Theorie, aber es wäre wahrscheinlich so viel Arbeit, dass Sie verlieren würde, die die Vorteile von CouchDB und PouchDB built-in-Replikation.
Ich versuche zu erreichen, die sehr gleichen schema mit unserem ERP - (SQL Server basiert).
Nun versuche ich nur herauszufinden, ob pouchdb auf die mobile wäre ausreichend für die Anforderungen, zum Beispiel:
In der Lage sein zu filtern, eine bestimmte "Preisliste" durch "Produkt-Beschreibung". Denke, dass ein WIE in sql auf:
SELECT * FROM Preise WHERE Beschreibung LIKE '%text%'
In der Lage sein zu filtern, eine bestimmte "Preisliste" durch "Produkt-Kategorie", ODER "Produkt-Verkäufer"
Auch die mobile-app benötigen nur eine Teilmenge des vollständigen SQL-schema/Daten. Und meine Idee war einfach die mobile pouchdb <-> couchdb-Replikation Teil, der eine Herausforderung sein kann, nur mit webSQL <-> SQL-Server), und dann später "replizieren" die zusätzlichen Daten auf coouchdb auf dem SQL Server mit einem Prozess, denken Sie einen cron-task.
Bisher habe ich gefunden:
Gebäude eine pouchdb-Ansicht auf der client-Seite kann Jahre dauern, zu bauen, nur für den ersten Punkt des seins in der Lage, das zu tun, WIE der Betrieb. Um dieses Problem zu lösen, ich habe gebaut ein auxiliar websql db, die enthält einfach (pouchdb_id, pouchdb_text), wo ich es neu erstellen, nachdem Sie die Replikation einsetzen der Beutel Schlüssel-und Objekt-text-Felder verkettet. Dann, wenn ich MAG, ich mache es auf webSQL, und Holen docs mit pouchdb mit db.allDocs( { Schlüssel: [sql zurückgegeben array-keys] })
Der zweite Punkt ist auf meine Analyse jetzt...
Analyse ist derzeit im Gange, und jede Idee, wäre schön, zu teilen.
Können Sie die folgenden NodeJS-package https://www.npmjs.com/package/couchdb-to-mysql.
Das Paket hört sich für CouchDB Veränderungen und reflektiert Sie auf MySQL.
Beispiel
Methoden