La motivación detrás del desarrollo de CouchDB se puede definir con una palabra: relajarse. CouchDB viene con una suite de características diseñadas para reducir el esfuerzo de ejecutar un sistema distribuido Resilient® . Estas son 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 hay distinción si los datos se alojan en un servidor o en varios. Más bien, CouchDB identifica los cambios en los documentos a medida que ocurren 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 mapearse según sus preferencias y extraerse en un orden específico.
La belleza de CouchDB es la libertad que tienes con cómo se presenta la información. Debido a que las vistas de CouchDB se construyen dinámicamente y no afectan directamente a ningún documento subyacente que se almacena, 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 múltiples instancias de bases de datos, como datos almacenados regulares.
Otra gran característica de CouchDB es la disponibilidad de MapReduce. Las vistas de CouchDB pueden realizar agregaciones de resumen de los datos contenidos en el índice. Estos se calculan previamente y se almacenan, 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 eficaz de conectividad de bases de datos hace que CouchDB sea flexible, rápido y potente de usar, sin dejar de ser muy 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 binarios adjuntos asociados, como las imágenes. No hay límite para el tamaño del texto o la cantidad 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 una variedad de beneficios de compatibilidad cuando se integra con su infraestructura actual. CouchDB fue escrito en Erlang (un lenguaje de programación y sistema de tiempo de ejecución de propósito general, concurrente y de recolección de basura), lo que lo hace confiable y fácil de usar para los desarrolladores. Se puede colocar detrás de balanceadores de carga HTTP estándar. Hay clientes HTTP disponibles para todos los lenguajes de programación, así como bibliotecas de cliente específicas de CouchDB.
CouchDB es flexible y se puede instalar y ejecutar 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.