blog/mdad/mongodb-introduction/index.html (view raw)
1<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=description content="Official Lonami's website"><meta name=viewport content="width=device-width, initial-scale=1.0, user-scalable=yes"><title> MongoDB: Introducción | Lonami's Blog </title><link rel=stylesheet href=/style.css><body><article><nav class=sections><ul><li><a href=/>lonami's site</a><li><a href=/blog class=selected>blog</a><li><a href=/golb>golb</a></ul></nav><main><h1 class=title>MongoDB: Introducción</h1><div class=time><p>2020-03-05T01:00:18+00:00<p>last updated 2020-03-20T10:31:10+00:00</div><p>Este es el primer post en la serie sobre Mongo, en el cuál introduciremos dicha bases de datos NoSQL y veremos sus características e instalación.<p>Otros posts en esta serie:<ul><li><a href=/blog/mdad/mongodb-introduction/>MongoDB: Introducción</a> (este post)<li><a href=/blog/mdad/mongodb-operaciones-basicas-y-arquitectura/>MongoDB: Operaciones Básicas y Arquitectura</a></ul><p>Este post está hecho en colaboración con un compañero.<hr><p><img src=https://lonami.dev/blog/mdad/mongodb-introduction/0LRP4__jIIkJ-0gl8j2RDzWscL1Rto-NwvdqzmYk0jmYBIVbJ78n1ZLByPgV.png><h2 id=definicion>Definición</h2><p>MongoDB es una base de datos orientada a documentos. Esto quiere decir que en lugar de guardar los datos en registros, guarda los datos en documentos. Estos documentos son almacenados en BSON, que es una representación binaria de JSON. Una de las principales diferencias respecto a las bases de datos relacionales es que no necesita seguir ningún esquema, los documentos de una misma colección pueden tener esquemas diferentes.<p>MongoDB está escrito en C++, aunque las consultas se hacen pasando objetos JSON como parámetro.<pre><code>{
2 "_id" : ObjectId("52f602d787945c344bb4bda5"),
3 "name" : "Tyrion",
4 "hobbies" : [
5 "books",
6 "girls",
7 "wine"
8 ],
9 "friends" : [
10 {
11 "name" : "Bronn",
12 "ocuppation" : "sellsword"
13 },
14 {
15 "name" : "Shae",
16 "ocuppation" : "handmaiden"
17 }
18 ]
19 }
20</code></pre><h2 id=caracteristicas>Características</h2><p><img src=https://lonami.dev/blog/mdad/mongodb-introduction/WxZenSwSsimGvXVu5XH4cFUd3kr3Is_arrdSZGX8Hi0Ligqgw_ZTvGSIeXZm.png><p>MongoDB alcanza un balance perfecto entre rendimiento y funcionalidad gracias a su sistema de consulta de contenidos. Pero sus características principales no se limitan solo a esto, también cuenta con otras que lo posicionan como el preferido de muchos desarrolladores de aplicaciones como aplicaciones móviles, gaming, logging o e-commerce.<p>Algunas de las principales características de esta base de datos son:<ul><li>Almacenamiento orientado a documentos (documentos JSON con esquemas dinámicos).<li>Soporte Full index: puede crear índices sobre cualquier atributo y añadir múltiples índices secundarios.<li>Replicación y alta disponibilidad: espejos entre LANs y WANs.<li>Auto-Sharding: escalabilidad horizontal sin comprometer la funcionalidad, está limitada, actualmente, a 20 nodos, aunque el objetivo es alcanzar una cifra cercana a los 1000.<li>Consultas ricas y basadas en documentos.<li>Rápidas actualizaciones en el contexto.<li>Soporte comercial, capacitación y consultoría disponibles.<li>También puede ser utilizada para el almacenamiento de archivos aprovechando la capacidad de MongoDB para el balanceo de carga y la replicación de datos.</ul><p>En cuanto a la arquitectura, podríamos decir que divide en tres partes: las bases de datos, las colecciones y los documentos (que contienen los campos de cada entrada).<ul><li><strong>Base de datos</strong>: cada una de las bases de datos tiene un conjunto propio de archivos en el sistema de archivos con diversas bases de datos existentes en un solo servidor.<li><strong>Colección</strong>: un conjunto de documentos de base de datos. El equivalente RDBMS de la colección es una tabla. Toda colección existe dentro de una única base de datos.<li><strong>Documento</strong>: un conjunto de pares clave/valor. Los documentos están asociados con esquemas dinámicos. La ventaja de tener esquemas dinámicos es que el documento en una sola colección no tiene que tener la misma estructura o campos.</ul><h2 id=arista-dentro-del-teorema-cap>Arista dentro del Teorema CAP</h2><p><img src=https://lonami.dev/blog/mdad/mongodb-introduction/t73Q1t-HXfWij-Q1o5AYEnO39Kz2oyLLCdQz6lWQQPaSQWamlDMjmptAn97h.png><p>MongoDB es CP por defecto, es decir, garantiza consistencia y tolerancia a particiones (fallos). Pero también podemos configurar el nivel de consistencia, eligiendo el número de nodos a los que se replicarán los datos. O podemos configurar si se pueden leer datos de los nodos secundarios (en MongoDB solo hay un servidor principal, que es el único que acepta inserciones o modificaciones). Si permitimos leer de un nodo secundario mediante la replicación, sacrificamos consistencia, pero ganamos disponibilidad.<h2 id=descarga-e-instalacion>Descarga e instalación</h2><h3 id=windows>Windows</h3><p>Descargar el archivo desde <a href=https://www.mongodb.com/download-center#production>https://www.mongodb.com/download-center#production</a><ol><li>Doble clic en el archivo <code>.msi</code><li>El instalador de Windows lo guía a través del proceso de instalación. Si elige la opción de instalación personalizada, puede especificar un directorio de instalación. MongoDB no tiene ninguna otra dependencia del sistema. Puede instalar y ejecutar MongoDB desde cualquier carpeta que elija.<li>Ejecutar el <code>.exe</code> que hemos instalado.</ol><h3 id=linux>Linux</h3><p>Abrimos una terminal y ejecutamos:<pre><code>sudo apt-get update
21sudo apt install -y mongodb-org
22</code></pre><p>Luego comprobamos el estado del servicio:<pre><code>sudo systemctl start mongod
23sudo systemctl status mongod
24</code></pre><p>Finalmente ejecutamos la base de datos con el comando:<pre><code>sudo mongo
25</code></pre><h3 id=macos>macOS</h3><p>Abrimos una terminal y ejecutamos:<pre><code>brew update
26brew install mongodb
27</code></pre><p>Iniciamos el servicio:<pre><code>brew services start mongodb
28</code></pre><h2 id=referencias>Referencias</h2><ul><li><a href=https://expertoenbigdata.com/que-es-mongodb/#La_arquitectura_de_MongoDB>Todo lo que debes saber sobre MongoDB</a><li><a href=https://www.ecured.cu/MongoDB>MongoDB – EcuRed</a><li><a href=https://mappinggis.com/2014/07/mongodb-y-gis/>Bases de datos NoSQL, MongoDB y GIS – MappingGIS</a><li><a href=https://es.slideshare.net/maxfontana90/caractersticas-mongo-db>Características MONGO DB</a><li><a href=https://openwebinars.net/blog/que-es-mongodb>Qué es MongoDB y características</a><li><a href=https://www.genbeta.com/desarrollo/mongodb-que-es-como-funciona-y-cuando-podemos-usarlo-o-no>MongoDB. Qué es, cómo funciona y cuándo podemos usarlo (o no)</a><li><a href=https://docs.mongodb.com/>MongoDB Documentation</a><li><a href=https://www.genbeta.com/desarrollo/nosql-clasificacion-de-las-bases-de-datos-segun-el-teorema-cap>NoSQL: Clasificación de las bases de datos según el teorema CAP</a></ul></main><footer><div><p>Share your thoughts, or simply come hang with me <a href=https://t.me/LonamiWebs><img src=/img/telegram.svg alt=Telegram></a> <a href=mailto:totufals@hotmail.com><img src=/img/mail.svg alt=Mail></a></div></footer></article><p class=abyss>Glaze into the abyss… Oh hi there!