Acabo de enviar un correo electrónico a nuestro comunidad móvil de código abierto compartiendo algunos avances interesantes que hemos hecho en los últimos meses. También quiero compartirlo con el blog, porque estoy seguro de que muchos de nuestros usuarios de bases de datos también tienen retos móviles. Creo que la sincronización es fundamental para los dispositivos conectados, y la sincronización es también un puente importante entre los casos de uso de las bases de datos tradicionales y el mundo en red. El modelo de documento JSON se adapta bien a los patrones de sincronización, así que espero que el enfoque que compartimos hoy añada otra razón para que la gente pruebe NoSQL.
Nuestro equipo móvil ha estado desarrollando un nuevo adaptador para sincronizar Couchbase Server con dispositivos móviles. Hemos recibido los primeros comentarios de algunos de nuestros usuarios (¡gracias!) También hemos estado escribiendo aplicaciones de ejemplo y poniéndolo a prueba, y realmente nos gusta. Nos gusta tanto que estamos planeando construir el futuro de Couchbase para Móvil en torno a él.
(Los veteranos pueden reconocer el nombre 'Couchbase Mobile' como nuestra antigua base de datos móvil de 2011. Ahora estamos reutilizando el nombre como un paraguas para nuestro esfuerzo global, incluyendo los componentes del lado del servidor, así como la base de datos móvil nativa).
Anteriormente, nuestra tecnología Syncpoint intentaba abordar la gestión de bases de datos independientes para cada canal de sincronización. Esto era un poco complicado, debido a las limitaciones inherentes al modelo de seguridad y replicación filtrada de Apache CouchDB.
Couchbase for Mobile adopta un nuevo enfoque, utilizando la capacidad de índice incremental de Couchbase Server 2.0 para la sincronización, por lo que tus datos viven en un almacenamiento escalable y los canales son ligeros. Los documentos también pueden pertenecer a múltiples canales, y ser visibles para múltiples usuarios, sin hacer copias redundantes en el servidor.
Hemos hablado con algunos de ustedes sobre este nuevo modelo de canal ligero, y los comentarios han sido abrumadoramente positivos. La pertenencia a un canal se determina mediante una función de mapa de canales. He aquí un ejemplo de mapeador de canales que permitiría etiquetar documentos con propietarios y miembros.
si (doc.propietario_id) {
sincronizar("dueño..."+doc.propietario_id);
}
si (doc.miembros) {
para (var i = 0; i < doc.miembros.longitud; ++i)
sincronizar("miembro-" + doc.miembros[i]);
}
}
La otra mitad del modelo es la API de autorización de Sync Gateway para declarar a qué canales puede acceder cada usuario. Básicamente, cada cuenta de usuario de Sync Gateway incluye una lista de canales a los que tiene acceso. El usuario sólo puede leer documentos etiquetados con uno de esos canales, y la replicación se filtrará automáticamente a esos canales.
Según los comentarios que hemos recibido, este modelo debería poder componerse de muchas maneras diferentes. Por ejemplo, en el ejemplo de las aplicaciones wiki y chat, cada sala de chat o wiki diferente corresponde a un canal. Cada sala de chat tiene muchos mensajes, y cada wiki puede tener varias páginas. Así que en estas aplicaciones, un usuario será normalmente miembro o propietario de un puñado de canales.
En otras aplicaciones, cada usuario sólo puede sincronizar desde un único canal, con un nombre correspondiente a su nombre de usuario. O puedes tener un canal para fotos grandes y otro para miniaturas más pequeñas, y sincronizar el canal de fotos grandes solo cuando estés conectado por WiFi.
Todavía queda mucho por hacer antes de que Couchbase para móviles esté listo para el prime time. Esperamos tener una primera versión en unos meses. Nos centraremos en probar el modelo de canal. Para versiones posteriores, nos centraremos en el rendimiento y la escalabilidad, así como en añadir cualquier característica que falte identificada por los primeros usuarios.
Como parte de nuestro enfoque en la movilidad, hemos decidido cambiar el nombre de TouchDB a Couchbase Lite. No se trata de un cambio técnico. Seguiremos utilizando el mismo protocolo CouchSync compatible con versiones anteriores, por lo que puedes estar seguro de que no estamos rompiendo la compatibilidad con los backends de sincronización existentes. Y estamos muy contentos de estar construyendo lo que se convertirá en la mejor solución de sincronización integrada de su clase.
Si quieres empezar, aquí tienes un punto de partida.
Estoy impaciente por ver lo que construyes.
¿En qué se diferencia designar un canal de un cliente móvil que realiza una replicación filtrada que se sincroniza con un subconjunto de los documentos del servidor?
La principal diferencia es que se basa en índices. La replicación filtrada sin índices de canal requiere que el filtro se ejecute en millones de documentos potencialmente irrelevantes por cada documento que coincida. Los índices de canal permiten obtener un rendimiento aceptable incluso con big data.
¡BUM! Esto es exactamente lo que estaba buscando. ¿Las bases de datos Lite podrán utilizar esto para replicar entre bases de datos Lite (pronto o en el futuro)?
Actualmente no tenemos canales indexados en el dispositivo móvil, ya que los conjuntos de datos que la mayoría de la gente tiene allí son lo suficientemente pequeños como para que los filtros normales estén bien.
Gracias por el artículo Chris, ¡es de gran ayuda!