La motivación detrás del desarrollo de CouchDB se puede definir con una palabra: relajarse. CouchDB viene con un conjunto de características diseñadas para reducir el esfuerzo que supone ejecutar un sistema distribuido resistente. A continuación se presentan algunas características clave de CouchDB y en qué se diferencia de otras bases de datos NoSQL.
Replicación. Una de las características definitorias de CouchDB es la replicación bidireccional, que permite la sincronización de datos a través de múltiples servidores y dispositivos mediante la replicación. Esta replicación permite a las empresas maximizar la disponibilidad de los sistemas, reducir los tiempos de recuperación de datos, geolocalizar los datos más cerca de los usuarios finales y simplificar los procesos de copia de seguridad.
En CouchDB, no se distingue si los datos se alojan en un servidor o en varios. Más bien, CouchDB identifica los cambios en los documentos a medida que se producen desde cualquier fuente y garantiza que todas las copias de la base de datos permanezcan sincronizadas con la información más actualizada. Esto permite que varias réplicas de bases de datos sean autónomas y se gestionen sin dejar de albergar información precisa y en tiempo real en múltiples entornos informáticos.
Vistas. CouchDB utiliza vistas como herramienta principal para ejecutar consultas y crear informes a partir de archivos de documentos almacenados. Las vistas le permiten filtrar documentos para encontrar información relevante para un proceso de base de datos en particular. Esta información puede luego mapearse según sus preferencias y extraerse en un orden específico.
La belleza de CouchDB es la libertad que tienes con la forma en que se presenta la información. Debido a que las vistas de CouchDB se construyen dinámicamente y no afectan directamente a ningún almacenamiento de documentos subyacente, no hay limitación en la cantidad de vistas diferentes de los mismos datos que puede ejecutar. Estas vistas se crean dentro de documentos de diseño especiales y se pueden replicar en varias instancias de base de datos como datos almacenados regulares.
Otra gran característica de CouchDB es la disponibilidad de MapReduce. Las vistas de CouchDB pueden llevar a cabo agregaciones de resumen de los datos contenidos en el índice. Estos están precalculados y almacenados, lo que significa que se pueden devolver al instante, incluso sobre miles de millones de documentos.
API HTTP. CouchDB utiliza una API REST para acceder a la base de datos desde cualquier lugar, con total flexibilidad de operaciones CRUD (crear, leer, actualizar, eliminar). Este medio simple y efectivo de conectividad de base de datos hace que CouchDB sea flexible, rápido y potente de usar, sin dejar de ser altamente accesible.
Diseñado para fuera de línea. Cuando se está escalando la usabilidad y accesibilidad de la base de datos, es esencial poder crear aplicaciones que funcionen tan bien fuera de línea como en línea. CouchDB permite a las aplicaciones almacenar los datos recopilados localmente en dispositivos móviles y navegadores, y luego sincroniza esos datos una vez que vuelven a estar en línea.
Almacenamiento eficiente de documentos. En CouchDB, los documentos JSON son las unidades principales de datos, junto con los archivos adjuntos binarios asociados, como las imágenes. No hay límite para el tamaño del texto o el recuento de elementos de cada documento. Cuando se replican, se puede acceder a los datos y actualizarlos en clústeres de servidores distribuidos globalmente.
Compatibilidad. CouchDB es extremadamente accesible y ofrece varios beneficios de compatibilidad cuando se integra con su infraestructura actual. CouchDB se escribió en Erlang (un lenguaje de programación y tiempo de ejecución de uso general, simultáneo y recolectado basura), por lo que es fiable y fácil de usar para los desarrolladores. Se puede colocar detrás de los balanceadores de cargas HTTP estándar. Los clientes HTTP están disponibles para todos los lenguajes de programación, así como para las bibliotecas de clientes específicas de CouchDB.
CouchDB es flexible y puede instalarse y ejecutarse en muchos sistemas operativos y herramientas de virtualización. También es compatible con PouchDB, una base de datos ligera diseñada para ejecutarse en el navegador web, incluso en dispositivos móviles.