PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment avoir des fonctionnalités hors ligne complètes dans une application Web avec une base de données PostgreSQL ?

Réponse courte :je ne connais rien de ce genre qui existe actuellement.

Cependant, en théorie, cela pourrait fonctionner... (réponse longue :)

  1. Écrire un backend PostgreSQL pour le levelup (il en existe un pour MySQL :https://github.com/kesla/mysqldown)
  2. Câblez pouch-server pour lire/écrire à partir de votre base de données PostgreSQL à l'aide de l'adaptateur leveldb existant de pouchdb (qui à son tour devra être configuré pour utiliser votre backend postgres). Félicitations, vous pouvez désormais synchroniser les données avec PouchDB !

Qu'une approche comme celle-ci soit pratique dans la réalité pour votre application est une autre question à laquelle vous devrez répondre.

Vous vous demandez peut-être, par exemple, "pourrai-je synchroniser un schéma complexe existant avec plusieurs tables sur le client avec cette approche ?" La réponse est probablement non - l'implémentation mysqldown de leveldown utilise une seule table MySQL avec trois champs :id , key , et value (source), et j'imagine que n'importe quel adaptateur PostgreSQL à usage général serait similaire (rien ne dit que vous ne pouvez pas faire un adaptateur à usage spécial juste pour votre application !).

D'autre part, si vous deviez implémenter une API compatible couchdb (ou un sous-ensemble - vous n'avez peut-être pas besoin de pièces jointes, par exemple) sur votre schéma de base de données existant, rien ne vous empêche d'utiliser PouchDB sur le client pour parler directement à ce comme s'il s'agissait d'un véritable CouchDB - il suffit d'insérer l'URL et d'appeler replicate() ! La mise en œuvre du protocole de réplication peut être un peu de travail, car vous auriez besoin de suivre les révisions et ainsi de suite quelque part - mais encore une fois, techniquement pas impossible !

Il existe également des implémentations du stockage backend de levelup conçues pour les navigateurs. Voir level.js, qui pourrait être un autre moyen de synchroniser entre un backend Postgres levelup côté serveur et le navigateur.

TL;DR :Il y a des tonnes de travail en cours autour des bases de données Javascript en ce moment. La synchronisation avec Postgres est-elle impossible ? probablement pas. Serait-ce beaucoup de travail ? Définitivement. Cela en vaut la peine? Qui sait, mais ce serait cool.