UNIVERSIDAD NACIONAL DE CHIMBORAZO
FACULTAD DE CIENCIAS DE LA EDUCACIÓN HUMANAS Y TECNOLOGIAS DASE DE DATIS II ESCUELA DE: Informática Aplicada A La Educación NOMBRES: Ana Cecilia Saula Q. DOCENTE: Ing. Leonardo Ayavaca TEMA: Recuperación Pedagógica SEXTO: Semestre “A” RIOBAMBA- ECUADOR
MOTORES DE BASES DE DATOS OPEN SOURCE ¿Qué es?
Es una base de datos Open Source de gran rendimiento, escalable, schema-free (creo que esto se refiere a que no es una base de datos relacional convencional, aunque no estoy del todo seguro) y orientada a documentos (esquemas de datos tipo JSON). Hay drivers preparados para usar esta base de datos desde lenguajes como PHP, Python, Perl, Ruby, JavaScript, C++ y muchos más. (muylinux, 2010)
CARACTERISTICAS • De propósito general, casi tan rápida como las bases de datos NoSQL de tipo clave:valor, y con casi todas las funcionalidades de las bases de datos relacionales • Alta disponibilidad • Aggregation Framework- Procesamiento batch de datos para cálculos agrupados usando operaciones nativas de MongoDB • Replicación nativa: sincronización de datos entre servidores • Seguridad: autenticación, autorización, etc • Gestión avanzada de usuarios • Automatic failover: elección automática de un nuevo primario cuando este se ha caído • Es capaz de actualizarse sin dejar de dar servicio • (mongodb, 2014)
AMBIENTE DE TRABAJO
Descargar el software. Lo primero que vamos a hacer es descargar MongoDB de www.mongodb.org.
En mi capeta de usuario descomprimo el fichero y me fijo en el trayecto de los binarios. 4. Configurar variables de entorno. Añado a la variable de entorno PATH el trayecto del directorio bin de MongoDB. Esto se puede hacer de varios modos pero lo voy a hacer del que creo menos cutre, que es añadiendo una entrada (un fichero) con el trayecto en el directorio /etc/paths.d/ Ojito con el tema de permisos en Mac. Para proteger al sistema no puedes escribir sin más en algunas carpetas y tienes que cambiar a administrador (comando sudo su + contraseña).
Vemos ya la estructura de mi nodo con las bases de datos y colecciones dentro de ella. A medida que vamos navegando por la estructura nos muestra el comando que está ejecutando y la respuesta. Y podemos verificar el resultado en modo tabla. Fijaos bien que no hay que definir primero el esquema o estructura de la tabla sino que se van insertando "columnas" a medida que insertamos elementos. RESPUESTAS:
Directamente podemos empezar a hacer consultas desde la línea de ordenes con el comando find. Lo primero que vamos a hacer es obtener un subconjunto de datos que queremos procesar. Bueno, para un primer tutorial creo que está bien. Podemos leer entre líneas la potencia de este tipo de bases de datos aunque, para continuar con el mensaje del principio, no le restemos complejidad... queda mucho por estudiar y ver cuándo y cómo se debe aplicar a problemas reales. Los conceptos BigData y CloudComputing han llegado para quedarse ... así que va siendo buena hora de meter estas herramientas y conceptos en nuestra navaja suiza. (adictosaltrabajo, 2014)
¿QUE ES ?
Hypertable es un sistema de almacenamiento distribuido de datos de alto rendimiento diseñado para soportar aplicaciones que requieran máximo rendimiento, escalabilidad y eficiencia. Se ha diseñado y modelado a partir del proyecto BigTable de Google y se enfoca sobre todo a conjuntos de datos de gran escala
CARACTERISTICAS Este gestor de bases de datos ha sido desarrollado en C++, pero inicialmente se pensó hacerlo en Java, idea que fue rechazada debido al gran consumo de memoria de dicho lenguaje de programación, y a la intensidad del flujo de datos de una aplicación de la naturaleza de Hypertable (espol, 2009)
AMBIENTE DE TRABAJO
Como muchos otros que siguen este espacio, no me gusta la acepción intrínsecamente opuesta a SQLasociada al término NoSQL. Tampoco me gusta la improvisación actual del nombre, ‘no sólo SQL‘. Para mí, a lo que nos estamos refiriendo con el uso de este término no es si utilizar SQL o no (al contrario, el usuario puede decidir utilizar SQL como interfaz de consulta - sin soporte para joins, etc - para interactuar con estas bases de datos con objeto de gestionar el desarrollo, la escalabilidad y la mantenibilidad con el conocimiento de los recursos existentes). Las ‘Non Relational Databases‘ son aquellas que: • Utilizan un modelo de datos lógico vagamente fijado y extensible a través de un esquema de datos ampliable (Mapas, Columnas, Documentos, Grafos, etc) en lugar del modelo de datos basado en registros fijos seguidos en los esquemas relacionales Las variaciones entre las cuatro características anteriores (el Modelo de Datos Lógico, el Modelo de Distribución de los Datos, la Persistencias de los Datos y las Interfaces) de las ‘Non Relational Databases‘ están muy bien cubiertos en algunos de los recientes articulos ampliamente extendidos a través de Internet. Por tanto, en lugar de detallar lo mismo resumiré los aspectos clave con algunos ejemplos para disponer de una referencia rápida • Interfaces: REST (HBase, CouchDB, Riak, etc.), MapReduce (HBase, CouchDB, MongoDB, Hypertable, etc.), Get/Put (Voldemort, Scalaris, etc.), Thrift (HBase, Hypertable, Cassandra, etc.), APIs específicas para lenguajes (MongoDB). • Modelo Lógico de Datos: orientados a Key-Value (Voldemort, Dynomite etc.), orientados a Columnas (BigTable, HBase, Hypertable etc.), orientados a Documentos (Couch DB, MongoDB etc.) y orientados a Grafos (Neo4j, Infogrid etc.) • Modelo de Distribución de los Datos: Consistencia y Disponibilidad (HBase, Hypertable, MongoDB etc), Disponibilidad y Particionado (Cassandra etc.). Consistencia y Particionado, una combinación donde la Disponibilidad de algunos de los nodos no centrales se compromete. Curiosamente ninguna de las ‘Non Relational Databases’ soporta actualmente esta combinación. (muylinux, 2010)
Como en el caso de MongoDB, este proyecto está destinado a ofrecer una base de datos orientada a documentos que se pueden consultar o indexar en modo MapReduce usando JavaScript. CouchDB ofrece una API JSON RESTful a la que se puede acceder desde cualquier entorno que soporte peticiones HTTP. (muylinux, 2010)
CARACTERISTICAS En el apartado anterior se ha presentado la evolución del proyecto, a la vez que se han mencionado algunas de sus características principales. En este apartado se va a intentar analizar con más detalle qué ofrece CouchDB. •
Es un servidor de bases de datos orientado a documentos, accesible via API RESTful JSON.
•
Ad-hoc y de esquema libre con un espacio plano de direcciones.
• Distribuido, con una replicación robusta e incremental con detección y gestión de conflictos bidireccional. •
Indexable y consultable, haciendo uso de JavaScript como lenguaje de consulta.(Apach, 2014)
AMBIENTE DE TRABAJO En este apartado se van a ir presentando y discutiendo aspectos clave la implementación. Empezando por la estructura de sus componentes principales.
• HTTP Client: Es decir, el cliente que realiza peticiones contra el servidor de la base de datos. Este cliente puede ser cualquier aplicación que permita HTTP (navegador, aplicación móvil, aplicación Java, Python, etc.) Este es uno de los puntos fuertes de CouchDB y que potencia su uso en entornos web, así como la orientación al trabajo offline, apoyada por la posibilidad de replicación cuando la aplicación vuelva online (Este aspecto se tratará más en detalle posteriormente en este documento). • Erlang HTTP: Es uno de los componentes más importantes y esta basado en Mochiweb un kit para servidores HTTP ligeros escrito en Erlang. Sirve de apoyo a todas las funciones de control y gestión de HTTP (gestión de peticiones, concurrencia, cabeceras HTTP, encriptado, autentificación, etc. ) utilizadas por el componente mod_couch. • Mod_Couch: Es el núcleo de la máquina virtual Erlang de CouchDB. En este componente se implementa la API y es el encargado de entender y gestionar las diferentes operaciones solicitadas por el cliente HTTP. • View_Engine: Es en este componente donde se realiza todo el proceso de las vistas, los documentos de diseño, la indexación, etc. Las principales operaciones se realizan haciendo uso de arboles B. • Storage_Engine: Es otra de las partes esenciales de CouchDB ya que gestiona las escrituras a disco. Este componente se comunica activamente también con el View Engine y el Replicator debido a que por ejemplo las vistas son incrementales y deben reflejar los cambios escritos a disco. •
(Apach, 2014)
¿QUE ES?
Cassandra es probablemente uno de los proyectos NoSQL más concoidos del mercado. Se trata de una base de datos distribuida de segunda generación con alta escalabilidad que está siendo usada por gigantes como Facebook (que es quien la ha desarrollado), Digg, Twitter, Cisco y más empresas. El objetivo es ofrecer un entorno consistente, tolerante a fallos y de alta disponibilidad a la hora de almacenar datos. (mongodb, 2014)
CARACTERISTICAS • Índices secundarios, una forma expresiva y eficiente para consultar los datos a través de almacenamiento local de nodo en el lado del cliente • Amplia fila de apoyo, hasta dos millones de columnas por fila. • Los cambios de esquema en línea – los cambios de esquema en línea automatizada de la API del cliente permiten agregar y modificar las definiciones de objeto sin necesidad de un reinicio de clúster (Apache_Cassandra, 2013)
Ambiente de trabajo •
Preparación del sistema operativo
•
Selección e instalación de la versión adecuada de Cassandra
•
Configuración de Cassandra para el empleo de un único nodo
•
Inicio y parado de instancias en Cassandra ¿QUÉ ES?
HBase es u almaceén distribuido del tipo column-oriented que puede ser también denominado como la base de datos Hadoop. El proyecto está dirigido a ofrecer tablas enormes de “miles de millones de filas, y millones de columnas”. Dispone de un gateway RESTful que soporta XML, Protobug y opciones de codificación binaria de datos. (hbase, 2014)
CARACTERISTICAS o
Orientado a columnas. Como ya vimos esto quiere decir que la información se
almacena en celdas agrupadas en columnas que a su vez se agrupan en familias de columnas, pudiendo ser las columnas creadas en tiempo de ejecución. Además los registros se identifican mediante una clave que relaciona una o varias columnas, dando lugar a una representación de los datos en forma de mapas. Las columnas permanecen siempre ordenadas. o
Fragmentación por regiones. Las tablas de datos son dinámicamente divididas en
regiones que contienen los valores entre una clave de inicio y una clave de fin. Cada región es almacenada en un Region Server(sitiobigdata, 2013)
AMBIENTE DE TRABAJO
¿Qué es HBase? Atendiendo a lo que pone en su web, es la base de datos de Hadoop: un sistema de almacenamiento escalable y distribuible para Big Data. • Página web oficial: https://hbase.apache.org/ • Release que vamos a usar: 0.98.3 Instalando HBase La instalación es sencilla y sigue los procesos habituales: descargar, descomprimir y crear una variable de entorno para el directorio de instalación:
Bibliografía adictosaltrabajo. (2014). Obtenido de http://www.adictosaltrabajo.com/tutoriales/tutoriales.php? pagina=PrimerosPasosMongoDB Apach. (2014). apachefoundation. Obtenido de http://apachefoundation.wikispaces.com/Apache+Couch+DB
Apache_Cassandra. (2013). ecured. Obtenido de http://www.ecured.cu/index.php/Apache_Cassandra espol. (27 de 01 de 2009). blog.espol.edu.ec. Obtenido de http://blog.espol.edu.ec/taws/2009/01/27/hypertable/ hbase. (2014). Obtenido de apache: http://hbase.apache.org/ mongodb. (2014). Obtenido de http://www.mongodb.com/es