SlideShare una empresa de Scribd logo
1
INFORME 03: Apache CouchDB
UNIVERSIDAD NACIONAL DEL ALTIPLANO
Escuela Profesional de Ingeniería de Sistemas
Paye Zamata, Kevin Arnold
arnyeld@gmail.com
1. Resumen
En este informe se describe la capacidad de las bases de datos NoSQL y principalmente
de CouchDB una base de datos no relacional de tipo documental cuyo motor de
programación está basado en JavaScript y estructura establecida en JSON. Además se
da un estudio de las principales características de esta base de datos tales como
tolerancia a particiones, y disponibilidad.
Posteriormente se da uso al Teorema CAP para conocer en qué caso es conveniente el
uso de CouchDB y así hacer que la elección de CouchDB sea la más apropiada para algún
proyecto en particular.
Finalmente se muestra un ejemplo simple y practico utilizando el modelo de
programación MapReduce.
2. Introducción
La utilización de una base de datos no relacional ha captado la atención de muchas
empresas en los últimos años, pero esto no significa que sean mejores que las bases de
datos de tipo relacional, sino que son una alternativa para dar solución a determinados
problemas que estas presentan cuando se tratan grandes cantidades de datos.
CouchDB cuenta con características que se enfocan principalmente a la facilidad de uso,
utilizando su interfaz WEB llamada “Futon” para darle funcionalidad, esto la hace
sencilla y de rápido entendimiento intentando no interponerse entre el desarrollador y
la aplicación.
3. Las Bases de Datos NoSQL
Se puede decir el término NoSQL surge con la llegada de la web 2.0, con la aparición de
aplicaciones en donde cualquier usuario podía subir contenido, provocando así un
crecimiento exponencial de los datos. Es en ese momento cuando aparecen las
complicaciones en la gestión de toda esainformación en las bases de datos relacionales,
en un principio, para solucionar estos problemas de accesibilidad, las empresas optaron
por utilizar un mayor número de máquinas pero pronto se dieron cuenta de que esto no
solucionaba el problema, además de ser una solución muy cara. La otra solución era la
creación de sistemas pensados para un uso específico que con el paso del tiempo han
dado lugar a soluciones robustas, apareciendo así el movimiento NoSQL.
2
Las Bases de Datos NoSQL son sistemas de almacenamiento de información que no
cumplen con el esquema entidad–relación. Tampoco utilizan una estructura de datos en
forma de tabla donde se van almacenando los datos sino que para el almacenamiento
hacen uso de otros formatos como clave–valor, mapeo de columnas, orientado a
documentos o grafos.
Figura 1. Clasificación de Bases de datos NoSQL
4. CouchDB
Apache CouchDb más conocido como CouchDB fue creado en abril de 2005 por Damien
Katz (ex desarrollador de Lotus Notes en IBM) y programado en Erlang.
“CouchDB es un gestor de base de datos orientado a documentos que se enfoca
principalmente a la facilidad de uso y que abarca completamente la web”.1
CouchDB Almacena los datos en JSON es capaz de acceder a documentos y consultar
índices con un navegador web a través de HTTP, también posee características tales
como la transformación de documentos y notificaciones en tiempo real. Indexa,
combina y transforma sus documentos con JavaScript o sus aplicaciones de manera
eficiente. Además CouchDB tiene lacaracterísticade detección automática de conflictos
cuando se presenta una falla, todo esto hace que el desarrollo de aplicaciones WEB sea
fácil de utilizar. CouchDB es altamente disponible, tolerante a la partición.
1
Apache CouchDB Release 2.0.0-git
https://media.readthedocs.org/pdf/couchdb/latest/couchdb.pdfpag.1
3
4.1. Relax de CouchDB
“Si hay una palabra que describe a CouchDB, tiene que ser Relax… cuando
arrancamos CouchDB vemos: -Apache CouchDB has started. Time to relax-”.2
CouchDB intenta que su uso sea natural para cualquiera que ha trabajado en un
entorno Web, Relax está dividido en tres áreas de relajación que a continuación se
describen:
 CouchDB procura no interponerse cuando algún desarrollador está intentando
construir una solución especializada.
 Otro punto relajante para el usuario de CouchDB es el entorno de producción,
CouchDB se preocupa una vez más de no molestar al usuario gracias a que su
arquitectura interna tolera fallos, y los errores se dan en un entorno controlado
y se resuelven de manera apropiada, los problemas puntuales no afectan al
servidor entero sino que permanecen aislados en una única consulta.
 El tercer punto de relajación se da a la hora de incrementar o reducir Software.
A primera vista CouchDB parece inflexible pero algunas cosas se han dejado
fuera intencionalmente simplemente porque si CouchDB las tuviera permitirían
al usuario crear aplicaciones que no escalan correctamente.
4.2. Replicación en CouchdB
La función fundamental de la Replicación es sincronizar dos o más bases de datos
de CouchDB. Esto puede sonar simple, pero la simplicidad es la pieza clave para
permitir que la replicación solvente varios problemas: sincronizar de manera fiable
bases de datos entre múltiples máquinas para tener almacenamiento redundante;
distribuir datos a un cluster de instancias de CouchDB que comparten un
subconjunto del total de consultas que llegan a ese cluster (balance de carga).
Figura 2. Replicación en CouchDB
2 http://guide.couchdb.org/editions/1/es/why.html
4
La replicación en CouchDB usa la misma REST API que todos los demás clientes. El
protocolo HTTP es transparente y está estudiado en profundidad. La replicación
funciona de forma incremental; esto es, que si cualquier cosa sale mal durante la
replicación, como una desconexión de red, continuará donde secortó lapróxima vez
que se ejecute. Del mismo modo, solamente transfiere los datos necesarios para
sincronizar las bases de datos.
5. Consideraciones al usar CouchDB
5.1. Teorema CAP
El Teorema CAP, también conocido como Teorema Brewer, demuestra que “Es
imposible garantizar a la vez consistencia, disponibilidad y tolerancia a particiones”.
Este teorema establece las características de cada una de las bases de datos NoSQL
y ayuda a elegir, de entre las múltiples posibilidades, qué sistema de bases de datos
es el más adecuado para satisfacer nuestras necesidades de negocio.
El teorema CAP se describe de la siguiente forma:
 La C se refiere a la consistencia, es decir, todos los clientes deben ver la
misma información al mismo tiempo. La consistencia se consigue
replicando la información.
 La A se refiere a la disponibilidad (Availability) y esto se traduce en que cada
cliente puede siempre leer y/o escribir sobre la base. La disponibilidad se
consigue actualizando la información de todos los nodos.
 La P se refiere a la tolerancia a la partición, que es lo mismo que decir si el
sistema va a funcionar de manera correcta a pesar que se generen
particiones de información entre sus nodos. La tolerancia a la partición se
consigue definiendo reglas que indiquen qué debe hacerse en caso de que
falle un nodo o no se tenga acceso a él.
5.2. Teorema CAP en CouchDB
Para CouchDB el Teorema CAP determina que esta base de datos garantiza la
disponibilidad y la tolerancia a particiones, pero no puede asegurar una total
consistencia. A veces se puede llegar a conseguir una consistencia parcial gracias a
la replicación y a la verificación. En este caso los clientes serán capaces de leer y
escribir siempre, aunque se haya caído un nodo y el sistema continuará funcionado
aunque existan caídas parciales o fallos que lo dividan.
5
Figura 3 Teorema CAP en CouchDB
6. Organizaciones que usan CouchDB
Entre las empresas que han usado o actualmente usan CouchDB se pueden
mencionar:
 Ubuntu para su servicio de sincronización "Ubuntu One" hasta
noviembre de 2011 pero fue descontinuado por problemas de
escalabilidad.13
 La BBC, para sus plataformas de contenidos dinámicos14
 Credit Suisse, para usos internos en el departamento de commodities
para su framework de mercados.11
 Meebo, para su plataforma social (web y aplicaciones) - Meebo fue
adquirido por Google y cesó sus operaciones el 12 de julio de 2012.
 imgb.in gratuito Servicio de carga de imágenes
 Memorize.com Un sitio web para memorizar todo tipo de cosas.
 TwiGroups es una herramienta de redes sociales para su uso en Twitter.
CouchDB como almacenamiento tweets.
 Magnifeast sitio web Restaurante con pedidos en línea de cientos de
restaurantes. utiliza CouchDB como base de datos principal.
6
7. Soporte de CouchDB
La Fundación Apache Software tiene una postura muy activa en la eliminación de los
problemas de seguridad y de denegación de ataques contra Apache CouchDB.
También posee una cuenta de correo de seguridad para animar a la gente a reportar
algún tipo de problemas. La dirección postal de la seguridad privada es:
security@couchdb.apache.org.
Si lo que se desea es informar de un fallo que no es una vulnerabilidad de seguridad
se debe utilizar la página de informe de errores.
Preguntas sobre:
• Cómo configurar CouchDB de segura
• Si se aplica una vulnerabilidad para su aplicación en particular
• La obtención de más información sobre una vulnerabilidad publicada
• La disponibilidad de parches y / o nuevos lanzamientos
Deben enviarse a la dirección de la página de distribución
8. Ejemplo Práctico
8.1. Instalación de CouchDB
Como ya se mencionó CouchDB está diseñada para que el usuario pueda Instalarla
de forma sencilla,evidentemente para ello senecesita ingresara su sitio Web Oficial
http://couchdb.apache.org/ y buscar el SO y la arquitectura correspondiente a
nuestra necesidad.
Figura 4. Página oficial de CoichDB
Una vez Instalado podemos ingresar a la API llamada “Futon” que es la interfaz de
administración build-in ingresando en un navegador la URL
http://localhost:5984/_utils/
7
Figura 5. Interfaz CouchDB - Futon
8.2. CURL para CouchDB
Para interactuar con CouchDB directamente de forma ideal se procede a instalar
cURL. cURL es software interprete que Soporta los protocolos FTP, FTPS, HTTP,
HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE y LDAP, entre otros.
Para comprobar la coneccion se utiliza el comando:
Shell > curl http://127.0.0.1:5984
Figura 6. Test CouchDB
8
8.3. Ejemplo Simple
En un problema supuesto se tiene una base de datos “VentasDB” la cual contiene el
nombre de todos los clientes que compraron x producto, y lo que se desea saber es:
¿Qué clientes han recurrido con mayor frecuencia a comprar productos?
Evidentemente en la Figura 7 la cantidad de datos utilizada para este ejemplo es
poquísima ya que es solo para fines prácticos.
Figura 7. Base de Datos ventasdb - CouchDB
9
En la figura 8 se realiza el mapeado de los clientes y las veces que realizaron una
compra
Figura 8. Función Map y Resultado
En la imagen de la Figura 9. Se aprecia el resultado reducido y la sumatoria de total
de la compra de cada uno de los clientes
10
Figura 9. Función Reduce y resultado
9. Conclusiones
La facilidad de usar esta base de datos NoSQL hace que los procedimientos parezcan
simples y sencillos, hace que Relax esté presente en todo momento y esto le da una
ventaja sobre los demás gestores de bases de datos.
CouchDB se adapta perfectamente a laWeb con suinterfaz Futon y de manera amigable
se pueden realizar operaciones MapReduce, replicación entre otros.
CouchDb es un gestor de base de datos basado en Erlang lo que indica que es altamente
tolerante a fallos.
11
10. Referencias
 http://couchdb.apache.org/ Consultado el 25 de Julio del 2016
 https://media.readthedocs.org/pdf/couchdb/latest/couchdb.pdf consultado el
24 de Julio del 2016
 https://es.wikipedia.org/wiki/CouchDB/ Consultado el 25 de Julio del 2016
 https://neighbourhood.ie/couchdb-support/ Consultado el 23 de Julio del 2016
 https://medium.com/@veronicacomm/cu%C3%A1ndo-utilizar-mongodb-y-
cu%C3%A1ndo-utilizar-couchdb-d94cfcc78c21#.h19zpyxsq Consultado el 25 de
Julio del 2016
 http://www.ciff.net/blog/el-teorema-de-cap-y-la-clasificacion-de-base-de-
datos.html Consultado el 25 de Julio del 2016

Más contenido relacionado

La actualidad más candente

Semana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestionSemana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestion
Giovani Ramirez
 
Conceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de DatosConceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de Datos
Carlos Rafael Luna Vargas
 
Fundamentos de las bases de datos
Fundamentos de las bases de datosFundamentos de las bases de datos
Fundamentos de las bases de datos
Jaime David Romero Olivo
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
ROSA IMELDA GARCIA CHI
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
Rennytox Hernandez
 
Estandares de Cableado Estructurado
Estandares de Cableado EstructuradoEstandares de Cableado Estructurado
Estandares de Cableado Estructurado
Hugo Guzman Soto
 
Sistemas de Gestión de Bases de datos
Sistemas de Gestión de Bases de datosSistemas de Gestión de Bases de datos
Sistemas de Gestión de Bases de datos
Jesús Tramullas
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
José Antonio Sandoval Acosta
 
Arquitectura Orientada a Servicios (SOA)
Arquitectura Orientada  a Servicios (SOA)Arquitectura Orientada  a Servicios (SOA)
Arquitectura Orientada a Servicios (SOA)
Lucio Marcelo Quispe Ortega
 
cliente servidor
cliente servidorcliente servidor
cliente servidor
Fernando Solis
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 Capas
Fani Calle
 
El DBA y sus funciones
El DBA y sus funcionesEl DBA y sus funciones
El DBA y sus funciones
kevinchontarivera
 
Estandares y etiquetado (cableado estructurado) by mocho
Estandares y etiquetado (cableado estructurado) by mochoEstandares y etiquetado (cableado estructurado) by mocho
Estandares y etiquetado (cableado estructurado) by mocho
Moshg
 
REGLAS DE DATE PARA UN SISTEMA DE GESTION DE BASE DE DATOS DISTRIBUIDAS
REGLAS DE DATE PARA UN SISTEMA DE GESTION DE BASE DE DATOS DISTRIBUIDASREGLAS DE DATE PARA UN SISTEMA DE GESTION DE BASE DE DATOS DISTRIBUIDAS
REGLAS DE DATE PARA UN SISTEMA DE GESTION DE BASE DE DATOS DISTRIBUIDASKatty Landacay
 
Componentes de sgbd
Componentes de sgbdComponentes de sgbd
Componentes de sgbd
dalilaramontello
 
Bases de datos jerarquicas
Bases de datos jerarquicasBases de datos jerarquicas
Bases de datos jerarquicas
Alejandro Salazar
 
Tarea1 programacion-distribuida
Tarea1 programacion-distribuidaTarea1 programacion-distribuida
Tarea1 programacion-distribuida
RJ Manayay Chavez
 

La actualidad más candente (20)

Semana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestionSemana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestion
 
Conceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de DatosConceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de Datos
 
Bases de datos orientadas a objetos
Bases de datos orientadas a objetosBases de datos orientadas a objetos
Bases de datos orientadas a objetos
 
Ieee 830
Ieee 830Ieee 830
Ieee 830
 
Fundamentos de las bases de datos
Fundamentos de las bases de datosFundamentos de las bases de datos
Fundamentos de las bases de datos
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Estandares de Cableado Estructurado
Estandares de Cableado EstructuradoEstandares de Cableado Estructurado
Estandares de Cableado Estructurado
 
Sistemas de Gestión de Bases de datos
Sistemas de Gestión de Bases de datosSistemas de Gestión de Bases de datos
Sistemas de Gestión de Bases de datos
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
 
Arquitectura Orientada a Servicios (SOA)
Arquitectura Orientada  a Servicios (SOA)Arquitectura Orientada  a Servicios (SOA)
Arquitectura Orientada a Servicios (SOA)
 
cliente servidor
cliente servidorcliente servidor
cliente servidor
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 Capas
 
El DBA y sus funciones
El DBA y sus funcionesEl DBA y sus funciones
El DBA y sus funciones
 
Arquitectura pizarra
Arquitectura pizarraArquitectura pizarra
Arquitectura pizarra
 
Estandares y etiquetado (cableado estructurado) by mocho
Estandares y etiquetado (cableado estructurado) by mochoEstandares y etiquetado (cableado estructurado) by mocho
Estandares y etiquetado (cableado estructurado) by mocho
 
REGLAS DE DATE PARA UN SISTEMA DE GESTION DE BASE DE DATOS DISTRIBUIDAS
REGLAS DE DATE PARA UN SISTEMA DE GESTION DE BASE DE DATOS DISTRIBUIDASREGLAS DE DATE PARA UN SISTEMA DE GESTION DE BASE DE DATOS DISTRIBUIDAS
REGLAS DE DATE PARA UN SISTEMA DE GESTION DE BASE DE DATOS DISTRIBUIDAS
 
Componentes de sgbd
Componentes de sgbdComponentes de sgbd
Componentes de sgbd
 
Bases de datos jerarquicas
Bases de datos jerarquicasBases de datos jerarquicas
Bases de datos jerarquicas
 
Tarea1 programacion-distribuida
Tarea1 programacion-distribuidaTarea1 programacion-distribuida
Tarea1 programacion-distribuida
 

Similar a Apache CouchDB

Alfredo reyes
Alfredo reyesAlfredo reyes
Alfredo reyes
Alfredo Reyes May
 
Alfredo reyes
Alfredo reyesAlfredo reyes
Alfredo reyes
Carmen Rojas Gil
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentes
Dolores Leonor
 
Carmen rojas
Carmen rojasCarmen rojas
Carmen rojas
Carmen Rojas Gil
 
Alfredo reyes
Alfredo reyesAlfredo reyes
Alfredo reyes
Alfredo Reyes May
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
rosy vargas
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentes
Dolores Leonor
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
vjgaby
 
Actv4_bd_moreno_joel
Actv4_bd_moreno_joelActv4_bd_moreno_joel
Actv4_bd_moreno_joel
joel28
 
Sistema.inventario@hotmail.com
Sistema.inventario@hotmail.comSistema.inventario@hotmail.com
Sistema.inventario@hotmail.com
simeon
 
SGDB móviles - Relacional y/o No Relacional
SGDB móviles - Relacional y/o No RelacionalSGDB móviles - Relacional y/o No Relacional
SGDB móviles - Relacional y/o No Relacional
suzu123
 
Blog SGBD / Bases de Datos Generalidades y Sistemas de Gestión
Blog SGBD / Bases de Datos Generalidades y Sistemas de GestiónBlog SGBD / Bases de Datos Generalidades y Sistemas de Gestión
Blog SGBD / Bases de Datos Generalidades y Sistemas de Gestión
Jesús Daniel Mayo
 
bases de datos
bases de datosbases de datos
bases de datos
yuliana270901
 
curso_mysql.pdf
curso_mysql.pdfcurso_mysql.pdf
curso_mysql.pdf
BenedictoRamirezSant
 
Curso mysql modificado
Curso mysql modificadoCurso mysql modificado
Curso mysql modificadoYusef Yamel
 
Qué es una base de datos
Qué es una base de datosQué es una base de datos
Qué es una base de datos
Dania Mendizabal
 
Cassandra intro
Cassandra introCassandra intro
Cassandra intro
Willy Quispe
 
Actividad de aprendizaje 4 screencast y bases de datos.jltc
Actividad de aprendizaje 4 screencast y bases de datos.jltcActividad de aprendizaje 4 screencast y bases de datos.jltc
Actividad de aprendizaje 4 screencast y bases de datos.jltc
jhoselt
 

Similar a Apache CouchDB (20)

Alfredo reyes
Alfredo reyesAlfredo reyes
Alfredo reyes
 
Alfredo reyes
Alfredo reyesAlfredo reyes
Alfredo reyes
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentes
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
Carmen rojas
Carmen rojasCarmen rojas
Carmen rojas
 
Alfredo reyes
Alfredo reyesAlfredo reyes
Alfredo reyes
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentes
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Actv4_bd_moreno_joel
Actv4_bd_moreno_joelActv4_bd_moreno_joel
Actv4_bd_moreno_joel
 
Analisis comparativo bd eq2
Analisis comparativo bd eq2Analisis comparativo bd eq2
Analisis comparativo bd eq2
 
Sistema.inventario@hotmail.com
Sistema.inventario@hotmail.comSistema.inventario@hotmail.com
Sistema.inventario@hotmail.com
 
SGDB móviles - Relacional y/o No Relacional
SGDB móviles - Relacional y/o No RelacionalSGDB móviles - Relacional y/o No Relacional
SGDB móviles - Relacional y/o No Relacional
 
Blog SGBD / Bases de Datos Generalidades y Sistemas de Gestión
Blog SGBD / Bases de Datos Generalidades y Sistemas de GestiónBlog SGBD / Bases de Datos Generalidades y Sistemas de Gestión
Blog SGBD / Bases de Datos Generalidades y Sistemas de Gestión
 
bases de datos
bases de datosbases de datos
bases de datos
 
curso_mysql.pdf
curso_mysql.pdfcurso_mysql.pdf
curso_mysql.pdf
 
Curso mysql modificado
Curso mysql modificadoCurso mysql modificado
Curso mysql modificado
 
Qué es una base de datos
Qué es una base de datosQué es una base de datos
Qué es una base de datos
 
Cassandra intro
Cassandra introCassandra intro
Cassandra intro
 
Actividad de aprendizaje 4 screencast y bases de datos.jltc
Actividad de aprendizaje 4 screencast y bases de datos.jltcActividad de aprendizaje 4 screencast y bases de datos.jltc
Actividad de aprendizaje 4 screencast y bases de datos.jltc
 

Último

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 

Último (6)

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 

Apache CouchDB

  • 1. 1 INFORME 03: Apache CouchDB UNIVERSIDAD NACIONAL DEL ALTIPLANO Escuela Profesional de Ingeniería de Sistemas Paye Zamata, Kevin Arnold arnyeld@gmail.com 1. Resumen En este informe se describe la capacidad de las bases de datos NoSQL y principalmente de CouchDB una base de datos no relacional de tipo documental cuyo motor de programación está basado en JavaScript y estructura establecida en JSON. Además se da un estudio de las principales características de esta base de datos tales como tolerancia a particiones, y disponibilidad. Posteriormente se da uso al Teorema CAP para conocer en qué caso es conveniente el uso de CouchDB y así hacer que la elección de CouchDB sea la más apropiada para algún proyecto en particular. Finalmente se muestra un ejemplo simple y practico utilizando el modelo de programación MapReduce. 2. Introducción La utilización de una base de datos no relacional ha captado la atención de muchas empresas en los últimos años, pero esto no significa que sean mejores que las bases de datos de tipo relacional, sino que son una alternativa para dar solución a determinados problemas que estas presentan cuando se tratan grandes cantidades de datos. CouchDB cuenta con características que se enfocan principalmente a la facilidad de uso, utilizando su interfaz WEB llamada “Futon” para darle funcionalidad, esto la hace sencilla y de rápido entendimiento intentando no interponerse entre el desarrollador y la aplicación. 3. Las Bases de Datos NoSQL Se puede decir el término NoSQL surge con la llegada de la web 2.0, con la aparición de aplicaciones en donde cualquier usuario podía subir contenido, provocando así un crecimiento exponencial de los datos. Es en ese momento cuando aparecen las complicaciones en la gestión de toda esainformación en las bases de datos relacionales, en un principio, para solucionar estos problemas de accesibilidad, las empresas optaron por utilizar un mayor número de máquinas pero pronto se dieron cuenta de que esto no solucionaba el problema, además de ser una solución muy cara. La otra solución era la creación de sistemas pensados para un uso específico que con el paso del tiempo han dado lugar a soluciones robustas, apareciendo así el movimiento NoSQL.
  • 2. 2 Las Bases de Datos NoSQL son sistemas de almacenamiento de información que no cumplen con el esquema entidad–relación. Tampoco utilizan una estructura de datos en forma de tabla donde se van almacenando los datos sino que para el almacenamiento hacen uso de otros formatos como clave–valor, mapeo de columnas, orientado a documentos o grafos. Figura 1. Clasificación de Bases de datos NoSQL 4. CouchDB Apache CouchDb más conocido como CouchDB fue creado en abril de 2005 por Damien Katz (ex desarrollador de Lotus Notes en IBM) y programado en Erlang. “CouchDB es un gestor de base de datos orientado a documentos que se enfoca principalmente a la facilidad de uso y que abarca completamente la web”.1 CouchDB Almacena los datos en JSON es capaz de acceder a documentos y consultar índices con un navegador web a través de HTTP, también posee características tales como la transformación de documentos y notificaciones en tiempo real. Indexa, combina y transforma sus documentos con JavaScript o sus aplicaciones de manera eficiente. Además CouchDB tiene lacaracterísticade detección automática de conflictos cuando se presenta una falla, todo esto hace que el desarrollo de aplicaciones WEB sea fácil de utilizar. CouchDB es altamente disponible, tolerante a la partición. 1 Apache CouchDB Release 2.0.0-git https://media.readthedocs.org/pdf/couchdb/latest/couchdb.pdfpag.1
  • 3. 3 4.1. Relax de CouchDB “Si hay una palabra que describe a CouchDB, tiene que ser Relax… cuando arrancamos CouchDB vemos: -Apache CouchDB has started. Time to relax-”.2 CouchDB intenta que su uso sea natural para cualquiera que ha trabajado en un entorno Web, Relax está dividido en tres áreas de relajación que a continuación se describen:  CouchDB procura no interponerse cuando algún desarrollador está intentando construir una solución especializada.  Otro punto relajante para el usuario de CouchDB es el entorno de producción, CouchDB se preocupa una vez más de no molestar al usuario gracias a que su arquitectura interna tolera fallos, y los errores se dan en un entorno controlado y se resuelven de manera apropiada, los problemas puntuales no afectan al servidor entero sino que permanecen aislados en una única consulta.  El tercer punto de relajación se da a la hora de incrementar o reducir Software. A primera vista CouchDB parece inflexible pero algunas cosas se han dejado fuera intencionalmente simplemente porque si CouchDB las tuviera permitirían al usuario crear aplicaciones que no escalan correctamente. 4.2. Replicación en CouchdB La función fundamental de la Replicación es sincronizar dos o más bases de datos de CouchDB. Esto puede sonar simple, pero la simplicidad es la pieza clave para permitir que la replicación solvente varios problemas: sincronizar de manera fiable bases de datos entre múltiples máquinas para tener almacenamiento redundante; distribuir datos a un cluster de instancias de CouchDB que comparten un subconjunto del total de consultas que llegan a ese cluster (balance de carga). Figura 2. Replicación en CouchDB 2 http://guide.couchdb.org/editions/1/es/why.html
  • 4. 4 La replicación en CouchDB usa la misma REST API que todos los demás clientes. El protocolo HTTP es transparente y está estudiado en profundidad. La replicación funciona de forma incremental; esto es, que si cualquier cosa sale mal durante la replicación, como una desconexión de red, continuará donde secortó lapróxima vez que se ejecute. Del mismo modo, solamente transfiere los datos necesarios para sincronizar las bases de datos. 5. Consideraciones al usar CouchDB 5.1. Teorema CAP El Teorema CAP, también conocido como Teorema Brewer, demuestra que “Es imposible garantizar a la vez consistencia, disponibilidad y tolerancia a particiones”. Este teorema establece las características de cada una de las bases de datos NoSQL y ayuda a elegir, de entre las múltiples posibilidades, qué sistema de bases de datos es el más adecuado para satisfacer nuestras necesidades de negocio. El teorema CAP se describe de la siguiente forma:  La C se refiere a la consistencia, es decir, todos los clientes deben ver la misma información al mismo tiempo. La consistencia se consigue replicando la información.  La A se refiere a la disponibilidad (Availability) y esto se traduce en que cada cliente puede siempre leer y/o escribir sobre la base. La disponibilidad se consigue actualizando la información de todos los nodos.  La P se refiere a la tolerancia a la partición, que es lo mismo que decir si el sistema va a funcionar de manera correcta a pesar que se generen particiones de información entre sus nodos. La tolerancia a la partición se consigue definiendo reglas que indiquen qué debe hacerse en caso de que falle un nodo o no se tenga acceso a él. 5.2. Teorema CAP en CouchDB Para CouchDB el Teorema CAP determina que esta base de datos garantiza la disponibilidad y la tolerancia a particiones, pero no puede asegurar una total consistencia. A veces se puede llegar a conseguir una consistencia parcial gracias a la replicación y a la verificación. En este caso los clientes serán capaces de leer y escribir siempre, aunque se haya caído un nodo y el sistema continuará funcionado aunque existan caídas parciales o fallos que lo dividan.
  • 5. 5 Figura 3 Teorema CAP en CouchDB 6. Organizaciones que usan CouchDB Entre las empresas que han usado o actualmente usan CouchDB se pueden mencionar:  Ubuntu para su servicio de sincronización "Ubuntu One" hasta noviembre de 2011 pero fue descontinuado por problemas de escalabilidad.13  La BBC, para sus plataformas de contenidos dinámicos14  Credit Suisse, para usos internos en el departamento de commodities para su framework de mercados.11  Meebo, para su plataforma social (web y aplicaciones) - Meebo fue adquirido por Google y cesó sus operaciones el 12 de julio de 2012.  imgb.in gratuito Servicio de carga de imágenes  Memorize.com Un sitio web para memorizar todo tipo de cosas.  TwiGroups es una herramienta de redes sociales para su uso en Twitter. CouchDB como almacenamiento tweets.  Magnifeast sitio web Restaurante con pedidos en línea de cientos de restaurantes. utiliza CouchDB como base de datos principal.
  • 6. 6 7. Soporte de CouchDB La Fundación Apache Software tiene una postura muy activa en la eliminación de los problemas de seguridad y de denegación de ataques contra Apache CouchDB. También posee una cuenta de correo de seguridad para animar a la gente a reportar algún tipo de problemas. La dirección postal de la seguridad privada es: security@couchdb.apache.org. Si lo que se desea es informar de un fallo que no es una vulnerabilidad de seguridad se debe utilizar la página de informe de errores. Preguntas sobre: • Cómo configurar CouchDB de segura • Si se aplica una vulnerabilidad para su aplicación en particular • La obtención de más información sobre una vulnerabilidad publicada • La disponibilidad de parches y / o nuevos lanzamientos Deben enviarse a la dirección de la página de distribución 8. Ejemplo Práctico 8.1. Instalación de CouchDB Como ya se mencionó CouchDB está diseñada para que el usuario pueda Instalarla de forma sencilla,evidentemente para ello senecesita ingresara su sitio Web Oficial http://couchdb.apache.org/ y buscar el SO y la arquitectura correspondiente a nuestra necesidad. Figura 4. Página oficial de CoichDB Una vez Instalado podemos ingresar a la API llamada “Futon” que es la interfaz de administración build-in ingresando en un navegador la URL http://localhost:5984/_utils/
  • 7. 7 Figura 5. Interfaz CouchDB - Futon 8.2. CURL para CouchDB Para interactuar con CouchDB directamente de forma ideal se procede a instalar cURL. cURL es software interprete que Soporta los protocolos FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE y LDAP, entre otros. Para comprobar la coneccion se utiliza el comando: Shell > curl http://127.0.0.1:5984 Figura 6. Test CouchDB
  • 8. 8 8.3. Ejemplo Simple En un problema supuesto se tiene una base de datos “VentasDB” la cual contiene el nombre de todos los clientes que compraron x producto, y lo que se desea saber es: ¿Qué clientes han recurrido con mayor frecuencia a comprar productos? Evidentemente en la Figura 7 la cantidad de datos utilizada para este ejemplo es poquísima ya que es solo para fines prácticos. Figura 7. Base de Datos ventasdb - CouchDB
  • 9. 9 En la figura 8 se realiza el mapeado de los clientes y las veces que realizaron una compra Figura 8. Función Map y Resultado En la imagen de la Figura 9. Se aprecia el resultado reducido y la sumatoria de total de la compra de cada uno de los clientes
  • 10. 10 Figura 9. Función Reduce y resultado 9. Conclusiones La facilidad de usar esta base de datos NoSQL hace que los procedimientos parezcan simples y sencillos, hace que Relax esté presente en todo momento y esto le da una ventaja sobre los demás gestores de bases de datos. CouchDB se adapta perfectamente a laWeb con suinterfaz Futon y de manera amigable se pueden realizar operaciones MapReduce, replicación entre otros. CouchDb es un gestor de base de datos basado en Erlang lo que indica que es altamente tolerante a fallos.
  • 11. 11 10. Referencias  http://couchdb.apache.org/ Consultado el 25 de Julio del 2016  https://media.readthedocs.org/pdf/couchdb/latest/couchdb.pdf consultado el 24 de Julio del 2016  https://es.wikipedia.org/wiki/CouchDB/ Consultado el 25 de Julio del 2016  https://neighbourhood.ie/couchdb-support/ Consultado el 23 de Julio del 2016  https://medium.com/@veronicacomm/cu%C3%A1ndo-utilizar-mongodb-y- cu%C3%A1ndo-utilizar-couchdb-d94cfcc78c21#.h19zpyxsq Consultado el 25 de Julio del 2016  http://www.ciff.net/blog/el-teorema-de-cap-y-la-clasificacion-de-base-de- datos.html Consultado el 25 de Julio del 2016