2010-12-15 21 views
7

Espero que alguien pueda validar o corregir mis conclusiones aquí.¿Se puede usar realmente CouchDB para una aplicación de escritorio?

Estoy buscando escribir un pequeño proyecto paralelo. Quiero crear una aplicación de escritorio para tomar notas que se sincronizarán con un servidor web, de manera que se puedan mantener varias instalaciones en el paso y compartir datos y también para que se pueda acceder a ellas a través de un navegador si es necesario.

Estuve medio escuchando los ruidos de CouchDB y escuché mencionar la "funcionalidad fuera de línea", de desktop-couchdb y de movimientos para utilizar su capacidad de manejar comunicaciones intermitentes para habilitar aplicaciones distribuidas en el mercado móvil. Todo esto me llevó a pensar que podría ser una opción interesante para mi almacenamiento de datos y también para mis necesidades de sincronización, pero después de pasar algún tiempo buscando información sobre cómo comenzar, mi conclusión es que tengo completamente el extremo equivocado del stick y la realidad es que:

No hay forma de empaquetar una instancia de CouchDB, distribuyéndola como parte de una aplicación de escritorio y ejecutándola en el contexto de esa aplicación para proporcionar almacenamiento local y sincronización a una base de datos central.

¿Es correcto aquí? Si es así, ¿hay alguna tecnología por ahí que haga este tipo de cosas o me queda simplemente rodar mi propio almacenamiento local y tal vez todavía usar CouchDB en el servidor?

+0

Al menos una persona decidió que la respuesta era no: http://philwilson.org/blog/2009/04/couchdb-in-desktop-applications – RobertB

+0

Pero luego está el esfuerzo de escritorio en Ubuntu: https: // launchpad.net/desktopcouch Parece ser * nix-only en este punto. Los documentos más interesantes están aquí: http://www.freedesktop.org/wiki/Specifications/desktopcouch – RobertB

Respuesta

5

Update (2012/05): echa un vistazo a los nuevos proyectos de TouchDB Couchbase si se dirigen a Mac OS X and/or iOS o Android. Estos realmente usan SQLite bajo el capó (al menos por ahora) pero pueden replicar a/desde un servidor CouchDB "real". Otra alternativa al lado del cliente que finalmente está comenzando a madurar es PouchDB, que se ejecuta en motores de navegación con capacidad de IndexedDB. Usar estos o usarlos para inspirar un puerto similar a otra plataforma de escritorio ahora se está convirtiendo en una ruta mejor.

Respuesta original:

No hay manera de empaquetar una instancia CouchDB, distribuyéndola como parte de una aplicación de escritorio y ejecutarlo en el contexto de que aplicación para proporcionar almacenamiento local y la sincronización a una base de datos central .

En este punto en el tiempo, su estado es prácticamente correcta aunque es posible incluir CouchDB en una aplicación - para un ejemplo ver CouchDBX.app que es una envoltura delgada alrededor de un haz prefijado de CouchDB y todas sus dependencias .

La forma más fácil de crear una aplicación CouchDB es suponer que el usuario ya tendrá a CouchDB server en ejecución. Esto es más fácil de lo que parece, especialmente con el alojamiento de Couchone o una aplicación precompilada como CouchDBX en OS X o DesktopCouch en Ubuntu. Esto último es especialmente interesante, porque si lo entiendo correctamente está incluido por defecto con Ubuntu en estos días, y automáticamente activa un servidor CouchDB por usuario cuando consulta su puerto a través de D-Bus. Algo similar podría (y debería) hacerse en OS X usando launchd y Bonjour.

Así que mientras escribe, o bien diseñaría su aplicación para almacenar datos en un formato local y, opcionalmente, sincronizaría con un servicio CouchDB que proporcione o tendría build y empaquetaría todo Erlang, SpiderMonkey y CouchDB junto con su aplicación junto con algunas secuencias de comandos para asegurarse de que se ejecutara cuando sea necesario. Esto es posible, pero obviamente ninguno de estos es ideal, y créanme que no es el único que desea una solución más simple para aplicaciones orientadas a escritorio.

+0

Gracias por la respuesta (y para los comentaristas). Había imaginado algo así como una tienda local de SQLite y una biblioteca que se podría contar acerca de una instancia remota de CouchDB. Oh, bueno, tal vez en el futuro en algún momento. – mwtb

+0

De hecho, esto ha estado sucediendo en los últimos meses! Mira mis enlaces a TouchDB en la actualización de mi respuesta anterior. – natevw

Cuestiones relacionadas