PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come avere una funzionalità offline completa in un'app Web con database PostgreSQL?

Risposta breve:non so nulla di simile che esista attualmente.

Tuttavia, in teoria, questo potrebbe essere fatto funzionare... (risposta lunga:)

  1. Scrivi un backend PostgreSQL per il levelup (ne esiste uno per MySQL:https://github.com/kesla/mysqldown)
  2. Connetti il ​​pouch-server per leggere/scrivere dal tuo db PostgreSQL usando l'adattatore leveldb esistente di pouchdb (che a sua volta dovrà essere configurato per usare il tuo backend postgres). Congratulazioni, ora puoi sincronizzare i dati utilizzando PouchDB!

Se un approccio come questo sia effettivamente pratico per la tua applicazione è una domanda diversa a cui dovrai rispondere.

Ti starai chiedendo, ad esempio, "sarò in grado di sincronizzare uno schema complesso esistente con più tabelle sul client con questo approccio?" La risposta probabilmente non è:l'implementazione mysqldown di leveldown utilizza una singola tabella MySQL con tre campi:id , key e value (fonte) e immagino che qualsiasi adattatore PostgreSQL per uso generico sarebbe simile (niente dice che non puoi fare un adattatore per scopi speciali solo per la tua app!).

D'altra parte, se dovessi implementare un'API compatibile con couchdb (o un sottoinsieme, potresti non aver bisogno di allegati, ad esempio) sullo schema del database esistente, non c'è nulla che ti impedisca di usare PouchDB sul client per parlare direttamente con quello come se fosse un vero CouchDB:basta inserire l'URL e chiamare replicate() ! L'implementazione del protocollo di replica potrebbe essere un bel po' di lavoro, dal momento che dovresti tenere traccia delle revisioni e così via da qualche parte, ma ancora una volta, tecnicamente non impossibile!

Esistono anche implementazioni dell'archiviazione back-end di levelup progettate per i browser. Vedi level.js, che potrebbe essere un altro modo per sincronizzare tra un back-end levelup Postgres lato server e il browser.

TL;DR :C'è un sacco di lavoro in corso sui database Javascript in questo momento. La sincronizzazione con Postgres è impossibile? probabilmente no. Sarebbe molto lavoro? Decisamente. Ne vale la pena? Chissà, ma sarebbe bello.