INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO
PUBLICO DESAGUADERO
ARQUITECTURA DE PLATAFORMAS Y SERVICIOS DE
TECNOLOGÍAS DE LA INFORMACIÓN
“SQL Y NO SQL”
DOCENTE: ING. GUERRA CRUZ, DEYVIS E.
UNIDAD DIDACTICA: BASE DE DATOS
PRESENTADO POR:
CHAMBI CHUCOS, NAYELI NAYLI
ALARCON SARMIENTO, MARIELENA
CHOQUE MAMANI, JUANA LIBIA
BAZAN SERRANO, LUZ D.
MAMANI MILLARES MARIELA J.
DESAGUADERO-PERU
2024
1
CONTENIDO
INTRODUCCION................................................................................................................................3
1. BASE DE DATOS SQL...............................................................................................................4
1.1. HISTORIA SQL........................................................................................................................4
1.2. ¿QUÉ ES BASE DE DATOS SQL?..........................................................................................4
1.3. CARACTERISTICAS SQL......................................................................................................4
1.4. VENTAJAS SQL.......................................................................................................................5
1.5. DESVENTAJAS SQL...............................................................................................................6
1.6. TIPOS DE DATOS Y FUNCIONES SQL................................................................................7
2. BASE DE DATOS NoSQL..........................................................................................................8
2.1. HISTORIA.................................................................................................................................8
2.2. ¿QUE ES NoSQL?....................................................................................................................8
2.3. CARACTERISTICAS...............................................................................................................9
2.4. VENTAJAS...............................................................................................................................9
2.5. DESVENTAJAS......................................................................................................................10
2.6. TIPOS DE DATOS Y FUNCIONES.......................................................................................10
2.7. DIFERENCIAS ENTRE NoSQL vs SQL....................................................................................11
3. CONCLUSION..........................................................................................................................12
2
INTRODUCCION
El Mundo de los Datos: SQL vs. NoSQL En el corazón de la era digital late el flujo constante de
información. Para gestionar este torrente de datos, necesitamos herramientas poderosas y flexibles.
Aquí es donde entran en juego dos gigantes del mundo de las bases de datos: SQL y NoSQL. Imagina
dos caminos que llevan a la misma meta – acceder y manipular información – pero con diferentes
paisajes y vehículos. El camino de SQL (Structured Query Language) es como una autopista bien
pavimentada. Conocido por su estructura rígida y organizada, es perfecto para datos que siguen un
esquema predefinido, como los registros de una empresa o las transacciones de una tienda online.
Piensa en filas y columnas, como una hoja de cálculo gigante, donde cada dato tiene su lugar asignado.
Es confiable, eficiente para consultas complejas, y su lenguaje es ampliamente conocido y usado. Por
otro lado, el camino de NoSQL (Not Only SQL) es como un sendero sinuoso a través de un terreno
variado. Más flexible y adaptable, este camino se adapta a datos que no siguen un esquema rígido,
como datos de redes sociales, sensores IoT, o grandes volúmenes de información sin estructura. Aquí
encontramos diferentes tipos de bases de datos NoSQL, cada una con sus propias características y
ventajas. Es ideal para datos que cambian rápidamente y necesitan escalar con facilidad. En esta hoja
exploraremos las diferencias clave entre estos dos mundos, comparando sus fortalezas y debilidades, y
descubriendo cuándo es mejor utilizar cada uno.
3
1. BASE DE DATOS SQL
1.1. HISTORIA SQL
Los orígenes del SQL nos llevan a la década de 1970, cuando en los laboratorios de IBM, se creó el
nuevo software de base de datos System R. Y para gestionar los datos almacenados en System R, se
creó el lenguaje SQL. En un principio se llamó SEQUEL, un nombre que todavía se utiliza como una
pronunciación alternativa para SQL, pero más tarde fue renombrado a sólo SQL.
En 1979, una compañía llamada Relational Software, que luego se convirtió en Oracle, vio el potencial
comercial del lenguaje SQL y lanzó su propia versión modificada, denominada Oracle V2.
Ahora en su tercera década de existencia, el lenguaje SQL ofrece una gran flexibilidad a los usuarios
soportando bases de datos distribuidas, es decir, bases de datos que se pueden ejecutar en varias redes
de ordenadores a la vez. Certificado por ANSI e ISO, el lenguaje SQL se ha convertido en un estándar
de lenguaje de consulta de base de datos, siendo la base de una gran variedad de aplicaciones de bases
de datos bien establecidos en Internet hoy en día. Sirve tanto para propósitos empresariales como para
necesidades académicas y funciona tanto en equipos individuales como en servidores de empresa.
Con el avance en la tecnología de base de datos de aplicaciones basadas en SQL se ha vuelto cada vez
más asequible para el usuario normal. Esto se debe a la introducción de diversas soluciones de bases de
datos SQL de código abierto como MySQL, PostgreSQL, SQLite, Firebird, y muchos más.
1.2. ¿QUÉ ES BASE DE DATOS SQL?
Una base de datos SQL es un sistema de almacenamiento y gestión de datos que utiliza SQL
(Structured Query Language) como lenguaje estándar para acceder, manipular y gestionar la
información almacenada. SQL es un lenguaje utilizado para interactuar con bases de datos relacionales,
que son bases de datos organizadas en tablas relacionadas entre sí.
1.3. CARACTERISTICAS SQL
Las bases de datos SQL (relacionales) se caracterizan por una serie de propiedades que las hacen
ideales para gestionar y organizar datos de manera eficiente en una estructura organizada. A
continuación, se describen las características más destacadas de las bases de datos SQL:
Modelo Relacional: Organiza los datos en tablas (filas y columnas) que pueden estar relacionadas
entre sí mediante claves primarias y foráneas.
4
Lenguaje de Consulta Estandarizado (SQL): SQL es el lenguaje estándar para interactuar con bases
de datos. Permite operaciones como SELECT, INSERT, UPDATE, DELETE, y definición de
estructuras con CREATE, ALTER, DROP.
Integridad de los Datos: Garantiza la validez de los datos mediante restricciones como claves
primarias, foráneas, de unicidad, de no nulidad y de comprobación (CHECK).
Soporte para Transacciones ACID: Asegura que las transacciones sean atómicas, consistentes,
aisladas y duraderas, garantizando la integridad de los datos.
Relaciones entre Tablas: Utiliza claves para establecer relaciones entre tablas, como uno a muchos,
muchos a muchos y uno a uno.
Normalización de Datos: Proceso para reducir la redundancia y mejorar la integridad mediante la
división de datos en tablas más pequeñas relacionadas.
Consultas Complejas: SQL permite realizar consultas avanzadas utilizando JOINs, subconsultas,
funciones agregadas y filtrado/ordenación de resultados.
Escalabilidad Vertical: SQL es más eficiente en una escalabilidad vertical (añadir más recursos a un
solo servidor) para manejar grandes volúmenes de datos.
Seguridad: Proporciona control de acceso, autenticación, y encriptación para proteger los datos y
controlar quién puede acceder y modificar la base de datos.
Independencia de Datos: Permite modificar el esquema y los datos sin afectar las aplicaciones que
dependen de la base de datos.
Respaldo y Recuperación: Ofrece herramientas para hacer copias de seguridad y restaurar los datos,
incluyendo respaldo incremental y recuperación ante desastres.
Interoperabilidad y Portabilidad: SQL es compatible con múltiples plataformas (MySQL,
PostgreSQL, Oracle, SQL Server), permitiendo la portabilidad de consultas entre diferentes sistemas.
Rendimiento Optimizado: Utiliza índices para acelerar consultas y optimizadores de consultas para
elegir la mejor estrategia de ejecución y mejorar el rendimiento.
1.4. VENTAJAS SQL
Estándar Universal: SQL es un lenguaje estándar y ampliamente compatible entre diferentes sistemas
de bases de datos (MySQL, PostgreSQL, Oracle, etc.).
Facilidad de Uso: Su sintaxis es intuitiva y fácil de aprender, permitiendo realizar operaciones como
consultas, inserciones y actualizaciones de datos de forma sencilla.
5
Flexibilidad: Permite realizar consultas complejas y trabajar con datos de múltiples tablas mediante
subconsultas, y funciones agregadas.
Integridad de los Datos: Garantiza la validez y consistencia de los datos mediante restricciones como
claves primarias, foráneas, y de unicidad.
Soporte para Transacciones ACID: Asegura que las operaciones sean atómicas, consistentes, aisladas
y duraderas, garantizando la fiabilidad de las transacciones.
Seguridad: Proporciona control de acceso, autenticación y encriptación para proteger los datos y
garantizar que solo usuarios autorizados puedan acceder a la base de datos.
Escalabilidad y Rendimiento: Ofrece herramientas de optimización, como índices y planificadores de
consultas, y es eficiente en escalabilidad vertical (añadir recursos a un solo servidor).
Mantenimiento y Gestión: Permite realizar cambios en el esquema sin afectar las aplicaciones, y
proporciona herramientas de respaldo y recuperación de datos.
Compatibilidad con Big Data y Análisis: Algunas implementaciones de SQL permiten trabajar con
grandes volúmenes de datos y realizar análisis a gran escala.
Comunidad y Soporte: SQL tiene una amplia comunidad de usuarios y desarrolladores, con
abundante documentación y soporte profesional.
1.5. DESVENTAJAS SQL
Escalabilidad Horizontal Limitada: SQL no es tan eficiente para distribuir datos en múltiples
servidores, lo que puede ser un problema para grandes volúmenes de datos.
Rendimiento en Consultas Complejas: Las consultas complejas pueden volverse lentas,
especialmente si involucran muchas tablas o grandes cantidades de datos.
Estructura Rígida: SQL requiere un esquema fijo, lo que lo hace menos flexible para manejar datos
que cambian frecuentemente o no están bien estructurados.
Manejo de Datos No Estructurados: SQL no es ideal para datos no estructurados (como documentos
o imágenes), a diferencia de las bases de datos NoSQL.
Curva de Aprendizaje: Las consultas avanzadas pueden ser complicadas y difíciles de optimizar para
usuarios sin experiencia.
Costos de Licencias: Las versiones comerciales de sistemas SQL (como Oracle o SQL Server) pueden
ser costosas.
Alta Concurrencia: El manejo de muchas transacciones simultáneas puede afectar el rendimiento si
no se gestiona adecuadamente.
6
1.6. TIPOS DE DATOS Y FUNCIONES SQL
Los tipos de datos en SQL determinan el tipo de valores que puede almacenar una columna de una
tabla. Los tipos de datos más comunes incluyen:
1. Tipos de datos numéricos:
INT o INTEGER: Números enteros, tanto positivos como negativos.
SMALLINT: Enteros más pequeños que INT.
BIGINT: Enteros más grandes que INT.
DECIMAL (p, s) o NUMERIC (p, s): Números decimales con precisión p y escala s. Se utiliza para
valores con decimales exactos.
FLOAT o REAL: Números de punto flotante de precisión simple o doble.
DOUBLE: Números de punto flotante con precisión doble.
2. Tipos de datos de texto:
CHAR(n): Cadena de caracteres de longitud fija. Si el valor es más corto que n, se completa con
espacios.
VARCHAR(n): Cadena de caracteres de longitud variable. n es el número máximo de caracteres
permitidos.
TEXT: Cadenas de longitud variable, sin límite predefinido (aunque varía según la implementación).
3. Tipos de datos de fecha y hora:
DATE: Representa una fecha (año, mes, día).
TIME: Representa un valor de tiempo (hora, minuto, segundo).
DATETIME o TIMESTAMP: Representa tanto una fecha como una hora.
YEAR: Representa un año en formato de 4 dígitos.
4. Tipos de datos booleanos:
BOOLEAN: Puede almacenar valores TRUE, FALSE o NULL
2. BASE DE DATOS NoSQL
7
2.1. HISTORIA
Con las principales compañías de Internet, crecieron los sistemas de datos NoSQL. Compañías como
Google, Amazon, Twitter o Facebook debían enfrentarse a nuevos desafíos más complejos con el
tratamiento surgiendo problemas con el tradicional sistema RDBMS. Estas compañías se dieron cuenta
de que el rendimiento y sus propiedades de tiempo real eran más importantes que la coherencia en las
bases de datos relacionales tradicionales, que dedicaban una gran cantidad de tiempo de proceso. Surge
así la necesidad de un cambio con respecto a las Bases de datos tradicionales.
El término NoSQL fue acuñado por Carlo Strozzi quien lo usó por primera vez en 1998 para referirse a
su base de datos. Se trataba de una base de datos open-source, ligera, que, aunque no ofrecía una
interface SQL, sí seguía el modelo relacional. Un empleado de Rackspace, Eric Evans, volvió a
introducir el término NoSQL cuando Johan Oskarsson de [Link] organizó un evento para discutir
bases de datos distribuidas de código abierto. El nombre intentaba recoger el número creciente de bases
de datos no relacionales y distribuidos que no garantizaban ACID, atributo clave en las RDBMS
clásicas.
2.2. ¿QUE ES NoSQL?
NoSQL hace referencia a una extensa clase de sistemas de gestión de bases de datos, diferentes al
modelo clásico del sistema de gestión de bases de datos relacionales (RDBMS) en distintos aspectos,
entre los que cabe destacar que no usan SQL como el principal lenguaje de consultas. Los datos
almacenados no requieren estructuras fijas como tablas, no suelen soportar operaciones JOIN, ni
garantizan completamente ACID (atomicidad, consistencia, aislamiento y durabilidad) y habitualmente
escalan horizontalmente.
Generalmente, los investigadores académicos se refieren a NoSQL como un tipo almacenamiento
estructurado. Este término también es utilizado en las bases de datos relacionales clásicas.
Frecuentemente, las bases de datos basadas en NoSQL se clasifican según la forma en la que almacena
los datos, y contienen categorías como clave-valor, las implementaciones de big table, bases de datos
documentados y bases de datos orientas a grafos.
Las bases de datos NoSQL normalmente están altamente preparadas para realizar operaciones como
recuperar y agregar, y a menudo no ofrecen mucho más que la funcionalidad de almacenar los
registros. La pérdida de flexibilidad en tiempo de ejecución, comparado con los sistemas SQL clásicos,
se ve compensada por ganancias significativas en escalabilidad y rendimiento cuando se trata con
ciertos modelos de datos con una gran cantidad de información con la que trabajar.
8
2.3. CARACTERISTICAS
Consistencia: No utilizan ningún método concreto para verificar la consistencia de los datos, a
diferencia de los métodos de bases de datos relacionales que había una comunicación interna entre los
nodos que contenían la información que eran sensibles a los cambios, es decir, cualquier cambio hacia
que los nodos se comunicarán entre sí y se actualizarán para no perder la consistencia de la
información.
Las bases de datos NoSQL son ACID, esto significa que una transacción cumple lo siguiente:
o Atomicidad: es la propiedad que asegura que la operación se ha realizado o no, y por lo tanto
ante un fallo del sistema no puede quedar a medias.
o Consistencia: es la propiedad que asegura que sólo se empieza aquello que se puede acabar.
Por lo tanto, se ejecutan aquellas operaciones que no van a romper las reglas y directrices de
integridad de la base de datos.
o Aislamiento: es la propiedad que asegura que una operación no puede afectar a otras. Esto
asegura que la realización de dos transacciones sobre la misma información sean
independientes y no generen ningún tipo de error.
o Durabilidad: es la propiedad que asegura que una vez realizada la operación, ésta persistirá y
no se podrá deshacer, aunque falle el sistema.
Estructura distribuida: Generalmente se distribuyen los datos mediante mecanismos de tablas de
hash (tablas que contienen claves con valores) distribuidas como las redes P2P.
Escalabilidad Horizontal: Permite la implementación de elementos de la base de datos a nivel
horizontal permitiendo compartir una carga conjunta entre todos los elementos que forman la base de
datos, de forma que, si un servidor cae en mitad de un proceso los demás adquieren la carga de este
servidor caído hasta su reincorporación en la red (auto-sharding).
Tolerancia a fallos (debido a la estructura ACID), redundancia y sin cuellos de botella.
2.4. VENTAJAS
- Escalabilidad horizontal: NoSQL se destaca por su capacidad de escalar horizontalmente
añadiendo más servidores a la base de datos. Esto permite manejar grandes volúmenes de datos y un
alto tráfico de usuarios con mayor facilidad que las bases de datos SQL tradicionales, que suelen
escalar verticalmente (añadiendo recursos a un solo servidor).
- Flexibilidad de esquema: NoSQL permite esquemas flexibles, lo que significa que la estructura de
los datos puede cambiar con el tiempo sin necesidad de realizar grandes modificaciones en la base de
datos. Esto es ideal para aplicaciones con datos que evolucionan rápidamente.
9
- Alta disponibilidad y tolerancia a fallos: Muchos sistemas NoSQL están diseñados para ser
altamente disponibles y tolerantes a fallos. Si un servidor falla, el sistema puede seguir funcionando
sin interrupciones.
- Rendimiento: Para ciertas operaciones, NoSQL puede ofrecer un rendimiento superior a SQL,
especialmente en casos de lectura de datos a gran escala.
- Manejo de datos no estructurados o semiestructurados: NoSQL es adecuado para manejar datos
no estructurados o semiestructurados, como texto, imágenes o JSON, que son difíciles de gestionar con
bases de datos relacionales.
2.5. DESVENTAJAS
- Consistencia de datos: La consistencia de datos puede ser un desafío en algunas bases de datos
NoSQL, especialmente en entornos con alta concurrencia. La consistencia eventual (eventual
consistency) es común en muchos sistemas NoSQL, lo que significa que los datos pueden no ser
consistentes inmediatamente después de una actualización.
- Consultas complejas: Realizar consultas complejas en NoSQL puede ser más difícil que en SQL, ya
que muchos sistemas NoSQL no admiten el mismo nivel de complejidad en las consultas.
- Falta de estandarización: No existe un estándar único para NoSQL, lo que puede dificultar la
portabilidad de datos entre diferentes sistemas.
- Madurez del ecosistema: Si bien el ecosistema NoSQL ha madurado significativamente, todavía
puede ser menos maduro que el ecosistema SQL en términos de herramientas, bibliotecas y soporte.
- Transacciones ACID: No todas las bases de datos NoSQL ofrecen soporte completo para
transacciones ACID, lo que puede ser un problema en algunas aplicaciones que requieren la máxima
integridad de datos.
2.6. TIPOS DE DATOS Y FUNCIONES
La mayoría de las bases de datos NoSQL contienen los cuatro tipos de datos siguientes
1. Bases de datos documentales
- Permiten asociar una clave con un documento. Los documentos pueden contener una gran variedad
de objetos.
- Formato utilizado es JSON pero también puede ser XML
- El servidor entiende los datos y puede operar con ellos.
- Permite consultas avanzadas e incluso establecer relaciones entre ellas.
- Ejemplos: mongodb, BigTable, etc.
2. Key-value stores
- bases de datos simples que almacenan información en forma de atributos (teclas) y valores. En
algunos casos, los valores pueden tener tipos como cadena y número entero.
10
- Eficiencia en la lectura y escritura.
- No permite un modelo de datos, todo lo guardado lo guarda de forma binaria.
- No importa el contenido sino la clave y el valor asociado a ella.
- API simple: Put, Get y Delete.
- No permite consultas complejas, solo busca por la clave
3. Graph (grafico)
- Almacenan los datos en forma de grafo.
- Importancia no solo en los datos sino en la relación entre ellos.
- Las relaciones pueden tener atributos y da la posibilidad de realizar consultas directas a las
relaciones, olvidándonos de los nodos.
- Permite la utilización de algoritmos estadísticos que facilita la tarea en algunos campos, Ejemplo:
redes sociales.
- Ejemplos: Neo4j, Hyperbase, etc.
4. Wide-column stores (tiendas de columnas anchas)
- Están hechas para el manejo de grandes cantidades de datos en forma de columnas.
- Parecidos similares a las Key-value store.
- Pérdida de eficiencia en modo escritura.
2.7. DIFERENCIAS ENTRE NoSQL vs SQL
Como todo el mundo sabe, SQL es un estándar surgido en 1986 por la ANSI-SPARC que permitía el
uso de un idioma capaz de trabajar con bases de datos relacionales. Estas bases de datos se
relacionaban en tablas reduciendo notablemente el tiempo de acceso a la información, además de otros
elementos que aceleran la búsqueda como es el caso de los índices. No obstante, NoSQL es un nuevo
concepto de base de datos que rechaza el uso del lenguaje SQL y la estructura relacional.
Hoy en día muchas personas crees que el NoSQL sería un buen sustituto del estándar SQL, el cual
posee una serie de mejoras:
El uso de tablas puede ser un gran problema si hablamos de una gran cantidad de información
almacenada y, a la vez, un gran número de usuarios consultando dicha información de manera
concurrente. Ej: Google o Amazon.
11
Los proyectos de programación a gran escala que utilizan tipos de datos complejos y jerárquicos, como
XML, son difíciles de incorporar en SQL. Estos datos, que pueden contener objetos, listas y otros tipos
de datos propios, no se correlacionan bien con las tablas que consisten en sólo las filas y columnas.
SQL si es funcional con bases de datos de empresa que no manejes mucha información, y NoSQL es
funcional con bases de datos de gran tamaño. En definitiva, la importancia es saber qué problema el
que se le plantea al usuario o usuarios que crearan esa base de datos y, en base al problema, elegir la
opción que mejor se adapte al problema planteado.
-Las bases de datos NoSQL escalan horizontalmente, añadiendo más servidores para hacer frente a
cargas más grandes. Las bases de datos SQL, suelen escalar de forma vertical, añadiendo más y más
tráfico a un solo servidor.
-La iteración en la programación es otro de los problemas que NoSQL resuelve fácilmente con respecto
a SQL. En las BBBDD SQL requiere previamente la definición de un esquema que defina como será
estructuradamente la base de datos, esto causa problemas dados que con la iteración no es posible
definir, de primeras, el esquema final de la BBDD de la aplicación creada. En cambio, en las bases de
datos NoSQL son mucho más flexibles en ese aspecto, dado que no define los esquemas del diseño
previamente, permite a los usuarios añadir información y hacer cambios en cualquier momento sin
interrumpir el sistema o la necesidad de transferir una gran cantidad de datos.
3. CONCLUSION
En conclusión, tanto SQL como NoSQL son tecnologías esenciales en el mundo de las bases de datos,
cada una con características únicas que se adaptan a diferentes tipos de proyectos. SQL es adecuado
para aplicaciones que requieren una estructura bien definida, consistencia estricta y soporte para
transacciones complejas, siendo comúnmente utilizado en entornos empresariales y sistemas
financieros. En cambio, NoSQL es ideal para aplicaciones que necesitan manejar grandes volúmenes
de datos con rapidez y flexibilidad, como redes sociales y sistemas en tiempo real, donde los datos son
variados y frecuentemente no estructurados.
La clave para elegir entre SQL y NoSQL radica en comprender las necesidades específicas del
proyecto: si la consistencia, integridad y estructura rígida de datos son esenciales, SQL es la mejor
opción. Si se requiere escalabilidad, adaptabilidad y un modelo de datos flexible, NoSQL ofrece
mayores ventajas. La elección correcta permitirá optimizar el rendimiento, facilitar la gestión de datos
y asegurar el crecimiento futuro de la aplicación o sistema
12