NO SQL: como se modelan las bases de datos no relacionales?
Summary
TLDREl video discute las diferencias entre bases de datos SQL y NoSQL, destacando la eficiencia de las NoSQL en el rendimiento a gran escala. Se aborda el tema de lecturas versus escrituras y cómo modelar datos en una base de datos NoSQL, a través de ejemplos de aplicaciones como blogs y sistemas de stock. Se menciona la importancia de las transacciones o batch en la consistencia de los datos y se sugiere la paginación para manejar grandes volúmenes de información.
Takeaways
- 📈 Las bases de datos NoSQL surgieron para resolver problemas de rendimiento a gran escala.
- 🔄 La elección entre SQL y NoSQL depende del objetivo de la aplicación, como la cantidad de escrituras y lecturas que se esperan.
- 🤔 Es importante entender el problema que se busca solucionar al modelar una base de datos NoSQL.
- 📚 La tercera forma normal es común en bases de datos SQL, pero NoSQL permite más libertad en la estructura de datos.
- 🔄 En NoSQL, se deben considerar las actualizaciones en múltiples documentos como transacciones o batch writes para mantener la consistencia de los datos.
- 📊 Al modelar una base de datos NoSQL, se deben tener en cuenta las vistas y cómo se mostrarán los datos.
- 🌐 La estructura de los documentos en NoSQL refleja la forma en que se presentarán los datos en la aplicación.
- 🔄 Si se necesita actualizar información en varios documentos, se debe utilizar un mecanismo de transacción o batch para evitar inconsistencias.
- 📈 Para aplicaciones con un gran número de lecturas, como blogs o portafolios, NoSQL puede ser una mejor opción que SQL.
- 🔄 NoSQL permite una mayor flexibilidad en la estructura de datos, lo que puede facilitar la adaptación a cambios en la vista de la aplicación.
- 📊 La modelado de bases de datos NoSQL se debe basar en la vista que se desea mostrar y en el rendimiento que se espera de la aplicación.
Q & A
¿Qué problema específico resuelven las bases de datos NoSQL?
-Las bases de datos NoSQL resuelven el problema del rendimiento a gran escala, siendo ideales para aplicaciones que no anticipan problemas de rendimiento en el futuro.
¿Cuándo sería apropiado utilizar una base de datos NoSQL en lugar de una SQL?
-Se debe utilizar una base de datos NoSQL cuando se enfrente a una aplicación que tenga una gran cantidad de lecturas y poca escritura, y se requiera un rendimiento a gran escala.
¿Qué es la tercera forma normal y cómo se aplica en las bases de datos SQL?
-La tercera forma normal es una técnica utilizada para la modelación de bases de datos SQL, con el objetivo de eliminar las dependencias transitivas y mejorar la integridad referencial de los datos.
¿Qué sucede si necesitamos actualizar un dato en una base de datos NoSQL?
-Al actualizar un dato en una base de datos NoSQL, se debe actualizar en todas las colecciones o documentos donde aparezca ese dato para mantener la consistencia de los datos.
¿Qué es un raid batch en bases de datos NoSQL?
-Un raid batch, también conocido como transacción en algunas bases de datos, es un mecanismo que permite escribir múltiples documentos a la vez, asegurando que todas las actualizaciones tengan éxito o ninguna se realice, evitando así la inconsistencia de los datos.
¿Cómo se modela una colección en una base de datos NoSQL según el script?
-Para modelar una colección en una base de datos NoSQL, se crea un documento con los atributos relevantes para la vista, como el título, la descripción, la fecha de creación, el nombre del autor y la imagen del autor.
¿Qué es la ventaja de modelar una colección en función de la vista en una base de datos NoSQL?
-La ventaja de modelar una colección en función de la vista es que se pueden realizar consultas más sencillas y directas, obteniendo exactamente los datos necesarios sin la necesidad de realizar join o actualizaciones en múltiples lugares.
¿Cómo se podrían manejar los cambios en la vista de una aplicación en una base de datos NoSQL?
-Para manejar cambios en la vista, se podría escribir un script para actualizar los documentos existentes o se podrían agregar nuevos campos al documento sin afectar la estructura general de la colección.
¿Cómo se podrían implementar la paginación y los informes en una base de datos NoSQL?
-La paginación se implementaría buscando los datos en partes, mientras que los informes se podrían crear actualizando una colección de informes con los datos relevantes a medida que se actualizan los datos en la colección principal.
¿Qué es la diferencia principal entre la modelación de bases de datos SQL y NoSQL según el script?
-La principal diferencia es que en SQL se busca una estructura rígida y definida mediante la tercera forma normal, mientras que en NoSQL se modela la colección basada en la vista y se permite una mayor flexibilidad en la estructura de los documentos.
Outlines
🔍 Introducción a las bases de datos NoSQL
Este segmento inicia con una revisión de la historia de las bases de datos, enfocándose en las diferencias entre SQL y NoSQL. Se destaca que las bases de datos NoSQL son ideales para escenarios de alto rendimiento, aunque muchas aplicaciones no requieren este nivel de escalabilidad. El presentador enfatiza la importancia de estar preparados para modelar y migrar datos a NoSQL cuando sea necesario. Se advierte que el método de modelado que se va a mostrar no es único ni definitivo, y se deben considerar distintas estrategias según el problema específico a resolver. Se aborda el balance entre lecturas y escrituras en el diseño de bases de datos, recomendando SQL para altas escrituras y NoSQL para intensivas lecturas, especialmente en aplicaciones web, blogs o portafolios.
📊 Modelando una base de datos NoSQL
En este segmento se explica cómo modelar una base de datos NoSQL usando el ejemplo de un blog. Se describe la interfaz de usuario, incluyendo elementos como el autor, título y descripción de los posts. Se discute la creación de una colección NoSQL llamada 'cosas', detallando los atributos necesarios como título, descripción, fecha de creación y autor, incluyendo el avatar. También se aborda la necesidad de una colección de usuarios para gestionar datos adicionales como correo y contraseña. El narrador subraya la complejidad de actualizar datos en múltiples colecciones y cómo las transacciones o 'batch updates' pueden ayudar a mantener la consistencia entre ellas.
🔧 Manejo de transacciones y reportes en NoSQL
Este último segmento cubre el manejo de transacciones en bases de datos NoSQL, explicando conceptos como 'write batch' o transacciones, que permiten actualizar múltiples documentos de manera consistente. Se enfatiza la importancia de mantener la coherencia de datos entre diferentes colecciones, utilizando el ejemplo de actualizar el nombre de un usuario en posts y colecciones de usuarios simultáneamente. Se explica cómo modelar las colecciones basadas en las vistas de la aplicación, con ejemplos de reportes y paginación de datos en redes sociales. El narrador concluye instando a los espectadores a considerar cómo la estructura de la base de datos se alinea con las necesidades de la aplicación y menciona la posibilidad de actualización de colecciones conforme cambian las vistas.
Mindmap
Keywords
💡bases de datos
💡SQL
💡NoSQL
💡rendimiento a gran escala
💡lecturas versus escrituras
💡modelado de datos
💡transacciones
💡colecciones
💡documento
💡consultas
💡paginación
Highlights
Discusión sobre las bases de datos SQL y NoSQL, y sus diferencias en términos de rendimiento y aplicación.
Explicación de cómo las bases de datos NoSQL resuelven problemas de rendimiento a gran escala.
La importancia de entender el equilibrio entre lecturas y escrituras al elegir un tipo de base de datos.
Comparación entre el modelado de bases de datos SQL y NoSQL, y su impacto en la estructura de datos.
La necesidad de adaptar el modelado de datos según las necesidades de lectura y escritura de la aplicación.
Ejemplo práctico de cómo modelar una base de datos NoSQL para un blog.
La ventaja de la flexibilidad en el modelado de datos en NoSQL para aplicaciones de lectura intensiva.
El desafío de mantener la consistencia de datos al actualizar información en bases de datos NoSQL.
Método para actualizar datos en múltiples colecciones utilizando transacciones o operaciones de escritura múltiple (write batch).
Importancia de la modelación de colecciones en NoSQL basada en la vista y la necesidad de adaptarla en caso de cambios.
Aplicación de paginación para manejar grandes cantidades de datos en colecciones NoSQL.
Estrategia para actualizar documentos en una colección cuando la vista cambia.
Uso de colecciones de informes para almacenar datos agregados y estadísticas.
Recomendación de seguir investigando para encontrar diferentes formas de modelar bases de datos NoSQL según el problema específico.
El mensaje patrocinador sobre Hola Beats, una opción de música de fondo para profesionales.
Transcripts
nosotros hemos conversado sobre bases de
datos anteriormente en este canal hemos
visto su historia y también las
diferencias que tienen las bases de
datos sql con las no sql las bases de
datos no sql resuelven un problema muy
específico y estas llegaron para
quedarse y el problema que estas
resuelven es rendimiento a gran escala
un porcentaje muy grande de las
aplicaciones que existen y que van a
existir no van a tener nunca problemas
de rendimiento por lo que no tiene
sentido utilizar una base de datos no
relacional con ese objetivo en mente sin
embargo cuando ese momento llegue
debemos estar preparados para saber cómo
modelar nuestros datos y por supuesto
cómo realizar la migración hola mundo y
bienvenidos a este vídeo las bases de
datos no relacionales al tener un
formato estás más libre hace que sea más
difícil encontrar una estructura única
para poder modelar las a diferencia de
las sql que por lo general se utiliza
mucho la tercera
forma normal y hoy nosotros en este
vídeo vamos a ver una forma de como tú
puedes modelar una base de datos sql
pero por favor
mira este vídeo con mucha discreción
esta no es la única forma de modelar una
base de datos no sql y lo más probable
es que si sigues investigando vas a
encontrar también distintas formas de
modelar una base de datos no sql y por
supuesto está quizás no va a ser la
mejor opción para modelar una base de
datos no sql dependiendo de tu problema
lo primero que nosotros tenemos que
tener en claro es cuál es el problema
que nosotros vamos a solucionar en este
caso tenemos que primero conversar de un
punto bastante importante que es
lecturas versus escrituras cuando
nosotros estamos construyendo una
aplicación que va a tener una gran
cantidad de escritura pero va a tener
poca lectura como podría ser por ejemplo
un listado de productos que nosotros
vamos a estar agregando y quitando
constantemente de un stock eso es de
rápida escritura y por el contrario si
nosotros vamos a tener un sistema que va
a tener muchas más lecturas
en este caso puede ser un blog o un
portafolio para el caso que nosotros
tengamos que escribir mucho la verdad es
que es bastante más sensato utilizar
bases de datos sql y modelar las en la
tercera forma normal pero si nosotros
vamos a estar leyendo mucho de la base
de datos y no vamos a estar escribiendo
tanto cómo puede ser una página web un
blog o también un portafolio en ese caso
va a ser mucho mejor utilizar una base
de datos no relacional para solucionar
el problema del rendimiento pero insisto
no vamos a tener problemas de
rendimiento a menos que nosotros estemos
trabajando con datos y también con
concurrencia a gran escala y tratando de
explicarlo de esta manera cuando
nosotros tengamos una lista nosotros lo
que vamos a querer hacer si estamos
trabajando con una base de datos
relacionales sql vamos a necesariamente
tener que hacer join si en este caso
vamos a tener que traer los datos desde
distintas tablas pero si nosotros
queremos escribir en uno de estos
registros por ejemplo queremos
actualizar el usuario el único dato que
nosotros vamos a tener que actualizar
para hacer la tabla del usuario ahora
poniendo el ejemplo para la parte
contraria si nosotros quisiéramos leer
de una
de datos no relacional y quisiéramos
poblar una vista la forma de modelar la
sería que nosotros crearemos un
documento en base a la vista que
nosotros estamos creando por ejemplo si
nosotros tenemos un blog donde estamos
mostrando el nombre del usuario también
estamos mostrando el título la fecha en
que se creó el contenido de este lo
mejor sería modelar una tabla o una
colección que contenga esos datos pero
si nosotros por alguna razón tenemos que
actualizar el usuario
el problema que nosotros tendremos será
que tenemos que actualizar la colección
de usuarios y también todos los otros
documentos donde el usuario haya escrito
pero antes de continuar vamos a
entregarles un mensaje de nuestro
patrocinador hola bits es música pensada
en profesionales programadores
diseñadores analistas o quienquiera que
necesite realizar una tarea compleja y
debe concentrarse o la bits lo puedes
encontrar en todas las grandes
plataformas de streaming como apple
music o spotify
yo personalmente escucho esta música
cuando estoy trabajando actualmente
tiene 100 canciones pero estaremos
agregando más y más
los meses para que puedas golpear al
maldito del botón de play y así
sumergirte en tu mundo
hola beats te ayudará a mantener la
concentración y si eres creador de
contenido y necesitas música de fondo
mientras estás interactuando con tu
audiencia ya sea en vídeos para youtube
o cast streams puedes utilizar todas las
canciones de hola beats
sin miedo a un copyright klein son
completamente gratis para ustedes hola
beats es una creación de hola mundo y
recuerden se escribe
beatz y no beats y esa es principalmente
la razón por la cual tú vas a preferir
utilizar este tipo de modelamiento de
base de datos cuando tú tengas que leer
muchísimo pero que así no tengas que
escribir ahora nosotros vamos a ver un
ejemplo de una aplicación en este caso
yo tengo una página de un blog y vamos a
ver cómo se moderaría está en forma de
no sql lo primero que nosotros vamos a
hacer por supuesto va a ser tratar de
graficar la interfaz en este caso
nosotros vamos a tener nuestro
explorador
y vamos a tener un listado de posts y
posiblemente aquí nosotros también vamos
a tener alguna imagen de algún usuario
en este caso los datos que yo voy a
estar mostrando en mi post van a ser el
autor o el nombre del autor vamos a
colocar el nombre del autor vamos a
querer también mostrar el título y
también una pequeña descripción del post
y vamos a colocar que esto va a ser una
descripción además de eso por supuesto
dentro de esta pantalla nosotros vamos a
tener en este caso una imagen de usuario
en este caso esta imagen de usuarios lo
más probable es que venga de algún panel
de administración o de alguna barrita de
navegación esta no tiene que ver en lo
absoluto con la vista que nosotros
estamos mostrando en este caso que
vendría siendo el listado de los posts
por lo que esto nosotros no lo vamos a
incluir dentro de la consulta o dentro
del modelamiento que nosotros
necesitamos pero sí vamos a incluir el
nombre de autor título la descripción y
supongamos que aquí nosotros también
tenemos una fecha
ahora lo que nosotros vamos a hacer es
tratar de crear una colección que
contenga estos atributos así es que
vamos a bajar ahora y vamos a crear en
este caso una colección que se va a
llamar cosas y aquí nosotros vamos a
empezar a colocar los atributos que nos
interesan lo primero que tenemos por
supuesto es el título
vamos a dejarlas todas estas en inglés y
el título por supuesto es un string
vamos a colocar también el tipo de dato
tenemos el título y vamos a continuar
con la descripción y yo sencillamente la
voy a dejar como cesc string vamos a
hacer es ver qué más necesitamos
necesitamos la fecha de creación de este
post entonces aquí vamos a colocar
created
y en este caso el tipo de dato va a ser
tipo 20 y además nosotros tenemos el
nombre del autor y posiblemente también
estamos mostrando la imagen del autor
así es que en cada post que nosotros
creemos también vamos a crear un
giuseppe aquí pueden utilizar la
convención que quieran si no les gusta
yo se pueden colocar created buy o autor
eso la verdad es que no es tan real y
aquí nosotros dentro de este documento
vamos a abordar por supuesto el ibi del
usuario que éste va a ser puede ser un
string puede ser un número lo que
ustedes quieran yo lo voy a dejar con un
string lo siguiente que nosotros
necesitamos es el name que también va a
ser un string y lo siguiente que
nosotros necesitamos va a ser
mencionamos que íbamos a colocar también
la imagen del usuario una pequeña carita
así que vamos a colocar acá también
avatar en este caso también va a ser una
estrella en este caso este stain va a
ser una url cerramos esto y cerramos
nuestro documento de post y éste vendría
siendo la estructura que nosotros
queremos crear cuando vayamos a modelar
una colección en no sql ahora bien lo
que pasaría si nosotros también
queríamos ver el listado nuestros
usuarios porque estos usuarios van a
tener un nombre para tener un usuario
para tener una contraseña y los cuales
que también un correo vamos a crear
inmediatamente también esa colección que
nosotros vamos a agregar users este por
supuesto también va a tener una idea
pero lo vamos a omitir pero va a tener
en este caso un nombre que va a ser un
string es tormenta eléctrica
no sé si alcanzan a escucharla tenemos
el nombre vamos a tener un correo que
también va a ser un string también vamos
a tener el avatar que también va a ser
un string y supongamos que también
nosotros tenemos un password que también
es un string y un salto que también es
un estudio y vamos a dejarlo solamente
hasta ahí para que sea sencillo el
ejercicio en este caso el salto es una
string generado de manera aleatoria que
se utiliza para encriptar la contra
del usuario después vamos a hablar de
eso ahora qué es lo que ocurre si
nosotros queremos actualizar el usuario
inmediatamente si queremos cambiar por
ejemplo el nombre qué raro que una
persona se cambie no me pero supongamos
que te quieres cambiar el nombre yo
tengo que venir a buscar el documento de
usuario tengo que encontrar el nombre
que éste tiene tengo que actualizarlo y
posterior a eso tengo que acordarme y yo
de que otras conexiones también incluyen
el nombre del usuario en este caso yo sé
que está en post pero también podría
estar en otra colección así que luego de
yo actualizar el nombre del usuario
también tengo que venir a post y tengo
que buscar esta propiedad de name que se
encuentra dentro del documento de post
dentro de post ngoi users y dentro de
giuseppe tengo el nombre del usuario
entonces tengo que actualizarlo en dos
partes en giuseppe y también en osea
afortunadamente si nosotros queremos
actualizar el nombre del usuario en
varias colecciones existe algo que se
llama right
algunos motores de base de datos o
algunos servidores de base de datos no
motores servidores de base datos llaman
a esto también transacciones pero en
algunas bases de datos como por ejemplo
en fire with fire store esto
sencillamente se conoce como raid patch
que cuando nosotros queremos ir a
escribir múltiples documentos a la vez
aunque en este caso también necesitarías
leer los documentos actualizarlos y
luego hilos abordar cuál es la gracia
que tiene este raid bach o esta
transacción en el caso que cuando
estemos tratando de actualizar el nombre
de usuario
este fallo también inmediatamente va a
fallar o no va a dejar actualizar el
post pero si es que el usuario tiene
éxito y el poste en este caso fracasa
cuando nosotros estamos escribiendo en
raid bach o una transacción no nos va a
dejar actualizar en este caso el nombre
del usuario creo que había dicho de esta
manera nosotros nos vamos a asegurar que
cuando tengamos que actualizar el nombre
de usuario ya sea en post y también en
you search o estas dos tienen éxito o
ambas fracasan y de esta manera nosotros
no nos vamos a quedar con datos
inconsistentes esto quiere decir la
tabla de usuario con un nombre y la
tabla de post con otro nombre
para eso tenemos que utilizar sí o sí
nuestras
transacciones o greatbatch van a cambiar
el nombre dependiendo del servidor de
base de datos que nosotros estemos
utilizando pero esto es lo importante lo
importante es que si estamos modelando
una colección no sql nuestras tablas en
este caso tenemos acá los posts nuestra
colección de post
se va a ver como la página donde
nosotros estamos licitando los postres
el beneficio que tiene esto cuando
nosotros vayamos a hacer una consulta lo
podemos hacer con gracia y lo podemos
hacer sencillamente un llamado una
encuesta lo que nos va a devolver va a
ser exactamente lo que nosotros
necesitamos qué es
lo que se encuentra acá y toda esta
información se va a encontrar guardada
en nuestra colección de post por esto es
que cuando yo les menciona que tenemos
que modelar una conexión no es secuela
es que lo tenemos que hacer en base a la
pista que nosotros tenemos ahora cuál
sería el problema si nosotros después
cambiamos nuestra vista o queremos
mostrar más cosas en este caso nosotros
vamos a tener que escribir un script que
actualice los documentos que se
encuentran dentro de esta colección u
otra alternativa también sería
sencillamente si es que el documento no
tiene ese elemento no mostramos en él
así es que esta es una buena alternativa
y este fue el vídeo esta semana chicos
quería mostrarles la forma de cómo yo he
visto que se moderan las bases de datos
no sql y la ventaja que tiene esto es
que tu sencillamente realizas una
consulta
ahora si los datos que tú vas a mostrar
son muchos por ejemplo como en las redes
sociales twitter facebook etcétera
tienes muchos muchos datos o muchos
muchos muchos documentos metidos dentro
de la misma colección lo que haces es
que las vas a buscar por paginación es
decir esto vas a buscar los bienes de
los uno
y cuando el usuario llega hasta abajo al
final hay tuberías una siguiente
búsqueda y vas a buscar los siguientes
10 y los siguientes discos y los
siguientes días y cuando quieres hacer
un reporte porque esa pregunta espejo me
iba a llegar lo que tú haces es que no
vas a leer directamente de estas tablas
sino que cada vez que tú crees un
registro tienes que ir a actualizar tu
conexión de reports y en reports tú vas
a tener un tipo de reporte por ejemplo
el del home esto también por supuesto va
a ser un string y aquí tú vas a tener su
data a mejores formas de modelar esto
pero lo importante es que se lo que está
aquí tú tienes un objeto con todos los
datos que están guardados entonces en
resumen las colecciones las modelamos
con respecto a la vista y si tenemos un
reporte este también es una vista así
que nosotros tenemos que ir escribiendo
dentro de nuestra colección de reportes
a medida que vayamos actualizando los
datos esto es una forma donde
sencillamente colocamos un tipo en la
vista o lo pueden hacer también con la
misma forma que anterior tenemos
word home podemos también tener más
sport no con el producto y así
sucesivamente y este fue el vídeo tras
semana chicos espero que les haya
gustado si le gustó recuerda volver
mucho al maldito del botón de me gusta
si les encantó considera también
suscribirte a este canal déjame un
comentario acá abajo de que otro tipo de
vídeo te gustaría que hiciera y si
deseas profundizar en alguna materia por
supuesto que acá abajo también vas a
encontrar links con acceso a todos mis
cursos hasta próxima y chau mundo
[Música]
e
[Música]
no
関連動画をさらに表示
Tema 2: Evolución de las bases de datos
Godot 4 Final Fantasy 6 Data in LiteDB
¿Qué es una BASE DE DATOS?// características GENERALES
2 💡 Modelos de Base de datos, Tipos y Clasificación | Curso de Base de Datos desde Cero Español 2021
Base de Datos #5| Lenguaje SQL
¿Qué son las BASES DE DATOS? - La mejor explicación en español
5.0 / 5 (0 votes)