jean piere sarumo mongodb

20
ADMINISTRACION DE BASE DE DATOS UNIVERSIDAD PERUANA DE CIENCIAS E INFORMATICA JEAN PIERE G. SARUMO LOPEZ jeanpier9910@gmail .com

Upload: jean-sarumo

Post on 25-May-2015

487 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Jean piere sarumo mongodb

ADMINISTRACION DE BASE DE DATOSUNIVERSIDAD PERUANA DE CIENCIAS E INFORMATICA

JEAN PIERE G. SARUMO LOPEZ

[email protected]

Page 2: Jean piere sarumo mongodb

En informática, NoSQL (a veces llamado "no sólo SQL") es una amplia clase de sistemas de gestión de bases de datos que difieren del modelo clásico del sistema de gestión de bases de datos relacionales (RDBMS) en aspectos importantes, el más destacado que no usan SQL como el principal lenguaje de consultas.

Los sistemas de bases de datos NoSQL crecieron con las principales compañías de Internet, como Google, Amazon, Twitter y Facebook. Estas compañías se dieron cuenta que el rendimiento y sus propiedades de tiempo real eran más importantes que la coherencia, en la que las bases de datos relacionales tradicionales dedicaban una gran cantidad de tiempo de proceso.

(NoSQL)

Page 3: Jean piere sarumo mongodb

Introducción El nombre de MongoDB proviene de “humongous”, que significa enorme

en inglés, y es una base de datos NoSQL software libre, escalable y de alto rendimiento escrita en C++.

MongoDB es un sistema de bases de datos NoSQL orientado a documentos, a diferencia de MySQL, este no es una base de datos relacional. Es open source, lleva entre nosotros desde el 2009.

Considera que mongoDB fue diseñado para ser un motor de búsqueda sobre aplicaciones en la nube, debes de ser bien específico al momento de elegir un sistema NoSQL. Esto porque tienen diferentes funciones o están optimizados para diferentes tareas: Como Cassandra que fue diseñado para búsquedas en Facebook.

Page 4: Jean piere sarumo mongodb

MongoDB es un sistema de base de datos multiplataforma orientado a documentos, de esquema libre. Esto significa que cada entrada o registro puede tener un esquema de datos diferente, con atributos o “columnas” que no tienen por qué repetirse de un registro a otro.

Está escrito en C++, lo que le confiere cierta cercanía al bare metal, o recursos de hardware de la máquina, de modo que es bastante rápido a la hora de ejecutar sus tareas. Además, está licenciado como GNUAGPL 3.0, de modo que se trata de un software de licencia libre. Funciona en sistemas operativos Windows, Linux, OS X y Solaris.

Page 5: Jean piere sarumo mongodb

En MongoDB, cada registro o conjunto de datos se denomina documento. Los documentos se pueden agrupar en colecciones, las cuales se podría decir que son el equivalente a las tablas en una base de datos relacional (sólo que las colecciones pueden almacenar documentos con muy diferentes formatos, en lugar de estar sometidos a un esquema fijo).

Una base de datos en MongoDB tiene diferentes conceptos a una base de datos regular como MySQL. Cada registro o unidad básica de datos se le denomina documento. Y cada conjunto de documentos, que formarían una tabla, se le llama colección.

Un documento se podría comprar con el concepto de fila y una colección a una tabla.

Page 6: Jean piere sarumo mongodb

Características: Software abierto Escalable Alta disponibilidad (puede trabajar en modo maestro-

esclavo) Orientado a documentos (no es relacional) Simplicidad basada en esquemas de tipo JSON Consultas dinámicas

Page 7: Jean piere sarumo mongodb

Características: Completo soporte de índices, incluyendo índices secundarios,

objetos internos, arrays (cadenas). Rápido, actualizaciones in situ. Almacenamiento eficiente de datos binarios en objetos largos,

tales como vídeos o fotografías Replicación y soporte a prueba de fallos Auto fragmentación para escalabilidad a nivel de nube. Acceso y gestión mediante drivers en multitud de lenguajes de

programación: C, C++, C#, .NET, Java, JavaScript, PHP, Phyton, Ruby, Perl, etc.

Soporte, formación y consultoría.

Page 8: Jean piere sarumo mongodb

Formato de los documentos: Los distintos documentos se almacenan en formato BSON, o Binary JSON,

que es una versión modificada de JSON que permite búsquedas rápidas de datos. Para hacernos una idea, BSON guarda de forma explícita las longitudes de los campos, los índices de los arrays, y demás información útil para el escaneo de datos. Es por esto que, en algunos casos, el mismo documento en BSON ocupa un poco más de espacio de lo que ocuparía de estar almacenado directamente en formato JSON.

Pero una de las ideas claves en los sistemas NoSQL es que el almacenamiento es barato, y es mejor aprovecharlo si así se introduce un considerable incremento en la velocidad de localización de información dentro de un documento.

Page 9: Jean piere sarumo mongodb

Colecciones Una colección nos ayuda a organizarnos de manera mucho más fácil y rápida.Código :

Notas importantes- Mantener diferentes tipos de documentos en una misma colección es de masoquistas.- Un string vacío no es un nombre válido, así como no se puede utilizar un string con signo de dolar.- Es más rápido obtener una lista de documentos que mantengan la misma estructura.- Siempre planea la estructura de tus colecciones y documentos antes de comenzar.

Page 10: Jean piere sarumo mongodb

Cómo consultar los datos: Sin entrar demasiado en detalles acerca de todas las posibilidades que MongoDB nos ofrece para consultar los datos almacenados, sí quisiera nombrar algunas de ellas, para hacer notar que no estamos frente a un sistema simple de almacenamiento de pares clave-valor.

En primer lugar, MongoDB nos permite utilizar funciones Map y Reduce escritas en Javascript para seleccionar los atributos que nos interesan de los datos, y agregarlos (unificarlos, simplificarlos) en la manera deseada, respectivamente. Esto es algo habitual en muchos sistemas NoSQL, y en algunos casos es incluso la única forma posible de consultar datos.

Page 11: Jean piere sarumo mongodb

Trabajando con documentos Para insertar documentos en nuestra BD usaremos la orden

“db.coleccion.insert”:

MongoDB soporta varios tipos para sus datos. Tenemos los típicos del formato JSON (string, integer, boolean, double, null, array, object) asi como varios especiales (date, object id, binary data, regular expression, code).

Como tenemos un interprete Javascript todo para nosotros podemos hacer como como esta:

Page 12: Jean piere sarumo mongodb

Para poder consultar los datos de nuestra BD podemos usar la orden “db.coleccion.find”:

En caso de que tengamos muchos resultados MongoDB solo muestra los 10 primeros y podemos ir viendo los grupos restantes con la orden “it”.

Page 13: Jean piere sarumo mongodb

Aquí es interesante ver como MongoDB nos ha generado un campo “_id” para cada una de los documentos insertados. Este campo id es autogenerado por defecto y está indexado (hace que las búsquedas por él sean mucho mas rápidas). Si ya tenemos un código que nos pueda servir como identificador se lo podemos pasar en la inserción y MongoDB lo usará.

Page 14: Jean piere sarumo mongodb

Lo interesante es que a find le podemos pasar un documento de forma que MongoDB nos devolverá aquellos documentos cuyos valores coincidan. Esto es lo que se conoce como “query by example”.

Un detalle importante es que podemos utilizar el tipo “regular expression” en estas consultas:

Page 15: Jean piere sarumo mongodb

En MongoDB se pueden utilizar consultas al valor de un atributo específico. Por ejemplo, podemos capturar el post que tiene un determinado título:

El valor a consultar puede estar anidado en un tipo de datos más completo en el atributo del documento (por ejemplo, como valor de un hash asociado al atributo, o como el valor de uno de los ítems de un array). Se utiliza un punto como separador de los nombres de las claves de los diferentes hashes que hay que recorrer hasta llegar al valor deseado. Por ejemplo, la siguiente consulta devolvería todos los posts escritos por un determinado autor:

Page 16: Jean piere sarumo mongodb

Y esta otra los posts etiquetados con MongoDB:

El hash utilizado como conjunto de condiciones que deben cumplir los documentos a devolver puede incluir operadores de muy diversos tipos, Algunos de ellos son:

$all : Para indicar que el array almacenado como valor del atributo debe tener los mismos elementos que el proporcionado en la condición.

$exists : Para comprobar que el atributo existe en el documento. $mod : Para comprobar el resto de una división del valor del atributo por

un número. $ne : Para indicar que el valor no puede ser el proporcionado. $in : Para indicar que el valor debe estar entre alguno de los

proporcionados. $nin : Contrario de $in.

Page 17: Jean piere sarumo mongodb

Ejemplo

Page 18: Jean piere sarumo mongodb

Por ejemplo, si tenemos un blog podemos guardar los comentarios dentro de cada post (esto iría en una colección llamada “posts”):

Lo bueno es que podemos realizar consultas sobre los datos de estos documentos embebidos de forma que podemos obtener los posts que contengan un comentario hecho por Manolo:

Page 19: Jean piere sarumo mongodb

Manejo de datos desde la shell Para hacer una inserción y guardarla escribimos lo siguiente para obtener

algo parecido a pepito = tontito…Código :

Y para imprimir el contenidoCódigo :

Page 20: Jean piere sarumo mongodb

Ejemplo de uso en Java: Lo primero es descargar e añadir al classpath ”el driver .jar necesario para poder

conectar a la base de datos”. A continuación un ejemplo de conexion a la base de datos y de diferentes

acciones, el ejemplo esta basado en la documentación oficial.