Introducción a NoSQL con MongoDB (Parte 1)
Una introducción a NoSQL con la finalidad de entender porque es una gran solución a problemas existentes en bases de datos relacionables / RDBMS, así como algunas alternativas
para poder terminar explorando una de las opciones más populares de NoSQL: MongoDB.
2. La finalidad del Meetup es
tener un lugar donde compartir
experiencias (técnicas o no),
ideas y tendencias en la
industria de IT
Querétaro Software
Development Meetup
3. Primera Regla del Meetup:
tú hablas del Meetup
Segunda Regla del Meetup:
TÚ HABLAS del Meetup
Tercera Regla del Meetup:
TÚ HABLAS DEL MEETUP
4. Teléfonos como
en Cine
Participen Regla del ⅔ en Dudas
Términos en Inglés
Presentes y en Itálicas
Presentación disponible
en SlideShare
Guía de Acuerdo Común
Para asegurarnos de llevarnos bien, vamos aclarando unas cosas
Faltas de Ortografía y
pochismos presentes
7: 50 pm nos vamos No hacer presentaciones
para vender tu producto
5. Una presentación en el 2010 cambió mi actitud y mis
experiencias cada que participo en una presentación
o conferencia, así como las expectativas que tengo de
éstas.
La triste historia de una presentación
Una presentación de GMaps
Expectativas Reales
Cuales son sus expectativas del Meetup?
7. Septiembre, 2017
Introducción a NoSQL
Presentado por Osvaldo Mercado Coss
con MongoDB (Parte 1)
Querétaro Software
Development Meetup
8. 8
Osvaldo Mercado Coss
Backend Developer por error
● De Guadalajara, México
● Senior Backend Developer en PSL Group
● Estudios en Multimedia, de alguna manera termine codeando en el
backend
○ Stack: LA|EMP, PHP + Framework, NodeJS & Python
○ DevOps: Vagrant + Chef
○ DBs: MySQL/MariaDB, Amazon Aurora, CouchDB, Couchbase,
MongoDB y desgraciadamente SQL Server
○ Interesado en Software Escalable, DevOps & Perros
Un poco sobre mi:
Hola!
@omercadocoss
omercadocoss@gmail.com
https://mx.linkedin.com/in/osvaldomercado
9. Agenda
De DBs tradicional a NoSQL
¿Porqué MongoDB?
Best Practices
Conclusión
MongoDB in Action
NoSQL? 2017 y aún no sabes que és?!
10. A NoSQL [...] database provides a
mechanism for storage and
retrieval of data that is modeled
in means other than the tabular
relations used in relational
databases
- en.wikipedia.org/wiki/NoSQL
11. NoSQL-database defines NoSQL as
‘Next Generation Databases mostly
addressing some of the points: being
non-relational, distributed, open-
source and horizontally scalable.’. In
other words, it's not a very precise
definition.
- ElasticSearch [1]
12. Todo base de datos que NO tiene
relaciones entre datos/tablas, lo
catalogamos como NoSQL
13. 13
Qué es lo que promueve una DB Relacional?
4 puntos básicos que conocer
Organiza la
información de
entidades
A partir de un
identificador único, se
establecen
relaciones/mappings
a otras entidades o
atributos de ellas
Uso de SQL
Prácticamente todas
las DB relacionales
usan un tipo de SQL
(Structured Query
Language) para
consultar y
administrar la base de
datos
Siguen las 12
reglas de Codd
Una DB relacional -
en su mayoría -
promueve el uso de
un RDBMS por medio
de las 12 reglas de
Codd o gran parte de
ellas.
Los Datos deben
de poder ser
Relacionables…
Sin necesidad de
explicación...
14. 14
Vamos entendiendo de qué estamos hablando
La DB Relacional era la ley, y la Ley se Respetaba
15. 15
Vamos entendiendo de qué estamos hablando
La DB Relacional era la ley, y la Ley se Respetaba
17. 17
Dondé nos falló la DB Relacional?
Un ejemplo claro de donde falla una DB relacional
18. Las DBs NoSQL surgen por el
resultado del crecimiento exponencial
del internet y el crecimiento de las
web apps. Google publica su
investigación de BigTable en 2006 y
Amazon, sobre Dynamo, en 2007
Why NoSQL Database? - Couchbase
19. La necesidad de desarrollar
ágilmente y de operar
a cualquier escala
Why NoSQL Database? - Couchbase
20. 20
Qué es lo que promueve NoSQL?
Traté de compilar algunos puntos en común
Datos Masivos
Cambiantes
NoSQL está orientado a
aplicaciones creadas con
datos nuevos que pueden
cambiar entre
estructurados, semi-
estructurados y
poliformicos
Se olvida de
rigurosos
schemas… Free
for all!
Deja estructuras
rígidas de lado para
poder facilitar
operaciones en la DB.
Deja A.C.I.D de
lado (en veces)
En veces, deja de
garantizar este concepto
a cambio de availability y
scalability
Está normalmente
diseñado para
escalar fácilmente
/ ser distribuida
por medio de
clusters
NoSQL se enfoca en
grandes cantidades
de datos, por lo que
su arquitectura es
diferente
21. 21
El Mágico Mundo de NoSQL
Existen diferentes tipos de bases de datos NoSQL
Document DBs
Asocian un key a una
estructura de datos
complejos que se le
denomina el
documento.
Graph DB
Usadas para
almacenar
información de
relaciones de datos,
como conexiones
sociales.
Key-Value Stores
La versión más
sencilla de NoSQL,
que almacena
únicamente un key y
un value. Y párale de
contar.
Wide-column
stores
Almacenan datos en
columnas dinámicas
que pueden alcanzar
billones, pero
manejan un modo key-
value
22. 22
El Mágico Mundo de NoSQL
Existen diferentes tipos de bases de datos NoSQL
Key-Value Stores
La versión más
sencilla de NoSQL,
que almacena
únicamente un key y
un value. Y párale de
contar.
23. 23
El Mágico Mundo de NoSQL
Existen diferentes tipos de bases de datos NoSQL
Document DBs
Asocian un key a una
estructura de datos
complejos que se le
denomina el
documento.
24. 24
El Mágico Mundo de NoSQL
Existen diferentes tipos de bases de datos NoSQL
Graph DB
Usadas para
almacenar
información de
relaciones de datos,
como conexiones
sociales.
25. 25
El Mágico Mundo de NoSQL
Existen diferentes tipos de bases de datos NoSQL
Wide-column
stores
Almacenan datos en
columnas dinámicas
que pueden alcanzar
billones, pero
manejan un modo key-
value
26. 26
El Mágico Mundo de NoSQL
Existen diferentes tipos de bases de datos NoSQL, aunque est
27. 27
El Mágico Mundo de NoSQL
Existen diferentes tipos de bases de datos NoSQL
Document DBs
Asocian un key a una
estructura de datos
complejos que se le
denomina el
documento.
Graph DB
Usadas para
almacenar
información de
relaciones de datos,
como conexiones
sociales.
Key-Value Stores
La versión más
sencilla de NoSQL,
que almacena
únicamente un key y
un value. Y párale de
contar.
Wide-column
stores
Almacenan datos en
columnas dinámicas
que pueden alcanzar
billones, pero
manejan un modo key-
value
28. 28
El Mágico Mundo de NoSQL
Existen diferentes tipos de bases de datos NoSQL
Document DBs
Asocian un key a una
estructura de datos
complejos que se le
denomina el
documento.
Graph DB
Usadas para
almacenar
información de
relaciones de datos,
como conexiones
sociales.
Key-Value Stores
La versión más
sencilla de NoSQL,
que almacena
únicamente un key y
un value. Y párale de
contar.
Wide-column
stores
Almacenan datos en
columnas dinámicas
que pueden alcanzar
billones, pero
manejan un modo key-
value
29.
30.
31. 31
De MySQL a NoSQL en un ejemplo
Un excelente ejemplo de lo que es cambiar datos de una DB relacionable a NoSQL
32. 32
Qué es el MongoDB?
Vamos entendiendo de qué estamos hablando
MongoDB es una base de datos gratuita y
open source orientada a documentos, la
cual maneja sus datos en JSON/BSON y en
la que encontramos que fue planeada
como distribuible/escalable desde su core
lo cual la hace altamente flexible y escalable
33. 33
Qué es el MongoDB?
Vamos entendiendo de qué estamos hablando
34. 34
Qué es el MongoDB?
Vamos entendiendo de qué estamos hablando
35. 35
Qué es el MongoDB?
Vamos entendiendo de qué estamos hablando
36. 36
Qué es el MongoDB?
Vamos entendiendo de qué estamos hablando
37. 37
Entendiendo MongoDB
Cuáles son algunas de sus características principales
Utiliza documentos
similares a objetos JSON
Promueve el
polimorfismo de datos
Tiene Agregación de
Datos por medio de
MapReduce
Tiene Búsqueda de Datos
Viene con un core
enfocado en réplicas y
sharding
Interactuas desde tu
app a MongoDB por
medio de
drivers/librerías
Tiene una versión
enterprise
Múltiple soporte de
storage engines
39. MongoDB es una confiable
solución NoSQL para
almacenamiento de datos, con
una gran comunidad, en
constante desarrollo y probada
para uso inmenso de datos
40. 40
Donde he visto que MongoDB Brilla
Aquí es donde personalmente veo los beneficios de usar MongoDB
Web App a producción con
grandes cantidades de datos
Es una excelente opción para
crecer tu aplicación y usarla
desde el principio, no es algo
experimental ni que haya sido
testeado unas veces, MongoDB
funciona y funciona bastante
bien para un sistema en
producción.
Disponibilidad de comunidad
y soporte en múltiples
plataformas
A pesar de que se tienen que utilizar
diferentes librerías y drivers para
utilizar MongoDB, la disponibilidad
es bastante buena y no le he
encontrado limitantes en OS o
lenguaje de programación, aparte su
documentación es buena y tiene una
comunidad bastante activa
Sistemas Que se Expandirán
Rápidamente y que Necesitan DB
El sharding, clusters, réplicas, sin
queja alguna… otro elemento que
funciona bastante bien y hasta el
momento no he encontrado algún
problema con cualquiera de estas
funcionalidades.
41. 41
Donde he visto que MongoDB Brilla
Otros ejemplos de donde brilla MongoDB
42. 42
Donde he visto que MongoDB me Deja Abajo
Aquí es donde personalmente veo las desventajas de usar MongoDB
Recursos limitados de
hardware o donde no se puede
tener control total del
servidor
Si no tienes control completo de
tu servidor, no puedes instalar
cosas desde cero o no puedes
aumentar RAM fácilmente,
cuidado, a lo mejor MongoDB
no es para ti.
Tratar de hacer relaciones
complejas de datos
Obviamente no es para esto, pero si
se necesita, MongoDB puede ser un
costoso proceso para hacer algo que
una RDBMS puede hacer bastante
fácilmente.
No es una DB que dejas vivir,
es una DB que debe de ser
monitoreada
Nada es perfecto, MongoDB
necesita tweaks (en mi
experiencia) más frecuente que
otras DBs, esto no es
necesariamente malo, pero es
algo que tomar en cuenta.
44. 44
Pregúntate qué es lo
que requieres de tus
datos
Best Practices Personales
5 cosas que he aprendido en NoSQL
No te vayas por un
trend, ni por lo que te
contaron, investiga
algunos de los casos
de uso con los cual te
puedes topar en tu
desarrollo existente.
Investiga que DB
te da una mejor
solución o te
ahorra problemas
Lanzar un cluster de
elasticsearch a lo mejor
no es la mejor idea si sólo
necesitas búsquedas por
id. Necesitas replicación
de datos? Necesitas
sharding? tienes
limitantes de hardware?
Métete a los docs
El buen uso de tu DB de
NoSQL o de MongoDB
depende en gran parte
de cómo configuras tu
DB, tienes que leer y
tienes que aprender que
pasa en ella.
Revisa tus datos
Para darle un uso
óptimo, cambia
colecciones, cambia
índices, MongoDB
facilita estos cambios
y los hace bastante
sencillos, están
adaptadas para el
cambio constante -
aprovéchalo
Que no te de miedo
mezclar
Tu aplicación y tus
datos rigen el rumbo
de la DB a usar, no
ideologías o contratos.
Si en algún momento
necesitas tener 2 DBs,
tenlas y evitate
mantenimiento y
desarrollo innecesario.
46. Gracias!
Bienvenidas las preguntas, comentarios, quejas y sugerencias
omercadocoss@gmail.com
@omercadocoss
https://mx.linkedin.com/in/osvaldomercado
Querétaro Software
Development Meetup
47. Lecturas Recomendadas
Recomendaciones personales acerca del tema
Why NoSQL?
https://www.couchbase.com/resources/why-nosql
Getting Started with MongoDB
https://docs.mongodb.com/getting-started/shell/
What is an In-Memory Key-Value Store?
https://aws.amazon.com/es/nosql/key-value/
Martin Fowler: NoSQL
https://martinfowler.com/nosql.html
MongoDB at Scale
https://www.toptal.com/php/php-testing-with-codeception
Key Points from NoSQL Distilled
https://martinfowler.com/articles/nosqlKeyPoints.html
The Future is Polyglot Persistence
https://martinfowler.com/articles/nosql-intro-original.pdf
NoSQL Explained
https://www.mongodb.com/nosql-explained
What guarantees do Relational Databases (RDBMS)
provide with respect to safe data storage?
https://www.quora.com/What-guarantees-do-Relational-Databases-
RDBMS-provide-with-respect-to-safe-data-storage
NoSQL, No Problem: An Intro to NoSQL Databases
https://www.thoughtworks.com/insights/blog/nosql-no-problem-intro-nosql-databases
MongoDB Architecture
https://www.mongodb.com/mongodb-architecture
Qué es NoSQL?
https://aws.amazon.com/es/nosql/
Replication in MongoDB
https://docs.mongodb.com/manual/replication/
What is MapReduce
https://www.tutorialspoint.com/hadoop/hadoop_mapreduce.htm