SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
CouchDB
Base de datos NoSQL
Contenido
• Descripción
• Arquitectura
• Replicación
• Seguridad
• Auditoria
• Performance Management
• Backup and Recovery
• Data warehouse Facilities
• DBA Tools existentes
• Conclusiones
Descripción
 Apache CouchDB es un software de gestión de bases de datos
OpenSource publicado por Apache Software Foundation. CouchDB
(Couch es un acrónimo para cluster of unreliable commodity hardware)
está escrito en Erlang, un lenguaje de programación funcional con
enfoque en la creación de aplicaciones tolerantes a fallos y altamente
concurrentes.
Descripción
 CouchDB usa HTTP como su interfaz de programación principal y JSON
para almacenamiento de datos.
 Todos los recursos de la base de datos tiene una URI única que expone
servicios a travez de los métodos que implementa HTTP(POST, GET, PUT Y
DELETED), estos métodos son utilizados para el CRUD.
Propiedades ACID
 La capa de archivos y el sistema de confirmaciones (commitment) de
CouchDB contribuyen a cumplir las características ACID .
 En disco CouchDB nunca sobre escribe información confirmada
(commited) o la que tenga estructuras asociadas, asegurando que los
archivos de la base datos están en un estado consistente.
 La actualización de documentos (add, edit, delete) son serializadas, lo que
permite escritura concurrente. El control de lectura lo hace utilizando
MVCC (Multi-Vesion Concurrency Control), este modelo permite que cada
cliente mire una instantánea coherente de la base de datos desde el
principio hasta el final de la operación de lectura
Propiedades ACID
 Los documentos se indexan en árboles B utilizando su nombre (DocID) y un
documento de identidad de secuencia.
 Cada actualización a una instancia de la base genera un nuevo número
secuencial.
 La secuencias de IDs son usados después para encontrar los cambios de
forma incremental.
 Los índices del árbol B se actualizan simultáneamente cuando los
documentos son guardados o borrados, hay que tener en cuenta que las
actualizaciones del índice siempre se efectúan al final del archivo
(append-only updates).
Views
 Las vistas (Views) son la herramienta utilizada para consultas y reportes en
los documentos de CouchDB, las vistas son utilizadas para algunos
propósitos, entre los cuales podemos mencionar:
 Filtrar los documentos en la base de datos para encontrar los que sean
relevantes para un proceso en particular.
 Extraer datos desde los documentos, y presentarlos en un orden especifico.
 Construcción de índices eficientes para la encontrar documentos por cualquier
valor o estructura que se encuentre en ellos.
 Uso de los índices para representar relaciones entre documentos.
 Operaciones con los tipos de datos de los documentos, ejemplo si los
documentos representan las transacciones financieras de la empresa, una vista
puede responder a la pregunta de cuál es el gasto en la última semana, mes o
año.
Modelo de Vista
 Para encarar el hecho de agregar estructuras de respaldo a los datos no
estructurados y semi-estructurados, CouchDB integra un modelo de vista,
las vistas son el método de agregación y representación de informes sobre
los documentos en una base de datos, y se construyen bajo demanda
para agregar, unir e informar sobre los documentos de la base de datos.
JavaScript Funciones de vista
 Las vistas se definen mediante las funciones de JavaScript, una función de
vista toma un documento CouchDB como un argumento y luego hace los
cálculos necesarios para determinar los datos que se van a poner a
disposición a través de la vista.
Arquitectura
Arquitectura
 HTTP Client: Permite realizar las peticiones contra el servidor de la base de
datos. Los clientes pueden ser cualquier aplicación que permita el uso de
HTTP, esto permite potenciar el uso de entones web, así como el trabajo
offline, apoyando la posibilidad de replicación cunado la aplicación
vuelva a online.
 Erlang HTTP: Basado en Mochiviewb un kit para servidores HTTP ligeros
escrito en ERLANG, permite el control y gestión de HTTP (gestión de
peticiones, concurrencia, cabeceras HTTP, encriptado, autentificación,…)
 Mod_Couch: Es el core de la máquina virtual de Erlang de CouchDB, este
componente implemente la API y es el encargado de entender y
gestionar las diferentes operaciones solicitadas por el cliente HTTP.
Arquitectura
 View_Engine: Este componente realiza todo el proceso de las vistas, el
diseño de los documentos, la indexación,…, utilizando arboles B.
 Storage_Engine: Gestiona las escrituras en Disco, este componente se
comunica activamente con el View Engine y el Replicador ya que las
vistas son incrementables y deben reflejar los cambios escritos a disco.
 Replicador: Permite la replicación de los documentos, ayuda a la
distribución entre diferentes dispositivos, tanto online como offline, este
componente solo actúa si es activado manual o programáticamente pero
no funciona de manera continua.
Replicación
 Para la replicación se envía una petición HTTP a CouchDB incluyendo la
base de datos origen (source) y una de destino (target), y CouchDB envía
los cambios del origen al destino, el siguiente código denota un ejemplo
de replicación en CouchDB.
POST /_replicate HTTP/1.1
{"source":"database","target":"http://example.org/ database "}
Replicación
 La sincronización se puede efectuar en ambas direcciones, para lo cual se
debe cambiar la fuente por el destino, es decir:
 La replicación es una forma de crear “snapshots” de las bases de datos en
una sola instancia de CouchDB, con esto se puede testear código sin
poner en riesgo los datos
.
POST /_replicate HTTP/1.1
{"source":"http://example.org/database","target":"da
tabase"}
Replicación
 Replicación Continua: Esta petición de replicación no se detiene cuando
se terminan de replicar los documentos del origen al destino, si no que
continua a la escucha de cambios en cualquier documento, una vez
encontrados los cambios se realiza la replicación, esta replicación no se la
efectúa de inmediato.
.
> curl -X POST http://127.0.0.1:5984/_replicate -d
'{"source":"db", "target":"db-replica",
"continuous":true}
Seguridad
 La instalación por defecto de CouchDB permite peticiones realizadas por
cualquier cliente, CouchDB llama a esto “The Admin Party”, todo mundo
tiene privilegios para hacer cualquier cosa.
 CouchDB contempla la idea de un usuario admin(superusuario, root,
administrador) el cual tiene permitido hacer cualquier petición a una
instancia de CouchDB.
 Un usuario admin puede ejecutar un las siguientes peticiones en la
instancia de CouchDB [5]:
 Creación de bases de datos (PUT /database)
 Eliminación de bases de datos (DELETE /database)
 Creación de un documento de diseño (PUT /database/_design/app)
Seguridad
 La actualización de un documento de diseño (PUT
/database/_design/apprev=1-4E2)
 Eliminación de un documento de diseño(DELETE
/database/_design/app?rev=1-6A7)
 Activación de comparación (POST /_restart)
 Lectura de la configuración activa (GET /_config)
 Actualización de la configuración activa (PUT /_config)
Seguridad
 Creación de usuarios admin:
 En la instalación inicial crea una base de datos por defecto, lo que se
debe crear como paso siguiente es un usuario administrador, en este caso
se creara un usuario jose, y su contraseña será adminJose
> curl -X PUT $HOST/_config/admins/jose -d '"adminJose"'
""
Seguridad
 Cookie de Autenticación: CouchDB genera un token de una sola vez que
el cliente podrá utilizar en su próxima solicitud a CouchDB, cunado
CouchDB ve el token en una solicitud posterior, se autenticara al usuario
basándose en el token sin la necesidad de requerir la contraseña, el token
tiene una duración de 10 minutos.
> HOST="http://127.0.0.1:5984"
> curl -vX POST $HOST/_session -H
'application/x-www-form-urlencoded' -d
'name=anna&password=secret'
Auditoria
 Audit CouchDB
 Es una herramienta simple, que solo utiliza la dirección URL de Apache
CouchDB, para responder a las preguntas comunes de auditoria tales
como:
 ¿Cuál es la configuración del servidor?
 ¿Cuántas cuentas de usuario existentes?
 ¿Qué funciones de usuario existen?
 ¿Cuál es la configuración de seguridad implementada en cada base de datos?
 ¿Cuáles son las funciones de validación en cada documento de diseño?
Auditoria
 La auditoría se puede implementar desde la consola web de CouchDB,
para lo cual basta con ir a Security-> Audit.
Performance Management
 Una vez que se empieza a manejar un número grade de documentos se
tiene que ser cuidadoso con el manejo del mismo, así como de la forma
de escribir el código, a continuación se presentan puntos a considerar
para un rendimiento óptimo de CouchDB.
 Disco Entrada/Salida
 Tamaño del archivo: El menor tamaño de sus archivos, menos operaciones
de E/S, dan como resultado un mayor número de archivos almacenados
en CouchDB y en sistema operativo. Se debe ser cuidadoso con los datos
que se está almacenando, por ejemplo es una mala práctica utilizar
claves demasiado largas o utilizar claves únicas de caracteres individuales.
Performance Management
 Rendimiento en disco y sistema de archivos
 Erlang sugiere la siguieren técnica para aumentar el rendimiento del
sistema de archivos.
 En sistemas operativos con soporte de threads, es posible hacer que las
operaciones de archivos sean mejoradas con threads. Para lo cual se
embrace en las variables de entorno de Erlang un número mayor de
threads, ya que en la instalación por defecto se especifican 0 threads,
para modificar el número de threads se debe ingresar el siguiente
comando:
export ERL_FLAGS="+A 4"
Limitaciones de los recursos del
Sistema
 Uno de los problemas latentes en implementaciones grandes es la
asignación por defecto de recursos que provee CouchDB y el sistema
operativo, el aumento de estos límites puede permitir que la
implementación de CouchDB crezca más allá de lo que la configuración
por defecto ofrece.
 Delayed_commits: Esto permite mejorar el rendimiento de escritura para
algunas cargas de trabajo.
 Esta configuración hace que CouchDB espere un segundo antes de que
confirmar nuevos datos después de una actualización, esta configuración
tiene el defecto de que si el servidor se bloquea antes de que la
instrucción sea completada, cualquier grabación desde el último commit
se pierde.
Limitaciones de los recursos del
Sistema
 Max_dbs_open: Esta configuración aumenta el límite de bases de datos
concurrentes. Esta configuración es recomendada en implementaciones
en las que muchas bases de datos estarán replicando de forma continua.
[couchdb]
max_dbs_open = 100
Red
 Hay que tener cuidado del tamaño que se elige para los lotes, ya que
lotes grandes requieren más tiempo en el cliente para codificar los
elementos en archivos JSON y aun mas tiempo para decodificar el número
de peticiones.
 Si se posee un sistema rápido de E/S, se puede utilizar la concurrencia para
tener múltiples peticiones/respuestas al mismo tiempo. Esto mitiga la
latencia involucrada en el uso de los archivos JSON, haciendo el trabajo
en red y la decodificación de JSON más eficiente.
Red
 Mochiweb implementa un buffet TCP, que almacena todas las peticiones
pequeñas y espera a que todas estas completen un tamaño mayor y las
envía por el protocolo TCP, este comportamiento TCP búfer puede ser
desactivado a través de httpd/sochet_options:
[httpd]
socket_options = [{nodelay, true}]
CouchDB
 IDs de los documentos: El tamaño del archivo de la base de datos se
deriva del tamaño de los documentos y de las vistas, pero también de
múltiples de los _id, ya que un ID presente en un documento se encuentra
duplicado en todo el árbol.
 La inserción de ID secuenciales es más rápida que las identificaciones
aleatorias, por tanto se debe tener en cuenta generar los IDs de manera
manual o supervisada, por ejemplo, algo que lleva 16 dígitos
hexadecimales se puede hacer de 4 dígitos de base 62 esto representa(10
números, 26 minúsculas, y 26 mayúsculas).
Vistas
 Las Vistas generadas con el servidor de consultas de JavaScript son
demasiado lentas, cuando existen un número excesivo de documentos
para procesar, la creación de las consultas no consume una sola CPU y
mucho menos el sistema de E/S, el problema se ve en la latencia que se
genera en la consulta, esto se debe a que el servidor de consulta de
CouchDB se encuentra separado del interprete couchjs.
 Reducción en la construcción de funciones: Si se hace el uso de funciones
sencillas como sumas o restas, se puede hacer su implementación
haciendo uso de las funciones por defecto de Erlang, por ejemplo _sum o
_count, esto ayuda al rendimiento ya que reduce la entrada y salida entre
CouchDB y el servidor de consultas JavaScript.
Metadata Management
 A diferencia de los archivos JSON normales, CouchDB agrega dos campos
especiales al documento: el “_id” y ”_rev”.
 El campo “_id” es un campo que permite identificar al documento, este
campo puede ser definido de manera manual, pero se recomienda
hacerlo de manera automática, ya que CouchDb asigna valores únicos y
universales, lo cual ayuda en temas de replicación o sincronización.
 El siguiente campo es “_rev”, este campo es importante para CuchDB, ya
que este maneja a sus archivos por numero de versión, es decir si un
documento es modificado, a diferencia de bases de datos
convencionales, CouchDB, genera un nuevo documento con un numero
de versión diferente. Este valor aumenta una unidad por cada cambio que
se realice
Metadata Management
 Sin estructura fija: En las bases de datos convencionales se definen las
características de los datos que se desean guardar, por ejemplo:
CREATE TABLE usuario
(nombre VARCHAR(20), correo VARCHAR(20),edad int(3));
{
"_id" : "234a41170621c326ec63382f846d5764",
"_rev" : "1-480277b989ff06c4fa87dfd0366677b6",
"nombre" : "Jose",
"correo" : "Jtapia@gmail.com",
"edad" : "45"
}
Backup and Recovery
 Las características previas discutidas acerca de CouchDB aseguran que se
trata de una base datos muy fiable, pero sin embargo se debe tener en
cuenta los agentes externos que pudiesen atentar con la integridad de la
mismas, ejemplo de esto pueden ser, accidentes del servidor
irrecuperables, hackers que encuentran las credenciales de administrador
y eliminan los datos…
 Existen estrategias de backup tradicionales para CouchDB entre las cuales
se puede mencionar:
 Replicación
 Archivo de copia de seguridad de base de datos.
 Instantáneas del sistema de archivos.
Backup and Recovery
 Replicación: CouchDB denota de las otras bases de datos, por la
implementación de la replicación tira y afloja, es decir cualquier base de
datos CouchDB puede ser replicada en cualquier otra si se tiene acceso
HTTP y as credenciales apropiadas.
 Archivo de copia de seguridad de base de datos: La similitud que
CouchDB posee con git permiten que la base de datos almacene índices
y archivos en el sistema de archivos subyacente, esta copia de seguridad
se puede hacer de manera programática usando la línea de comando, u
utilizando el cron en sistemas Unix o con el uso de herramientas como
rsync, estas alternativas, realizan Backus de manera incremental.
 Instantáneas del sistema de archivos: La utilización de la máquina virtual
de Erlang asegura la creación de instantáneas de los archivos, según esta
crea necesario, o según el administrador las programe.
Data warehouse Facilities
 Las características de CouchDB no son las idóneas para la implementación
de Data warehose, ya que el manejo de versiones temporales de
documentos y las vistas implementadas con JavaScript sugieren un
problema para bases de datos que cresen de manera exponencial.
 Sin embargo se puede hacer la implementación de CouchDB para bases
de datos que no cambien continuamente, esto se lo hace con el objetivo
de usar las facilidades que posee CouchDb para la manipulación de
archivos JSON, esto se lo puede hacer implementando NodeJS
Data warehouse Facilities
 CouchDB ofrece MapReduce como característica principal, a más de esto
cuenta con la interfaz Futon, que permite a los desarrolladores escribir
declaraciones MapReduce basadas en JavaScript en un entorno de
prueba, el código que se mostro pudo ser implementado utilizando una
vista almacenada en CouchDB, y su llamada sería igual que llamar un
procedimiento en un sistema RDBMS, la eficiencia de usar MapReduce se
ve en la implementación de CouchDB en varios servidores, esto ayuda a
escalar de manera rápida sin afectar el rendimiento de la consulta.
DBA Tools existentes
 Existen varias herramientas OpenSource, la herramienta por defecto en la
instalación de CouchDB es Futon, esta herramienta presenta una interfaz
muy amigable, la cual es accedida por el navegador una vez que se ha
iniciado el agente de CouchDB.
 Erica, es una herramienta que ayuda a crear el diseño de los documentos,
a más de esto brinda soporte para las aplicaciones web (couchapps), el
requerimiento mínimo es Erlang R14B04 o superiores.
 Situo.py: Es un cliente CouchApp que utiliza lenguaje Python, esta
herramienta permite realizar pruebas automatizadas.

Más contenido relacionado

La actualidad más candente

Administración de transacciones, problemas, candados e interbloqueos
Administración de transacciones, problemas, candados e interbloqueosAdministración de transacciones, problemas, candados e interbloqueos
Administración de transacciones, problemas, candados e interbloqueosjocuva101
 
Comparacion de Gestores de Base de Datos
Comparacion de Gestores de Base de DatosComparacion de Gestores de Base de Datos
Comparacion de Gestores de Base de DatosVictor Zevallos
 
Unidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos DistribuidasUnidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos DistribuidasDeysi Hdz
 
Una base de datos relacional
Una base de datos relacionalUna base de datos relacional
Una base de datos relacionalAlex Javier
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datosSergio Sanchez
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosJosé Antonio Sandoval Acosta
 
Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Maria Garcia
 

La actualidad más candente (20)

Oracle
OracleOracle
Oracle
 
Administración de transacciones, problemas, candados e interbloqueos
Administración de transacciones, problemas, candados e interbloqueosAdministración de transacciones, problemas, candados e interbloqueos
Administración de transacciones, problemas, candados e interbloqueos
 
Modelo entidad
Modelo entidadModelo entidad
Modelo entidad
 
Phpy odbc
Phpy odbcPhpy odbc
Phpy odbc
 
Comparacion de Gestores de Base de Datos
Comparacion de Gestores de Base de DatosComparacion de Gestores de Base de Datos
Comparacion de Gestores de Base de Datos
 
Unidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos DistribuidasUnidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos Distribuidas
 
Una base de datos relacional
Una base de datos relacionalUna base de datos relacional
Una base de datos relacional
 
Ventajas desventajas sgbd
Ventajas desventajas sgbdVentajas desventajas sgbd
Ventajas desventajas sgbd
 
Reglas de transformación
Reglas de transformaciónReglas de transformación
Reglas de transformación
 
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
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
Ventajas vs Desventajas se SGBD
Ventajas vs Desventajas se SGBDVentajas vs Desventajas se SGBD
Ventajas vs Desventajas se SGBD
 
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
 
Caracteristicas Microsoft SQL Server
Caracteristicas Microsoft SQL ServerCaracteristicas Microsoft SQL Server
Caracteristicas Microsoft SQL Server
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
 
Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos
 
Bases de datos y sistemas de informacion
Bases de datos y sistemas de informacionBases de datos y sistemas de informacion
Bases de datos y sistemas de informacion
 
Arquitectura sql
Arquitectura sqlArquitectura sql
Arquitectura sql
 

Destacado

Destacado (14)

Couch db
Couch dbCouch db
Couch db
 
Bases de datos orientadas a grafos y su enfoque en el Mundo Real
Bases de datos orientadas a grafos y su enfoque en el Mundo RealBases de datos orientadas a grafos y su enfoque en el Mundo Real
Bases de datos orientadas a grafos y su enfoque en el Mundo Real
 
Couch db
Couch dbCouch db
Couch db
 
Intro To Couch Db
Intro To Couch DbIntro To Couch Db
Intro To Couch Db
 
Google - Bigtable
Google - BigtableGoogle - Bigtable
Google - Bigtable
 
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
 
Amazon Dynamo
Amazon DynamoAmazon Dynamo
Amazon Dynamo
 
CSense: A Stream-Processing Toolkit for Robust and High-Rate Mobile Sensing A...
CSense: A Stream-Processing Toolkit for Robust and High-Rate Mobile Sensing A...CSense: A Stream-Processing Toolkit for Robust and High-Rate Mobile Sensing A...
CSense: A Stream-Processing Toolkit for Robust and High-Rate Mobile Sensing A...
 
Big table
Big tableBig table
Big table
 
CouchDB – A Database for the Web
CouchDB – A Database for the WebCouchDB – A Database for the Web
CouchDB – A Database for the Web
 
CouchDB
CouchDBCouchDB
CouchDB
 
CouchDB Vs MongoDB
CouchDB Vs MongoDBCouchDB Vs MongoDB
CouchDB Vs MongoDB
 
Real World CouchDB
Real World CouchDBReal World CouchDB
Real World CouchDB
 
GOOGLE BIGTABLE
GOOGLE BIGTABLEGOOGLE BIGTABLE
GOOGLE BIGTABLE
 

Similar a Couch db

curso-servidores-apache-2
curso-servidores-apache-2curso-servidores-apache-2
curso-servidores-apache-2greenpeans
 
base de datos con codigos abiertos.pptx
base de datos con codigos abiertos.pptxbase de datos con codigos abiertos.pptx
base de datos con codigos abiertos.pptxJuniorMiraval
 
mini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQLmini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQLCarlos Gustavo Ruiz
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDBliras loca
 
Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y GenexusPresentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y GenexusXavier Espinoza
 
Taller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeriesTaller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeriesXavier Espinoza
 
Introduccion a ORACLE
Introduccion a ORACLEIntroduccion a ORACLE
Introduccion a ORACLEpp guanuchi
 
Creacion de un Repositorio Local en CentOS_6.0
Creacion de un Repositorio Local en CentOS_6.0Creacion de un Repositorio Local en CentOS_6.0
Creacion de un Repositorio Local en CentOS_6.0Fredy Janeta Bastidas
 
Proyecto teórico práctico
Proyecto teórico prácticoProyecto teórico práctico
Proyecto teórico prácticoTitiushko Jazz
 
Proyecto teórico práctico
Proyecto teórico prácticoProyecto teórico práctico
Proyecto teórico prácticoTitiushko Jazz
 
Tarea1 lruiz
Tarea1 lruizTarea1 lruiz
Tarea1 lruizla77rch
 
Tarea1 lruiz
Tarea1 lruizTarea1 lruiz
Tarea1 lruizla77rch
 

Similar a Couch db (20)

curso-servidores-apache-2
curso-servidores-apache-2curso-servidores-apache-2
curso-servidores-apache-2
 
Oracle
OracleOracle
Oracle
 
base de datos con codigos abiertos.pptx
base de datos con codigos abiertos.pptxbase de datos con codigos abiertos.pptx
base de datos con codigos abiertos.pptx
 
mini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQLmini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQL
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDB
 
Documento Web2Py
Documento Web2PyDocumento Web2Py
Documento Web2Py
 
Apache Derby
Apache DerbyApache Derby
Apache Derby
 
Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y GenexusPresentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
 
Taller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeriesTaller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeries
 
Proyecto X
Proyecto XProyecto X
Proyecto X
 
SGBD Postgresql
SGBD PostgresqlSGBD Postgresql
SGBD Postgresql
 
Introduccion a ORACLE
Introduccion a ORACLEIntroduccion a ORACLE
Introduccion a ORACLE
 
Subversion
SubversionSubversion
Subversion
 
Creacion de un Repositorio Local en CentOS_6.0
Creacion de un Repositorio Local en CentOS_6.0Creacion de un Repositorio Local en CentOS_6.0
Creacion de un Repositorio Local en CentOS_6.0
 
guia-2.pdf
guia-2.pdfguia-2.pdf
guia-2.pdf
 
Jdbc
JdbcJdbc
Jdbc
 
Proyecto teórico práctico
Proyecto teórico prácticoProyecto teórico práctico
Proyecto teórico práctico
 
Proyecto teórico práctico
Proyecto teórico prácticoProyecto teórico práctico
Proyecto teórico práctico
 
Tarea1 lruiz
Tarea1 lruizTarea1 lruiz
Tarea1 lruiz
 
Tarea1 lruiz
Tarea1 lruizTarea1 lruiz
Tarea1 lruiz
 

Último

Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
CULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirCULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirPaddySydney1
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativafiorelachuctaya2
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Baker Publishing Company
 
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtweBROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwealekzHuri
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 

Último (20)

Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
CULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirCULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartir
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativa
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
 
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtweBROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 

Couch db

  • 2. Contenido • Descripción • Arquitectura • Replicación • Seguridad • Auditoria • Performance Management • Backup and Recovery • Data warehouse Facilities • DBA Tools existentes • Conclusiones
  • 3. Descripción  Apache CouchDB es un software de gestión de bases de datos OpenSource publicado por Apache Software Foundation. CouchDB (Couch es un acrónimo para cluster of unreliable commodity hardware) está escrito en Erlang, un lenguaje de programación funcional con enfoque en la creación de aplicaciones tolerantes a fallos y altamente concurrentes.
  • 4. Descripción  CouchDB usa HTTP como su interfaz de programación principal y JSON para almacenamiento de datos.  Todos los recursos de la base de datos tiene una URI única que expone servicios a travez de los métodos que implementa HTTP(POST, GET, PUT Y DELETED), estos métodos son utilizados para el CRUD.
  • 5. Propiedades ACID  La capa de archivos y el sistema de confirmaciones (commitment) de CouchDB contribuyen a cumplir las características ACID .  En disco CouchDB nunca sobre escribe información confirmada (commited) o la que tenga estructuras asociadas, asegurando que los archivos de la base datos están en un estado consistente.  La actualización de documentos (add, edit, delete) son serializadas, lo que permite escritura concurrente. El control de lectura lo hace utilizando MVCC (Multi-Vesion Concurrency Control), este modelo permite que cada cliente mire una instantánea coherente de la base de datos desde el principio hasta el final de la operación de lectura
  • 6. Propiedades ACID  Los documentos se indexan en árboles B utilizando su nombre (DocID) y un documento de identidad de secuencia.  Cada actualización a una instancia de la base genera un nuevo número secuencial.  La secuencias de IDs son usados después para encontrar los cambios de forma incremental.  Los índices del árbol B se actualizan simultáneamente cuando los documentos son guardados o borrados, hay que tener en cuenta que las actualizaciones del índice siempre se efectúan al final del archivo (append-only updates).
  • 7. Views  Las vistas (Views) son la herramienta utilizada para consultas y reportes en los documentos de CouchDB, las vistas son utilizadas para algunos propósitos, entre los cuales podemos mencionar:  Filtrar los documentos en la base de datos para encontrar los que sean relevantes para un proceso en particular.  Extraer datos desde los documentos, y presentarlos en un orden especifico.  Construcción de índices eficientes para la encontrar documentos por cualquier valor o estructura que se encuentre en ellos.  Uso de los índices para representar relaciones entre documentos.  Operaciones con los tipos de datos de los documentos, ejemplo si los documentos representan las transacciones financieras de la empresa, una vista puede responder a la pregunta de cuál es el gasto en la última semana, mes o año.
  • 8. Modelo de Vista  Para encarar el hecho de agregar estructuras de respaldo a los datos no estructurados y semi-estructurados, CouchDB integra un modelo de vista, las vistas son el método de agregación y representación de informes sobre los documentos en una base de datos, y se construyen bajo demanda para agregar, unir e informar sobre los documentos de la base de datos. JavaScript Funciones de vista  Las vistas se definen mediante las funciones de JavaScript, una función de vista toma un documento CouchDB como un argumento y luego hace los cálculos necesarios para determinar los datos que se van a poner a disposición a través de la vista.
  • 10. Arquitectura  HTTP Client: Permite realizar las peticiones contra el servidor de la base de datos. Los clientes pueden ser cualquier aplicación que permita el uso de HTTP, esto permite potenciar el uso de entones web, así como el trabajo offline, apoyando la posibilidad de replicación cunado la aplicación vuelva a online.  Erlang HTTP: Basado en Mochiviewb un kit para servidores HTTP ligeros escrito en ERLANG, permite el control y gestión de HTTP (gestión de peticiones, concurrencia, cabeceras HTTP, encriptado, autentificación,…)  Mod_Couch: Es el core de la máquina virtual de Erlang de CouchDB, este componente implemente la API y es el encargado de entender y gestionar las diferentes operaciones solicitadas por el cliente HTTP.
  • 11. Arquitectura  View_Engine: Este componente realiza todo el proceso de las vistas, el diseño de los documentos, la indexación,…, utilizando arboles B.  Storage_Engine: Gestiona las escrituras en Disco, este componente se comunica activamente con el View Engine y el Replicador ya que las vistas son incrementables y deben reflejar los cambios escritos a disco.  Replicador: Permite la replicación de los documentos, ayuda a la distribución entre diferentes dispositivos, tanto online como offline, este componente solo actúa si es activado manual o programáticamente pero no funciona de manera continua.
  • 12. Replicación  Para la replicación se envía una petición HTTP a CouchDB incluyendo la base de datos origen (source) y una de destino (target), y CouchDB envía los cambios del origen al destino, el siguiente código denota un ejemplo de replicación en CouchDB. POST /_replicate HTTP/1.1 {"source":"database","target":"http://example.org/ database "}
  • 13. Replicación  La sincronización se puede efectuar en ambas direcciones, para lo cual se debe cambiar la fuente por el destino, es decir:  La replicación es una forma de crear “snapshots” de las bases de datos en una sola instancia de CouchDB, con esto se puede testear código sin poner en riesgo los datos . POST /_replicate HTTP/1.1 {"source":"http://example.org/database","target":"da tabase"}
  • 14. Replicación  Replicación Continua: Esta petición de replicación no se detiene cuando se terminan de replicar los documentos del origen al destino, si no que continua a la escucha de cambios en cualquier documento, una vez encontrados los cambios se realiza la replicación, esta replicación no se la efectúa de inmediato. . > curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"db", "target":"db-replica", "continuous":true}
  • 15. Seguridad  La instalación por defecto de CouchDB permite peticiones realizadas por cualquier cliente, CouchDB llama a esto “The Admin Party”, todo mundo tiene privilegios para hacer cualquier cosa.  CouchDB contempla la idea de un usuario admin(superusuario, root, administrador) el cual tiene permitido hacer cualquier petición a una instancia de CouchDB.  Un usuario admin puede ejecutar un las siguientes peticiones en la instancia de CouchDB [5]:  Creación de bases de datos (PUT /database)  Eliminación de bases de datos (DELETE /database)  Creación de un documento de diseño (PUT /database/_design/app)
  • 16. Seguridad  La actualización de un documento de diseño (PUT /database/_design/apprev=1-4E2)  Eliminación de un documento de diseño(DELETE /database/_design/app?rev=1-6A7)  Activación de comparación (POST /_restart)  Lectura de la configuración activa (GET /_config)  Actualización de la configuración activa (PUT /_config)
  • 17. Seguridad  Creación de usuarios admin:  En la instalación inicial crea una base de datos por defecto, lo que se debe crear como paso siguiente es un usuario administrador, en este caso se creara un usuario jose, y su contraseña será adminJose > curl -X PUT $HOST/_config/admins/jose -d '"adminJose"' ""
  • 18. Seguridad  Cookie de Autenticación: CouchDB genera un token de una sola vez que el cliente podrá utilizar en su próxima solicitud a CouchDB, cunado CouchDB ve el token en una solicitud posterior, se autenticara al usuario basándose en el token sin la necesidad de requerir la contraseña, el token tiene una duración de 10 minutos. > HOST="http://127.0.0.1:5984" > curl -vX POST $HOST/_session -H 'application/x-www-form-urlencoded' -d 'name=anna&password=secret'
  • 19. Auditoria  Audit CouchDB  Es una herramienta simple, que solo utiliza la dirección URL de Apache CouchDB, para responder a las preguntas comunes de auditoria tales como:  ¿Cuál es la configuración del servidor?  ¿Cuántas cuentas de usuario existentes?  ¿Qué funciones de usuario existen?  ¿Cuál es la configuración de seguridad implementada en cada base de datos?  ¿Cuáles son las funciones de validación en cada documento de diseño?
  • 20. Auditoria  La auditoría se puede implementar desde la consola web de CouchDB, para lo cual basta con ir a Security-> Audit.
  • 21. Performance Management  Una vez que se empieza a manejar un número grade de documentos se tiene que ser cuidadoso con el manejo del mismo, así como de la forma de escribir el código, a continuación se presentan puntos a considerar para un rendimiento óptimo de CouchDB.  Disco Entrada/Salida  Tamaño del archivo: El menor tamaño de sus archivos, menos operaciones de E/S, dan como resultado un mayor número de archivos almacenados en CouchDB y en sistema operativo. Se debe ser cuidadoso con los datos que se está almacenando, por ejemplo es una mala práctica utilizar claves demasiado largas o utilizar claves únicas de caracteres individuales.
  • 22. Performance Management  Rendimiento en disco y sistema de archivos  Erlang sugiere la siguieren técnica para aumentar el rendimiento del sistema de archivos.  En sistemas operativos con soporte de threads, es posible hacer que las operaciones de archivos sean mejoradas con threads. Para lo cual se embrace en las variables de entorno de Erlang un número mayor de threads, ya que en la instalación por defecto se especifican 0 threads, para modificar el número de threads se debe ingresar el siguiente comando: export ERL_FLAGS="+A 4"
  • 23. Limitaciones de los recursos del Sistema  Uno de los problemas latentes en implementaciones grandes es la asignación por defecto de recursos que provee CouchDB y el sistema operativo, el aumento de estos límites puede permitir que la implementación de CouchDB crezca más allá de lo que la configuración por defecto ofrece.  Delayed_commits: Esto permite mejorar el rendimiento de escritura para algunas cargas de trabajo.  Esta configuración hace que CouchDB espere un segundo antes de que confirmar nuevos datos después de una actualización, esta configuración tiene el defecto de que si el servidor se bloquea antes de que la instrucción sea completada, cualquier grabación desde el último commit se pierde.
  • 24. Limitaciones de los recursos del Sistema  Max_dbs_open: Esta configuración aumenta el límite de bases de datos concurrentes. Esta configuración es recomendada en implementaciones en las que muchas bases de datos estarán replicando de forma continua. [couchdb] max_dbs_open = 100
  • 25. Red  Hay que tener cuidado del tamaño que se elige para los lotes, ya que lotes grandes requieren más tiempo en el cliente para codificar los elementos en archivos JSON y aun mas tiempo para decodificar el número de peticiones.  Si se posee un sistema rápido de E/S, se puede utilizar la concurrencia para tener múltiples peticiones/respuestas al mismo tiempo. Esto mitiga la latencia involucrada en el uso de los archivos JSON, haciendo el trabajo en red y la decodificación de JSON más eficiente.
  • 26. Red  Mochiweb implementa un buffet TCP, que almacena todas las peticiones pequeñas y espera a que todas estas completen un tamaño mayor y las envía por el protocolo TCP, este comportamiento TCP búfer puede ser desactivado a través de httpd/sochet_options: [httpd] socket_options = [{nodelay, true}]
  • 27. CouchDB  IDs de los documentos: El tamaño del archivo de la base de datos se deriva del tamaño de los documentos y de las vistas, pero también de múltiples de los _id, ya que un ID presente en un documento se encuentra duplicado en todo el árbol.  La inserción de ID secuenciales es más rápida que las identificaciones aleatorias, por tanto se debe tener en cuenta generar los IDs de manera manual o supervisada, por ejemplo, algo que lleva 16 dígitos hexadecimales se puede hacer de 4 dígitos de base 62 esto representa(10 números, 26 minúsculas, y 26 mayúsculas).
  • 28. Vistas  Las Vistas generadas con el servidor de consultas de JavaScript son demasiado lentas, cuando existen un número excesivo de documentos para procesar, la creación de las consultas no consume una sola CPU y mucho menos el sistema de E/S, el problema se ve en la latencia que se genera en la consulta, esto se debe a que el servidor de consulta de CouchDB se encuentra separado del interprete couchjs.  Reducción en la construcción de funciones: Si se hace el uso de funciones sencillas como sumas o restas, se puede hacer su implementación haciendo uso de las funciones por defecto de Erlang, por ejemplo _sum o _count, esto ayuda al rendimiento ya que reduce la entrada y salida entre CouchDB y el servidor de consultas JavaScript.
  • 29. Metadata Management  A diferencia de los archivos JSON normales, CouchDB agrega dos campos especiales al documento: el “_id” y ”_rev”.  El campo “_id” es un campo que permite identificar al documento, este campo puede ser definido de manera manual, pero se recomienda hacerlo de manera automática, ya que CouchDb asigna valores únicos y universales, lo cual ayuda en temas de replicación o sincronización.  El siguiente campo es “_rev”, este campo es importante para CuchDB, ya que este maneja a sus archivos por numero de versión, es decir si un documento es modificado, a diferencia de bases de datos convencionales, CouchDB, genera un nuevo documento con un numero de versión diferente. Este valor aumenta una unidad por cada cambio que se realice
  • 30. Metadata Management  Sin estructura fija: En las bases de datos convencionales se definen las características de los datos que se desean guardar, por ejemplo: CREATE TABLE usuario (nombre VARCHAR(20), correo VARCHAR(20),edad int(3)); { "_id" : "234a41170621c326ec63382f846d5764", "_rev" : "1-480277b989ff06c4fa87dfd0366677b6", "nombre" : "Jose", "correo" : "Jtapia@gmail.com", "edad" : "45" }
  • 31. Backup and Recovery  Las características previas discutidas acerca de CouchDB aseguran que se trata de una base datos muy fiable, pero sin embargo se debe tener en cuenta los agentes externos que pudiesen atentar con la integridad de la mismas, ejemplo de esto pueden ser, accidentes del servidor irrecuperables, hackers que encuentran las credenciales de administrador y eliminan los datos…  Existen estrategias de backup tradicionales para CouchDB entre las cuales se puede mencionar:  Replicación  Archivo de copia de seguridad de base de datos.  Instantáneas del sistema de archivos.
  • 32. Backup and Recovery  Replicación: CouchDB denota de las otras bases de datos, por la implementación de la replicación tira y afloja, es decir cualquier base de datos CouchDB puede ser replicada en cualquier otra si se tiene acceso HTTP y as credenciales apropiadas.  Archivo de copia de seguridad de base de datos: La similitud que CouchDB posee con git permiten que la base de datos almacene índices y archivos en el sistema de archivos subyacente, esta copia de seguridad se puede hacer de manera programática usando la línea de comando, u utilizando el cron en sistemas Unix o con el uso de herramientas como rsync, estas alternativas, realizan Backus de manera incremental.  Instantáneas del sistema de archivos: La utilización de la máquina virtual de Erlang asegura la creación de instantáneas de los archivos, según esta crea necesario, o según el administrador las programe.
  • 33. Data warehouse Facilities  Las características de CouchDB no son las idóneas para la implementación de Data warehose, ya que el manejo de versiones temporales de documentos y las vistas implementadas con JavaScript sugieren un problema para bases de datos que cresen de manera exponencial.  Sin embargo se puede hacer la implementación de CouchDB para bases de datos que no cambien continuamente, esto se lo hace con el objetivo de usar las facilidades que posee CouchDb para la manipulación de archivos JSON, esto se lo puede hacer implementando NodeJS
  • 34. Data warehouse Facilities  CouchDB ofrece MapReduce como característica principal, a más de esto cuenta con la interfaz Futon, que permite a los desarrolladores escribir declaraciones MapReduce basadas en JavaScript en un entorno de prueba, el código que se mostro pudo ser implementado utilizando una vista almacenada en CouchDB, y su llamada sería igual que llamar un procedimiento en un sistema RDBMS, la eficiencia de usar MapReduce se ve en la implementación de CouchDB en varios servidores, esto ayuda a escalar de manera rápida sin afectar el rendimiento de la consulta.
  • 35. DBA Tools existentes  Existen varias herramientas OpenSource, la herramienta por defecto en la instalación de CouchDB es Futon, esta herramienta presenta una interfaz muy amigable, la cual es accedida por el navegador una vez que se ha iniciado el agente de CouchDB.  Erica, es una herramienta que ayuda a crear el diseño de los documentos, a más de esto brinda soporte para las aplicaciones web (couchapps), el requerimiento mínimo es Erlang R14B04 o superiores.  Situo.py: Es un cliente CouchApp que utiliza lenguaje Python, esta herramienta permite realizar pruebas automatizadas.