Tabla de Contenido
Agradecimientos....................................................................................................................3
Acerca del autor.....................................................................................................................4
Lo que debes saber...............................................................................................................5
Capítulo 1: Introducción a NoSQL.........................................................................................6
1.1. ¿Qué es NoSQL?.......................................................................................................6
1.2. ¿Qué NO es NoSQL?.................................................................................................7
1.3. Tipos de bases de datos NoSQL................................................................................7
1.3.1. Bases de datos orientadas a documentos..........................................................8
1.3.2. Bases de datos orientadas a clave/valor............................................................9
1.3.3. Bases de datos orientadas a grafos....................................................................9
1.4. Sistema de gestión de bases de datos (SGBD).......................................................10
1.5. Lista de SGBD NoSQL.............................................................................................10
1.6. ¿Por qué usar NoSQL?............................................................................................12
Capítulo 2: Conociendo MongoDB......................................................................................14
2.1. MongoDB..................................................................................................................14
2.2. Términos básicos entorno a MongoDB....................................................................14
2.2.1. JSON - JavaScript Object Notation...................................................................14
2.2.2. Documento........................................................................................................15
2.2.3. Colección...........................................................................................................15
2.3. Instalando MongoDB................................................................................................15
2.3.1. Instalación en Linux desde la fuente.................................................................15
2.3.2. Instalación en Linux desde los repositorios......................................................16
2.3.2.1. Instalación en Fedora Linux, Red Hat Linux Enterprise y otras
distribuciones..........................................................................................................16
2.3.3. Instalación en Mac OS X..............................................................................17
2.4. La consola interactiva de MongoDB.........................................................................18
2.4.1. Ayuda en la consola interactiva.........................................................................19
2.5. Conectando a una base de datos.............................................................................19
2.5.1. Seleccionando la base de datos.......................................................................19
2.6. Nuestro primer documento.......................................................................................20
3. CRUD en MongoDB.........................................................................................................21
3.1. ¿Qué es CRUD?.......................................................................................................21
3.2. Create.......................................................................................................................22
3.2.1. insert()...............................................................................................................22
3.2.2. .save()................................................................................................................23
3.3. Read.........................................................................................................................23
3.3.1. find()...................................................................................................................24
3.3.2. findOne()............................................................................................................25
3.4. Update......................................................................................................................26
3.4.1. update().............................................................................................................26
3.5. Delete........................................................................................................................26
3.5.1. remove()............................................................................................................27
3.5.2. drop().................................................................................................................27
Lo que queda pendiente......................................................................................................29
Aportes.................................................................................................................................29
Agradecimientos
A mis padres, mi hermano y mi novia por todo lo que me han podido brindar en mi
desarrollo profesional y personal.
Acerca del autor
Mi nombre es Yohan D. Graterol, soy un programador y activista pro-FOSS
(Free and Open Source Software), me interesa mucho llevar temas interesantes y
novedosos al público hispanoparlante, y he dictado conferencias en varios países
de Latinoamérica sobre: programación, bases de datos no relacionales,
computación en la nube, y otros temas relacionados con software libre. Soy
miembro del proyecto Fedora, y estoy en constante formación sobre las últimas
tecnologías que las grandes comunidades de software libre nos brindan.
Mi correo de contacto es
[email protected] y mi cuenta de Twitter
es @yograterol.
Lo que debes saber
Antes de entrar al mundo de noSQL debes conocer conceptos como: ¿Qué
es una base de datos?, ¿Para que sirven?, y ¿Cuales son las aplicaciones
fundamentales en el mundo real?, saber sobre bases de datos relacionales es
opcional, ya que cambia el paradigma en el tratamiento de la información.
Este libro estará conformado por varios tomos que tratarán de abarcar todos
los puntos importantes en consultas, administración y escalamiento de una
base de datos documental. Este primer tomo está enfocado 100% a la parte básica
del motor de bases de datos MongoDB.
Capítulo 1: Introducción a NoSQL
1.1. ¿Qué es NoSQL?
NoSQL o "No solamente SQL" (Not Only SQL) es un término acuñado por
Carlo Strozzi en 1998 y nuevamente retomado por Eric Evans en 2009 y se refiere
a un conjunto de bases de datos que se diferencian en gran parte de las bases de
datos convencionales, en características tanto de uso como de implementación;
estos tipos de bases de datos no usan SQL o al menos no como lenguaje
predeterminado para realizar las consultas. Las bases de datos NoSQL, no
soportan totalmente ACID, esto lo explica el teorema del profesor Eric Brewer,
Teorema CAP (2000), donde menciona:
Es imposible para un sistema distribuido garantizar simultáneamente las
siguientes tres características:
• Consistency (Consistencia): todos los nodos ven la misma data al mismo tiempo.
• Availability (Disponibilidad): una garantía de que todos los requerimientos
recibirán una respuesta de que el requerimiento fue exitoso o fallido.
• Partition Tolerance (Tolerancia a la Partición): el sistema continúa operando a
pesar de la pérdida arbitraria de mensajes, o la falla de parte del sistema.
En primera instancia es una desventaja, pero gracias a esto permite que los
motores de bases de datos no relacionales escalen fácilmente de manera
horizontal. Para subsanar el problema de ACID, nuevamente el profesor Brewer
ideó BASE (Basically Available, Soft-state, Eventually consistent) que lo conforman
los siguientes puntos:
• Disponibilidad básica: para cada solicitud se garantiza una respuesta,
satisfactoria o falla de ejecución.
• Estado "Soft": El estado del sistema puede cambiar con el tiempo, a veces
sin cualquier entrada.
• Consistencia Eventual: La base de datos puede ser en un momento
inconsistente pero será consistente con el tiempo.
El lenguaje SQL no es un lenguaje predominante entre los distintos tipos de
bases de datos no relacionales, por lo general cada motor tiene su propio lenguaje
de consultas. Cabe destacar que la información no se almacena con un esquema
fijo (pero si usando almacenamiento estructurado), aun que si existe un esquema
que el DBA o el desarrollador propone con anterioridad de manera virtual, es decir,
no se crea en el motor antes de utilizar la base de datos sino al almacenar el
primer valor.
1.2. ¿Qué NO es NoSQL?
El término NoSQL no es una base de datos y tampoco un tipo de base de
datos, sino una definición que engloba un conjunto de tipos de bases de datos que
difiere con las bases de datos convencionales.
1.3. Tipos de bases de datos NoSQL
En el mundo de las bases de datos no relacionales nos encontramos con
distintos modelos o tipos, que se desempeñan mejor en algunos ambientes
específicos; esas distintas facetas no se ven en las base de datos relacionales. En
este libro se expondrán los tipos más comunes.
1.3.1. Bases de datos orientadas a documentos
Las bases de datos orientadas a documentos o también denominadas como
Bases de datos documental, trab
Comentarios de: MongoDB -Tomo 1 - El principio (0)
No hay comentarios