PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie erhält man eine vollständige Offline-Funktionalität in einer Web-App mit PostgreSQL-Datenbank?

Kurze Antwort:Mir ist derzeit nichts dergleichen bekannt.

Theoretisch könnte dies jedoch zum Laufen gebracht werden ... (lange Antwort:)

  1. Schreiben Sie ein PostgreSQL-Backend für levelup (es existiert eines für MySQL:https://github.com/kesla/mysqldown)
  2. Verdrahten Sie den Pouch-Server zum Lesen/Schreiben von Ihrer PostgreSQL-Datenbank mithilfe des vorhandenen Leveldb-Adapters von PouchDB (der wiederum für die Verwendung Ihres Postgres-Backends konfiguriert werden muss). Herzlichen Glückwunsch, Sie können jetzt Daten mit PouchDB synchronisieren!

Ob ein solcher Ansatz in der Realität für Ihre Anwendung praktikabel ist, ist eine andere Frage, die Sie beantworten müssen.

Sie fragen sich vielleicht zum Beispiel:„Kann ich mit diesem Ansatz ein vorhandenes komplexes Schema mit mehreren Tabellen mit dem Client synchronisieren?“ Die Antwort lautet wahrscheinlich nicht - die mysqldown-Implementierung von leveldown verwendet eine einzige MySQL-Tabelle mit drei Feldern:id , key , und value (Quelle), und ich kann mir vorstellen, dass jeder Allzweck-PostgreSQL-Adapter ähnlich wäre (nichts sagt jedoch, dass Sie keinen Spezialadapter nur für Ihre App erstellen können!).

Wenn Sie andererseits eine couchdb-kompatible API (oder eine Teilmenge – Sie benötigen beispielsweise keine Anhänge) über Ihr vorhandenes Datenbankschema implementieren, hindert Sie nichts daran, PouchDB auf dem Client zu verwenden, um direkt damit zu kommunizieren als ob es eine echte CouchDB wäre - einfach die URL eingeben und replicate() aufrufen ! Das Implementieren des Replikationsprotokolls könnte ein ziemliches Stück Arbeit sein, da Sie Überarbeitungen und so weiter irgendwo nachverfolgen müssten - aber auch hier ist es technisch nicht unmöglich!

Es gibt auch Implementierungen des Backend-Speichers von levelup, die für Browser ausgelegt sind. Siehe level.js, das eine weitere Möglichkeit zur Synchronisierung zwischen einem serverseitigen Postgres-Levelup-Backend und dem Browser sein könnte.

TL;DR :Im Moment wird eine Menge Arbeit rund um Javascript-Datenbanken geleistet. Ist die Synchronisierung mit Postgres unmöglich? wahrscheinlich nicht. Wäre es viel Arbeit? Definitiv. Es lohnt sich? Wer weiß, aber es wäre cool.