CouchDB - Introducción

El sistema de gestión de bases de datos proporciona un mecanismo para el almacenamiento y recuperación de datos. Hay tres tipos principales de sistemas de gestión de bases de datos, a saber, RDBMS (sistemas de gestión de bases de datos relacionales), OLAP (sistemas de procesamiento analítico en línea) y NoSQL.

RDBMS

RDBMS son las siglas de Relational Database Management System. RDBMS es la base de SQL y de todos los sistemas de bases de datos modernos como MS SQL Server, IBM DB2, Oracle, MySQL y Microsoft Access.

Un sistema de gestión de bases de datos relacionales (RDBMS) es un sistema de gestión de bases de datos (DBMS) que se basa en el modelo relacional introducido por EF Codd.

Los datos en RDBMS se almacenan en objetos de base de datos llamados tables. La tabla es una colección de entradas de datos relacionados y consta de columnas y filas. Almacena solo datos estructurados.

OLAP

El servidor de procesamiento analítico en línea (OLAP) se basa en el modelo de datos multidimensionales. Permite a los administradores y analistas obtener una perspectiva de la información a través de un acceso rápido, consistente e interactivo a la información.

Bases de datos NoSQL

Una base de datos NoSQL (a veces llamada No solo SQL) es una base de datos que proporciona un mecanismo para almacenar y recuperar datos distintos de las relaciones tabulares utilizadas en las bases de datos relacionales. Estas bases de datos no tienen esquemas, admiten una replicación sencilla, tienen una API simple, eventualmente son consistentes y pueden manejar grandes cantidades de datos (big data).

El objetivo principal de una base de datos NoSQL es tener lo siguiente:

  • Simplicidad de diseño,
  • Escalado horizontal y
  • Mayor control sobre la disponibilidad.

Las bases de datos NoSQL utilizan diferentes estructuras de datos en comparación con las bases de datos relacionales. Acelera algunas operaciones en NoSQL. La idoneidad de una base de datos NoSQL determinada depende del problema que deba resolver. Estas bases de datos almacenan tanto datos estructurados como datos no estructurados como archivos de audio, archivos de video, documentos, etc. Estas bases de datos NoSQL se clasifican en tres tipos y se explican a continuación.

Key-value Store- Estas bases de datos están diseñadas para almacenar datos en pares clave-valor y estas bases de datos no tendrán ningún esquema. En estas bases de datos, cada valor de datos consta de una clave indexada y un valor para esa clave.

Ejemplos: BerkeleyDB, Cassandra, DynamoDB, Riak.

Column Store- En estas bases de datos, los datos se almacenan en celdas agrupadas en columnas de datos, y estas columnas se agrupan en familias de columnas. Estas familias de columnas pueden contener cualquier número de columnas.

Ejemplos: BigTable, HBase e HyperTable.

Document Store- Son las bases de datos desarrolladas sobre la idea básica de almacenes clave-valor donde los "documentos" contienen datos más complejos. Aquí, a cada documento se le asigna una clave única, que se utiliza para recuperar el documento. Estos están diseñados para almacenar, recuperar y administrar información orientada a documentos, también conocida como datos semiestructurados.

Ejemplos: CouchDB y MongoDB.

¿Qué es CouchDB?

CouchDB es una base de datos de código abierto desarrollada por la fundación de software Apache. La atención se centra en la facilidad de uso, abarcando la web. Es una base de datos de almacenamiento de documentos NoSQL.

Utiliza JSON, para almacenar datos (documentos), script java como lenguaje de consulta para transformar los documentos, protocolo http para que api acceda a los documentos, consultar los índices con el navegador web. Es una aplicación multimaestro lanzada en 2005 y se convirtió en un proyecto de apache en 2008.

¿Por qué CouchDB?

  • CouchDB tiene una API REST basada en HTTP, que ayuda a comunicarse fácilmente con la base de datos. Y la estructura simple de los recursos y métodos HTTP (GET, PUT, DELETE) son fáciles de entender y usar.

  • Como almacenamos datos en la estructura flexible basada en documentos, no hay necesidad de preocuparse por la estructura de los datos.

  • Los usuarios cuentan con un potente mapeo de datos, que permite consultar, combinar y filtrar la información.

  • CouchDB proporciona una replicación fácil de usar, mediante la cual puede copiar, compartir y sincronizar los datos entre bases de datos y máquinas.

Modelo de datos

  • La base de datos es la estructura / contenedor de datos más externo en CouchDB.

  • Cada base de datos es una colección de documentos independientes.

  • Cada documento mantiene sus propios datos y un esquema autónomo.

  • Los metadatos del documento contienen información de revisión, lo que permite fusionar las diferencias ocurridas mientras las bases de datos estaban desconectadas.

  • CouchDB implementa control de simultaneidad de múltiples versiones, para evitar la necesidad de bloquear el campo de la base de datos durante las escrituras.

Características de CouchDB: Reducir el contenido

Almacenamiento de documento

CouchDB es una base de datos NoSQL de almacenamiento de documentos. Proporciona la posibilidad de almacenar documentos con nombres únicos, y también proporciona una API llamada RESTful HTTP API para leer y actualizar (agregar, editar, eliminar) documentos de base de datos.

En CouchDB, los documentos son la unidad principal de datos y también incluyen metadatos. Los campos de documento tienen un nombre único y contienen valores de diferentes tipos (texto, número, booleano, listas, etc.), y no hay un límite establecido para el tamaño del texto o el recuento de elementos.

Las actualizaciones de documentos (agregar, editar, eliminar) siguen a Atomicity, es decir, se guardarán por completo o no se guardarán en absoluto. La base de datos no tendrá ningún documento parcialmente guardado o editado.

Estructura del documento Json

{
   "field" : "value",
   "field" : "value",
   "field" : "value",
}

Propiedades ACID

CouchDB contiene propiedades ACID como una de sus características.

Coherencia: cuando los datos en CouchDB se confirmaron una vez, estos datos no se modificarán ni se sobrescribirán. Por lo tanto, CouchDB asegura que el archivo de la base de datos siempre estará en un estado consistente.

Las lecturas de CouchDB utilizan un modelo de control de concurrencia de múltiples versiones (MVCC), por lo que el cliente verá una instantánea coherente de la base de datos desde el principio hasta el final de la operación de lectura.

Siempre que se actualiza un documento, CouchDB descarga los datos en el disco y el encabezado de la base de datos actualizada se escribe en dos partes consecutivas e idénticas para formar los primeros 4k del archivo, y luego se descarga sincrónicamente en el disco. Las actualizaciones parciales durante la descarga se descartarán.

Si la falla ocurrió mientras se confirmaba el encabezado, quedará una copia superviviente de los encabezados idénticos anteriores, lo que garantiza la coherencia de todos los datos previamente comprometidos. Excepto en el área del encabezado, las comprobaciones de coherencia o las reparaciones después de un accidente o un corte de energía nunca son necesarias.

Compactación

Siempre que el espacio en el archivo de la base de datos se desperdicie por encima de cierta extensión, todos los datos activos se copiarán (clonarán) en un nuevo archivo. Cuando el proceso de copia se haya completado por completo, el archivo antiguo se descartará. Todo esto se realiza mediante proceso de compactación. La base de datos permanece en línea durante la compactación y todas las actualizaciones y lecturas pueden completarse con éxito.

Puntos de vista

Los datos en CouchDB se almacenan en documentos semiestructurados que son flexibles con estructuras implícitas individuales, pero es un modelo de documento simple para el almacenamiento y el intercambio de datos. Si queremos ver nuestros datos de muchas formas diferentes, necesitamos una forma de filtrar, organizar e informar sobre los datos que no se han descompuesto en tablas.

Para resolver este problema, CouchDB proporciona un modelo de vista. Las vistas son el método de agregar e informar sobre los documentos en una base de datos, y se crean a pedido para agregar, unir e informar sobre los documentos de la base de datos. Dado que las vistas se crean de forma dinámica y no afectan al documento subyacente, puede tener tantas representaciones de vistas diferentes de los mismos datos como desee.

Historia

  • CouchDB fue escrito en lenguaje de programación Erlang.
  • Fue iniciado por Damien Katz en 2005.
  • CouchDB se convirtió en un proyecto de Apache en 2008.

La versión actual de CouchDB es 1.61.