stringtranslate.com

Base de datos Apache CouchDB

Apache CouchDB es una base de datos NoSQL orientada a documentos de código abierto , implementada en Erlang .

CouchDB utiliza múltiples formatos y protocolos para almacenar, transferir y procesar sus datos. Utiliza JSON para almacenar datos, JavaScript como lenguaje de consulta mediante MapReduce y HTTP para una API . [2]

CouchDB se lanzó por primera vez en 2005 y luego se convirtió en un proyecto de Apache Software Foundation en 2008.

A diferencia de una base de datos relacional , una base de datos CouchDB no almacena datos y relaciones en tablas. En cambio, cada base de datos es una colección de documentos independientes. Cada documento mantiene sus propios datos y esquema autónomo. Una aplicación puede acceder a varias bases de datos, como una almacenada en el teléfono móvil de un usuario y otra en un servidor. Los metadatos del documento contienen información de revisión, lo que permite fusionar cualquier diferencia que pueda haberse producido mientras las bases de datos estaban desconectadas.

CouchDB implementa una forma de control de concurrencia multiversión (MVCC) de modo que no bloquea el archivo de base de datos durante las escrituras. Los conflictos quedan a cargo de la aplicación. La resolución de un conflicto generalmente implica primero fusionar los datos en uno de los documentos y luego eliminar el documento obsoleto. [3]

Otras características incluyen semántica ACID a nivel de documento con consistencia eventual , MapReduce (incremental) y replicación (incremental). Una de las características distintivas de CouchDB es la replicación multimaestro , que le permite escalar entre máquinas para crear sistemas de alto rendimiento. Una aplicación web incorporada llamada Fauxton (anteriormente Futon) ayuda con la administración.

Historia

Couch es un acrónimo de cluster of unreliable commodity hardware (grupo de hardware no fiable) . [4] El proyecto CouchDB fue creado en abril de 2005 por Damien Katz, un ex desarrollador de Lotus Notes en IBM . Él mismo financió el proyecto durante casi dos años y lo publicó como un proyecto de código abierto bajo la Licencia Pública General de GNU .

En febrero de 2008, se convirtió en un proyecto de Apache Incubator y se ofreció bajo la licencia Apache . [5] Unos meses después, se convirtió en un proyecto de alto nivel. [6] Esto llevó a que se lanzara la primera versión estable en julio de 2010. [7]

A principios de 2012, Katz abandonó el proyecto para centrarse en Couchbase Server . [8]

Desde la partida de Katz, el proyecto Apache CouchDB ha continuado, lanzando la versión 1.2 en abril de 2012 y la 1.3 en abril de 2013. En julio de 2013, la comunidad CouchDB fusionó la base de código de BigCouch , la versión agrupada de CouchDB de Cloudant , en el proyecto Apache. [9] El marco de agrupamiento BigCouch está incluido en la versión actual de Apache CouchDB. [10]

La versión 2.0.0 admite la agrupación nativa y el nuevo servidor de consultas Mango proporciona una forma sencilla basada en JSON de realizar consultas CouchDB sin JavaScript ni MapReduce. Además, en la versión 2.0.0 se introdujo Fauxton, la nueva interfaz web integrada, que reemplaza a Futon, la antigua interfaz web integrada. [11]

Características principales

Semántica ACID
CouchDB proporciona semántica ACID . [12] Lo hace implementando una forma de control de concurrencia de múltiples versiones , lo que significa que CouchDB puede manejar un gran volumen de lectores y escritores simultáneos sin conflictos.
Creado para funcionar sin conexión
CouchDB puede replicarse en dispositivos (como teléfonos inteligentes) que pueden desconectarse y manejar la sincronización de datos cuando el dispositivo vuelva a estar en línea.
Arquitectura distribuida con replicación
CouchDB fue diseñado teniendo en mente la replicación (o sincronización) bidireccional y el funcionamiento sin conexión. Esto significa que varias réplicas pueden tener sus propias copias de los mismos datos, modificarlos y luego sincronizar esos cambios en un momento posterior.
Almacenamiento de documentos
CouchDB almacena datos como "documentos", como uno o más pares de campo/valor expresados ​​como JSON . Los valores de campo pueden ser elementos simples como cadenas, números o fechas; pero también se pueden utilizar listas ordenadas y matrices asociativas . Cada documento en una base de datos CouchDB tiene un identificador único y no se requiere ningún esquema de documento.
Consistencia eventual
CouchDB garantiza la consistencia final para poder proporcionar tanto disponibilidad como tolerancia a la partición.
Vistas e índices de Map/Reduce
Los datos almacenados se estructuran mediante vistas. En CouchDB, cada vista se construye mediante una función de JavaScript que actúa como la mitad del mapa de una operación de mapeo /reducción. La función toma un documento y lo transforma en un único valor que devuelve. CouchDB puede indexar vistas y mantener esos índices actualizados a medida que se agregan, eliminan o actualizan documentos.
API HTTP
Todos los elementos tienen una URL única que se expone a través de HTTP. Utiliza los métodos HTTP POST, GET, PUT y DELETE para las cuatro operaciones CRUD básicas (Crear, Leer, Actualizar, Eliminar) en todos los recursos.

CouchDB también ofrece una interfaz de administración incorporada accesible a través de la Web llamada Fauxton. [13]

Casos de uso e implementaciones de producción

Las capacidades de replicación y sincronización de CouchDB lo hacen ideal para su uso en dispositivos móviles, donde la conexión de red no está garantizada y la aplicación debe seguir funcionando sin conexión.

CouchDB es ideal para aplicaciones con datos que se acumulan y cambian ocasionalmente, en las que se deben ejecutar consultas predefinidas y donde el control de versiones es importante (sistemas CRM, CMS, por ejemplo). La replicación maestro-maestro es una característica especialmente interesante, que permite implementaciones sencillas en varios sitios. [14]

Usuarios

Los usuarios de CouchDB incluyen:

Manipulación de datos: documentos y vistas

CouchDB administra una colección de documentos JSON . Los documentos se organizan mediante vistas. Las vistas se definen con funciones agregadas y los filtros se calculan en paralelo, de forma similar a MapReduce .

Las vistas generalmente se almacenan en la base de datos y sus índices se actualizan continuamente. CouchDB admite un sistema de vistas que utiliza servidores de socket externos y un protocolo basado en JSON. [27] Como consecuencia, se han desarrollado servidores de vistas en una variedad de lenguajes (JavaScript es el predeterminado, pero también existen PHP, Ruby, Python y Erlang).

Acceso a datos a través de HTTP

Las aplicaciones interactúan con CouchDB a través de HTTP. A continuación, se muestran algunos ejemplos en los que se utiliza cURL , una utilidad de línea de comandos. En estos ejemplos se supone que CouchDB se ejecuta en el host local (127.0.0.1) en el puerto 5984.

Componentes de código abierto

CouchDB incluye varios otros proyectos de código abierto como parte de su paquete predeterminado.

Véase también

Referencias

  1. ^ "Versión 3.4.2". 20 de octubre de 2024. Consultado el 21 de octubre de 2024 .
  2. ^ Apache Software Foundation. «Apache CouchDB» . Consultado el 15 de abril de 2012 .
  3. ^ Smith, Jason. "¿Qué es el protocolo de replicación de CouchDB? ¿Es como Git?". StackOverflow . Stack Exchange . Consultado el 14 de abril de 2012 .
  4. ^ "Explorando CouchDB". Developer Works . IBM. 31 de marzo de 2009 . Consultado el 30 de septiembre de 2016 .
  5. ^ Anuncio de la lista de correo de Apache en mail-archives.apache.org
  6. ^ Re: Resolución propuesta: Establecer TLP de CouchDB en mail-archives.apache.org
  7. ^ "Base de datos NoSQL CouchDB lista para su uso en producción" Archivado el 15 de noviembre de 2010 en Wayback Machine , artículo de PC World de julio de 2010
  8. ^ Katz, Damien. "El futuro de CouchDB" . Consultado el 15 de abril de 2012 .
  9. ^ Slater, Noah (25 de julio de 2013). «Welcome BigCouch» (Bienvenido BigCouch) . Consultado el 25 de julio de 2013 .
  10. ^ "'2.0'". 20 de septiembre de 2016 . Consultado el 13 de enero de 2017 .
  11. ^ "1.8. 2.0.x Branch — Apache CouchDB® 3.3 Documentation" (Documentación de Apache CouchDB® 3.3). docs.couchdb.org . Consultado el 4 de agosto de 2024 .
  12. ^ CouchDB, descripción técnica general Archivado el 20 de octubre de 2011 en Wayback Machine .
  13. ^ "couchdb-fauxton". GitHub . apache . Consultado el 2 de mayo de 2023 .
  14. ^ Comparación de Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase de Kristóf Kovács
  15. ^ "Por qué los científicos del Gran Colisionador de Hadrones utilizan CouchDB". ReadWrite . 2010-08-26 . Consultado el 2022-03-29 .
  16. ^ iDAT, Código de la Cruz Roja, 2021-07-31 , consultado el 2022-03-29
  17. ^ "Database-Deep-Dives-CouchDB" (Análisis profundo de bases de datos en CouchDB). www.ibm.com . 19 de julio de 2019. Consultado el 29 de marzo de 2022 .
  18. ^ "Database-Deep-Dives-CouchDB" (Análisis profundo de bases de datos en CouchDB). www.ibm.com . 19 de julio de 2019. Consultado el 29 de marzo de 2022 .
  19. ^ "United Airlines optimiza sus operaciones con Couchbase | Caso práctico" www.couchbase.com . Consultado el 29 de marzo de 2022 .
  20. ^ "CouchDB en la naturaleza" Archivado el 20 de julio de 2017 en Wayback Machine Artículo de la Web del producto, una lista de proyectos de software y sitios web que utilizan CouchDB
  21. ^ Cutler, Kim-Mai (9 de junio de 2012). "Meebo recibe el tratamiento clásico de Google Acq-hire: la mayoría de los productos cerrarán pronto". TechCrunch . AOL Inc . Consultado el 7 de enero de 2016 .
  22. ^ "npm-registry-couchapp". GitHub . npm. 17 de junio de 2015 . Consultado el 7 de enero de 2016 .
  23. ^ CouchDB en la BBC como un almacén de clave-valor de múltiples centros de datos, escalable y tolerante a fallos
  24. ^ Correo electrónico de Elliot Murphy (Canonical) Archivado el 5 de mayo de 2011 en Wayback Machine a la lista CouchDB-Devel
  25. ^ Canonical elimina CouchDB de Ubuntu One (Slashdot)
  26. ^ "Protogrid - Sobre nosotros".
  27. ^ Ver documentación del servidor Archivado el 20 de octubre de 2008 en Wayback Machine en wiki.apache.org

Bibliografía

Enlaces externos