Feathers: Sincronización de bases de datos para aplicaciones sin conexión primero

Creado en 16 mar. 2016  ·  20Comentarios  ·  Fuente: feathersjs/feathers

FeathersJS parece un sueño hecho realidad. Pero para mí, falta una parte esencial de la funcionalidad para crear aplicaciones sin conexión, que es la capacidad de sincronizar bases de datos locales y remotas.

Aquí hay una lista de kinto que muestra todas las soluciones que ofrecen este tipo de funcionalidad de sincronización. Ya existe una base de datos de almacenamiento local , pero ¿cómo se sincronizaría con una base de datos remota? ¿Un complemento para CouchDB lo haría posible?

Discussion Proposal Question

Comentario más útil

El almacenamiento universal (isomórfico) ahora es posible usando feathers-levelup , con leveldown (o cualquier otro backend de almacenamiento ) en el nodo y level-js en el navegador. (¡gracias @ derek-watson!)

mantener sincronizados los servicios de cliente y servidor se deja en manos del lector, pero debería ser sencillo con los eventos de datos en tiempo real . Si hace algún progreso aquí, agradecería cualquier módulo reutilizable, esto sería increíble. :sonrisa:

Todos 20 comentarios

Sí, sin conexión primero debe tener características. Creo que conectar con PouchDB es fácil, pero la sincronizar (¿funciona esto a través del navegador ?) Datos de local almacenamiento / IndexedDB a MongoDB en remoto (como minimongo )

TL; DR Necesito FeatherJS de esto que no está activo / con errores y parece desactualizado / muerto

Salud

@katopz actualmente no

Puede usar https://github.com/feathersjs/feathers-localstorage en el cliente y luego debería poder configurar enlaces para almacenar en caché sus datos after un servicio devuelve datos o verificar su caché before almacenamiento local

Con suerte, tendremos tiempo para desarrollar esto durante el próximo mes más o menos. Si alguien quiere intentarlo y enviar un PR o una guía, ¡sería genial! :sonrisa:

Definitivamente lo hemos estado pensando y construyendo las piezas para hacerlo, pero todavía no hemos tenido tiempo de terminar la idea.

El almacenamiento universal (isomórfico) ahora es posible usando feathers-levelup , con leveldown (o cualquier otro backend de almacenamiento ) en el nodo y level-js en el navegador. (¡gracias @ derek-watson!)

mantener sincronizados los servicios de cliente y servidor se deja en manos del lector, pero debería ser sencillo con los eventos de datos en tiempo real . Si hace algún progreso aquí, agradecería cualquier módulo reutilizable, esto sería increíble. :sonrisa:

¡Sí! ¡Me olvidé de subir de nivel! Much: heart: a @ derek-watson por eso! Técnicamente, también puede utilizar NeDB en el navegador. Por tanto, existen pocas opciones de motor de almacenamiento diferentes.

Creo que se parecerá más a una receta que a cualquier módulo reutilizable. Quizás algunos ganchos agrupados en alguna parte. Si alguien progresa en esto antes que nosotros, por favor comparta. De lo contrario, probablemente lleguemos a esto en el próximo mes junto con el número 227.

¡Lo de leveldb se ve genial! Creo que combinado con https://github.com/feathersjs/feathers/issues/256 sería una buena base para implementar una funcionalidad real sin conexión. La extensión reactiva hará que sea mucho más fácil implementar cosas como el almacenamiento en caché fallido del lado del cliente, desde el cual, con suerte, solo será un pequeño paso para la sincronización completa fuera de línea.

Estoy trabajando en un middleware de Redux para satisfacer las necesidades comunes sin conexión de feathersjs.

Espero terminar pronto la primera versión.

@hnordt ¡Impresionante! Es posible que desee echar un vistazo a @ahdinosaur 's https://github.com/ahdinosaur/feathers-action y @saiichihashimoto' s https://github.com/saiichihashimoto/feathers-react-redux en busca de inspiración o tal vez a ¡colaborar!

Gracias @ekryski. Le echaré un vistazo.

feathers-react-redux necesita algo de trabajo para ser realmente útil, no estaba bien planeado. ;-)

+1 para agregar soporte de pouchdb

Creo que usar NeDB sería la mejor opción de sincronización sin conexión. Ya es compatible con la sintaxis de consulta completa, por lo que puede realizar consultas de la misma manera que si estuviera conectado al servidor. Tiene un rendimiento ridículo y tiene un motor de almacenamiento conectable para el navegador. Además, ya tenemos un adaptador diseñado para ello.

+1 para la solución NeDB. También me gusta para el servidor.

¿NeDB o LokiJS o PouchDB?
En comparación con NeDB, preferiría LokiJS ya que es aún más rápido y el autor tenía un plan para desarrollar una API totalmente compatible con mongodb.
Para PouchDB, es totalmente compatible con CouchDB. Entonces, usando un solo comando, la base de datos se puede sincronizar con cualquier servidor CouchDB.

Loki se ve muy bien.

Recomiendo LinvoDb https://github.com/Ivshti/linvodb3
Tiene consultas en vivo y escala mejor que NeDB

Literalmente, no tengo una opinión sobre cuál es la mejor solución de almacenamiento fuera de línea, ya que no sé nada sobre el almacenamiento móvil y las primeras aplicaciones fuera de línea, aparte de hacer mucho trabajo manual con el almacenamiento local. Pero probablemente valga la pena incluir en algún contexto lo que estamos haciendo en Headstart / lo que estamos pensando en caso de que cambie algunos interruptores para otros.

Estamos buscando agregar un poco de capacidad fuera de línea a nuestras aplicaciones en noviembre, tiempo de diciembre, por lo que aún no hemos abordado el meollo del problema.

Mientras tanto, probablemente usaremos algo como redux-persist para algunas de nuestras capacidades fuera de línea que necesitamos para un mvp.

https://github.com/rt2zz/redux-persist

Supongo que lo que estoy pensando es que hay alguna razón por la que las plumas deben admitir un adaptador local móvil.

Como aludió @ekryski, un conjunto de ganchos reutilizables en una biblioteca podría ser una mejor idea. Tratar de admitir muchos adaptadores para dispositivos móviles y del lado del servidor podría ser un margen demasiado amplio para que las plumas lo admitan dada (incluso más arriba) la cantidad de soluciones diferentes que la gente usaría y pediría.

Por mi parte, preferiría una biblioteca de ganchos que muestre cómo 'consolidar' en función de la conectividad móvil que cada persona puede aplicar a cualquier sistema de almacenamiento local que desee utilizar.

Espero que tenga sentido y no lo he entendido completamente.

@ gor181 como referencia.

@Mentioum, ¿cómo va su MVP de noviembre / diciembre, qué decidió usar?

Elegí usar ForerunnerDB

El domingo 27 de noviembre de 2016 a las 12:12 p.m. Luke Browell [email protected]
escribió:

@Mentioum https://github.com/Mentioum ¿cómo va su MVP de noviembre / diciembre?
¿Qué decidiste usar?

-
Estás recibiendo esto porque hiciste un comentario.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/feathersjs/feathers/issues/264#issuecomment-263144379 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ACFSMbrn_nO1oyNsoK0F41BqaetzowkNks5rCeQqgaJpZM4HxjN7
.

>

Maximiliano Alejandro
[email protected]
www.maxofeden.com

@eddyystop está haciendo un gran trabajo fuera de línea. Puede encontrar las guías con enlaces a todos los repositorios relacionados en https://docs.feathersjs.com/guides/offline-first/readme.html

Las discusiones y preguntas específicas deben dirigirse a los repositorios apropiados, así que creo que podemos cerrar esto.

Este problema se ha bloqueado automáticamente ya que no ha habido ninguna actividad reciente después de que se cerró. Abra un nuevo problema con un enlace a este problema para errores relacionados.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

huytran0605 picture huytran0605  ·  3Comentarios

rstegg picture rstegg  ·  3Comentarios

perminder-klair picture perminder-klair  ·  3Comentarios

jordanbtucker picture jordanbtucker  ·  4Comentarios

RickEyre picture RickEyre  ·  4Comentarios