En el mercado de las bases de datos podemos distinguir dos principales grupos, las bases de datos relacionales y las no relacionales.
Cada que inicies una nueva aplicación web, vas a enfrentarte con la decisión de si debes usar un tipo u otro, por eso en este vídeo voy a explicarte las diferencias y te daré algunos consejos para decidir entre un tipo u otro.
Vamos a empezar por darnos una idea visual de la diferencia entre un tipo y otro. Las bases de datos relacionales suelen estar representadas por un conjunto de tablas, estas tablas tienen una estructura definida de campos, como las tablas, podemos pensar en estas entidades como estructuras rígidas, nuestros registros entonces sólo pueden tener la forma de una fila que llena los campos de la tabla.
Las bases de datos no relacionales se componen de colecciones de documentos, algunas bases de datos representan estos documentos como objetos JSON. Estas bases de datos son más flexibles, te permiten guardar los campos que quieras en cada registro que vas guardando, como en un objeto, tú puedes decidir qué campos guardar para cada uno de los objetos que irán al almacén.
Este primer panorama nos dice que si nuestros datos tienen una estructura bien definida, usaremos bases de datos relacionales y si no, usaremos no relacionales.
Si vamos al nombre, la diferencia está en las relaciones, unas, las relacionales las tienen, y otras, las no relacionales, simplemente no.
Usualmente los esquemas de datos que pensamos para nuestra aplicación tienen elementos que están relacionados entre sí, por ejemplo si estamos creando una red social, las publicaciones tienen una relación de propietario con el usuario que las creó, porque son SUS publicaciones, le pertenecen a él, las fotos por ejemplo, le pertenecen a alguna persona, en otros casos las relaciones son más complejas, por ejemplo en una aplicación como CódigoFacilito tenemos cursos, que son tomados por muchas personas y esas mismas personas pueden tomar uno o varios cursos.
Estas relaciones suelen trasladarse a nuestro esquema de base de datos de manera que sea fácil poder hacer consultas basado en estas relaciones, como por ejemplo, obtener todas las publicaciones que son propiedad de un usuario, o todos los cursos que una persona está tomando, o al revés, qué personas están tomando un curso.
Algunas de estas operaciones son más complejas aún, qué cantidad de cursos estás tomando, cuál es el promedio de los exámenes que has tomado, etc.
Para eso las bases de datos relacionales no sólo ofrecen la posibilidad de establecer estas relaciones, si no que, además, ofrecen los mecanismos para hacer operaciones aprovechando las relaciones de nuestro esquema, desde cálculo de datos, agrupación y obtener datos de múltiples entidades que estén relacionadas entre sí.
Por otro lado, algunas de estas operaciones son muy lentas o requieren de un consumo importante de memoria.
Es por esto que las bases de datos no relacionales ofrecen una alternativa en la que las operaciones entre elementos relacionados se sustituyen por otras estrategias, cada base de datos ofrece algunas distintas, en algunas de ellas por ejemplo duplicamos información o almacenamos resultados de un cálculo para no tener que estarlo realizando cada que necesitemos esa información.
Esta es la principal diferencia entre ambos tipos de bases de datos, las relaciones. Mi recomendación es que utilices las bases de datos relacionales cuando estas relaciones representan parte importante de tu aplicación, ya que aunque sí podrás replicarlo con las estrategias no relacionales, el modelo es más complejo de razonar y puede llevar pasos extra que eventualmente se recompensan con un mejor rendimiento.
Las bases de datos no relacionales son excelentes para aplicaciones donde la consulta es constante y debe hacerse rápido, los chats por ejemplo son un buen ejemplo, constantemente estamos escribiendo datos y consultándolos.
Para la mayor parte de los casos, y especialmente ahora que estás comenzando, vas a necesitar una base de datos relacional, es una de este tipo la que usaremos en lo que resta del curso. Sin embargo, en CódigoFacilito mismo tenemos otros cursos con bases de datos no relacionales, así que más adelante podrás aprender a trabajar con este otro tipo de motores.
Continuemos.
-
Módulo 1 | 8 clases
Introducción
expand_more-
play_circle_outline
Clase 1
Introducción al Curso Profesional de Backend
-
play_circle_outline
Clase 2
Backend y Frontend
-
play_circle_outline
Clase 3
La especialidad Backend
-
play_circle_outline
Clase 4
Qué veremos en este curso
-
play_circle_outline
Clase 5
Conocimientos previos
-
play_circle_outline
Clase 6
Stack de Tecnologías
-
play_circle_outline
Clase 7
Configurar entorno de trabajo (Windows)
-
play_circle_outline
Clase 8
Configurar entorno de trabajo (MacOS)
-
-
Módulo 2 | 19 clases
Http
expand_more-
play_circle_outline
Clase 1
Cómo funciona un servidor web
-
play_circle_outline
Clase 2
Qué es NodeJS y qué es Express
-
play_circle_outline
Clase 3
El protocolo Http
-
play_circle_outline
Clase 4
Verbos Http
-
play_circle_outline
Clase 5
Http con cURL
-
play_circle_outline
Clase 6
Direcciones web
-
play_circle_outline
Clase 7
Creando nuestro primer servidor
-
play_circle_outline
Clase 8
Express
-
play_circle_outline
Clase 9
Postman
-
play_circle_outline
Clase 10
Recibir datos de la petición
-
play_circle_outline
Clase 11
Datos con POST
-
play_circle_outline
Clase 12
Enviar HTML
-
play_circle_outline
Clase 13
Servir archivos estáticos
-
play_circle_outline
Clase 14
Motores de vistas
-
play_circle_outline
Clase 15
Qué es el caché
-
play_circle_outline
Clase 16
Tipos de caché
-
play_circle_outline
Clase 17
Caché de archivos estáticos
-
play_circle_outline
Clase 18
Qué son las cookies y las sesiones
-
play_circle_outline
Clase 19
Cookies
-
-
Módulo 3 | 11 clases
Bases de Datos
expand_more-
play_circle_outline
Clase 1
El lenguaje SQL
-
play_circle_outline
Clase 2
Configurando SQLite
-
play_circle_outline
Clase 3
Qué son las bases de datos y por qué las usamos
-
play_circle_outline
Clase 4
Drivers de conexión
-
play_circle_outline
Clase 5
Crear una tabla (Primer consulta)
-
play_circle_outline
Clase 6
Qué es un CRUD
-
play_circle_outline
Clase 7
Insertar registros en la Base de Datos
-
play_circle_outline
Clase 8
Limpiar parámetros (sanitize)
-
play_circle_outline
Clase 9
Qué es un ORM
-
play_circle_outline
Clase 10
Configurar SequelizeJS
-
play_arrow
Clase 11
Bases de datos relacionales y no relacionales
-
-
Módulo 4 | 24 clases
Buenas prácticas de desarrollo.
expand_more-
play_circle_outline
Clase 1
Presentación del bloque
-
play_circle_outline
Clase 2
Qué es el MVC
-
play_circle_outline
Clase 3
Organizar un proyecto MVC
-
play_circle_outline
Clase 4
Qué son las migraciones
-
play_circle_outline
Clase 5
CLI de Sequelize
-
play_circle_outline
Clase 6
Generando migraciones
-
play_circle_outline
Clase 7
Modelos
-
play_circle_outline
Clase 8
Controladores
-
play_circle_outline
Clase 9
Vistas
-
play_circle_outline
Clase 10
Seeders
-
play_circle_outline
Clase 11
Integrando todo
-
play_circle_outline
Clase 12
Qué es REST
-
play_circle_outline
Clase 13
REST en la práctica
-
play_circle_outline
Clase 14
Verbos Http en REST
-
play_circle_outline
Clase 15
Rutas REST en Express
-
play_circle_outline
Clase 16
Crear nuevos registros
-
play_circle_outline
Clase 17
Formularios
-
play_circle_outline
Clase 18
Mostrar registros
-
play_circle_outline
Clase 19
Vistas para todos los registros
-
play_circle_outline
Clase 20
Identificadores únicos
-
play_circle_outline
Clase 21
Consulta individual de recursos
-
play_circle_outline
Clase 22
Actualizar registros
-
play_circle_outline
Clase 23
Formularios con PUT, PATCH y DELETE
-
play_circle_outline
Clase 24
Eliminar registros
-
-
Módulo 5 | 14 clases
Autenticación
expand_more-
play_circle_outline
Clase 1
Explicando cómo funciona la autenticación de usuarios
-
play_circle_outline
Clase 2
Formulario de registro
-
play_circle_outline
Clase 3
Modelos y migración de usuarios
-
play_circle_outline
Clase 4
Validaciones
-
play_circle_outline
Clase 5
Validaciones en la base de datos y el modelo
-
play_circle_outline
Clase 6
Encriptar el password
-
play_circle_outline
Clase 7
Creación de usuarios
-
play_circle_outline
Clase 8
Inicio de sesión
-
play_circle_outline
Clase 9
Autenticación
-
play_circle_outline
Clase 10
Manejo de sesiones
-
play_circle_outline
Clase 11
Qué es un middleware
-
play_circle_outline
Clase 12
Buscar usuario autenticado
-
play_circle_outline
Clase 13
Cerrar sesión
-
play_circle_outline
Clase 14
Middlewares para protección de rutas
-
-
Módulo 6 | 14 clases
Relaciones en la base de datos.
expand_more-
play_circle_outline
Clase 1
Fundamentos de relaciones en la base de datos
-
play_circle_outline
Clase 2
Relaciones uno a muchos - El esquema
-
play_circle_outline
Clase 3
Relaciones uno a muchos - Los modelos
-
play_circle_outline
Clase 4
Nombres para asociaciones
-
play_circle_outline
Clase 5
Guardar relación uno a muchos
-
play_circle_outline
Clase 6
Relaciones en un proyecto real
-
play_circle_outline
Clase 7
Eager loading (Cargado anticipado)
-
play_circle_outline
Clase 8
Ejercicio - Implementa tu propio CRUD
-
play_circle_outline
Clase 9
Relaciones muchos a muchos
-
play_circle_outline
Clase 10
Integrando CRUD de Categorías
-
play_circle_outline
Clase 11
Tabla asociativa
-
play_circle_outline
Clase 12
Definir relación muchos a muchos
-
play_circle_outline
Clase 13
Crear relaciones muchos a muchos
-
play_circle_outline
Clase 14
Mostrar objetos de una relación muchos a muchos
-
-
Módulo 7 | 5 clases
Websockets (realtime)
expand_more-
play_circle_outline
Clase 1
¿Qué son las Websockets?
-
play_circle_outline
Clase 2
Usuarios conectados en tiempo real
-
play_circle_outline
Clase 3
Comunicar el servidor Http y el servidor de Websockets
-
play_circle_outline
Clase 4
Enviar datos de la base de datos a los clientes
-
play_circle_outline
Clase 5
Control de comunicación por usuario en Websockets
-
-
Módulo 8 | 4 clases
Entorno de producción
expand_more -
check_circle_outlineMódulo 9
Examen del curso
expand_more-
done_all
Examen
Examen final del curso
-