2012-05-11 23 views
8

¿Hay un backend simulado para CouchDB, es decir, la misma interfaz y semántica REST pero puramente en la memoria? Tenemos una suite de pruebas que ejecuta cada prueba en una base de datos prístina en todo momento (para ser reproducible), pero correr contra una base de datos real podría ser más rápido.Implementación en memoria de CouchDB

Respuesta

6

¿Quiere decir correr contra una base de datos simulacro?

No creo que haya algo listo para usar. Dos ideas:

  1. CouchDB en un sistema de archivos de memoria. Configure un ramdisk, o un montaje tmpfs, y configure CouchDB database_dir y view_index_dir para que apunten allí.
  2. PouchDB está trasladando CouchDB al navegador IndexedDB estándar. No dijiste qué idioma y entorno estás usando, pero si puedes ejecutar Node.js, vale la pena investigarlo. PouchDB tiene un buen impulso y creo que se ejecutará en Node.js pronto (quizás a través de jsdom o de otra biblioteca. Tenga en cuenta que esto no le ofrece la solución completa, pero ha expandido su pregunta a "¿hay memoria indexada en la memoria interna? implementaciones para Node.js "para la cual la respuesta es" sí "o" pronto ", dada su trayectoria de adopción.
+1

Evité usar la palabra "simulacro", porque lo que realmente quiero es ejecutar contra una base de datos real, solo con un motor de fondo más rápido (no necesariamente persistente). Los simulacros nunca son 100% compatibles, y los simulacros precisos son costosos de mantener. –

+0

Derecha.Necesitas un "simulacro" que sea tan fiel a lo real que es, de hecho, lo real. Esa es una buena prueba. Lamentablemente, no tengo mejores ideas que las dos medias respuestas que enumeré (que no suman un total). – JasonSmith

0

Tengo el mismo problema ... para las pruebas simplemente no quiero configurar un couchdb ... solo quiero tener algo de memoria, tan fácil como sea posible.

Qué hice: * Creé una memoria CouchDB Connector => Es solo una implementación muy simple de "org.ektorp.CouchDbConnector " * En primavera, cableo el CouchDbCo nnection-Implementación que necesito => cuando lo uso para mi dev-tests conecto mi memoria CouchDB Connector, si quiero conectarme a un CouchDb real, uso el conector usual => org.ektorp.impl.StdCouchDbConnector

El único problema es que "org.ektorp.CouchDbConnector" tiene más de 50 métodos, que deben implementarse. Para mis problemas fue suficiente implementar solo algunos de estos métodos. Depende de tus testcases.

2

Ya es tarde para la fiesta, pero he tenido un gran éxito usando pouchdb-server, basado en el ya mencionado proyecto PouchDB (una implementación de JavaScript de CouchDB). Se puede ejecutar contra una variedad de back-ends, incluyendo un back-end en memoria. Eso significa que puede ejecutar

pouchdb-server --in-memory 

para obtener un servidor compatible con CouchDB en memoria. También hay varias otras opciones de línea de comandos para explorar.

Creo que es capaz de ejecutar todo el conjunto de pruebas CouchDB, así que supongo que es bastante poco probable que se encuentre con demasiadas diferencias de implementación.

-1

memorydb es una vista parcial (en curso) aplicación en memoria de CouchDB para ser utilizado con Kivik, que se puede ejecutar como un servidor independiente.

No toda la funcionalidad está implementada todavía.