Este documento compara SQL y NoSQL. Explica el modelo relacional de datos SQL, incluidos conceptos como tablas, atributos, tuplas y dominios. Luego describe SQL como lenguaje estándar para bases de datos relacionales. Finalmente introduce NoSQL como alternativa no relacional sin esquemas fijos ni sentencias join, y menciona ventajas como escalabilidad y rendimiento.
DEALING WITH NOISY FITNESS IN A RTS GAME BOT DESIGN
Sql v snosql
1. SQL
NoSQL
Preguntas
SQL vs NOSQL
¿Solo puede quedar uno?
Antonio Fernández Ares y Vicente Ruiz Rodríguez
!Barralibrecamp
10 de junio de 2010
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
2. SQL
NoSQL
Preguntas
Índice
1 SQL
El modelo relacional
Conceptos Básicos
SQL
2 NoSQL
Introducción
Las ventajas
Un ejemplo: Cassandra
3 Preguntas
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
4. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Definición
Modelo relacional
El modelo relacional para la gestión de una base de
datos es un modelo de datos basado en la lógica de
predicados y en la teoría de conjuntos.
Es el modelo más utilizado en la actualidad para
modelar problemas reales y administrar datos
dinámicamente.
Tras ser postuladas sus bases en 1970 por Edgar
Frank Codd, de los laboratorios IBM en San José
(California), no tardó en consolidarse como un nuevo
paradigma en los modelos de base de datos.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
5. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Las relaciones son buenas (y lo dice un soltero...)
Su idea fundamental es el uso de
«relaciones». Estas relaciones podrían
considerarse en forma lógica como
conjuntos de datos llamados «tuplas».
Para simplificar las cosas, podemos
pensar en cada relación como si fuese
una tabla que está compuesta por
registros (cada fila de la tabla sería un
registro o tupla), y columnas (también
llamadas campos).
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
6. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Algo de historia...
Codd perseguía una serie de objetivos:
Independencia física: El modo cómo se almacenan los datos no
debe influir en su manipulación lógica.
Independencia lógica: Añadir, eliminar o modificar cualquier
elemento de la BD no debe repercutir en los programas y/o usuarios que
están accediendo a subconjuntos parciales de los mismos (vistas).
Flexibilidad: Ofrecer a cada usuario los datos de la forma más
adecuada a la correspondiente aplicación.
Uniformidad: Las estructuras lógicas de los datos presentan un
aspecto uniforme (tablas), lo que facilita la concepción y manipulación
de la BD por parte de los usuarios.
Sencillez: Las características anteriores, así como unos lenguajes de
usuario muy sencillos, producen como resultado que el modelo
relacional (MR) sea fácil de comprender y de utilizar por parte del
usuario final.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
7. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Un poquito más de historia...
Codd concedió mucha importancia al tema de la
independencia de la representación lógica de los datos
respecto a su almacenamiento interno, que concretó en
tres tipos de independencia:
de ordenación
de indexación
y de los caminos de acceso.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
8. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Los principales Avances
Los avances más importantes que el MD relacional
incorpora respecto a los MD anteriores fueron:
Sencillez y uniformidad: Los usuarios ven la base de datos
relacional como una colección de tablas, y al ser la tabla la
estructura fundamental del modelo, éste goza de una gran
uniformidad, lo que unido a unos lenguajes no navegacionales y
muy orientados al usuario final, da como resultado la sencillez
de los sistemas relacionales.
Sólida fundamentación teórica: Al estar el modelo definido con
rigor matemático, el diseño y la evaluación del mismo puede
realizarse por métodos sistemáticos basados en abstracciones.
Independencia de la interfaz de usuario: los lenguajes
relacionales, al manipular conjuntos de registros, proporcionan
una gran independencia respecto a la forma en la que los datos
están almacenados.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
9. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Y nuestro amigo Codd besó el santo...
Las ventajas citadas han contribuido a que
desde mediados de los años 80, el MR sea
utilizado por prácticamente la totalidad de los
SGBD comerciales.
Este éxito se refleja en:
Algunas de las principales empresas informáticas del mundo,
son en origen, empresas de SGBD: ORACLE, Sybase,
INFORMIX, ...
Los grandes fabricantes de software tienen “su” SGBD
relacional: IBM DB2, Microsoft SQL Server, ...
Existen bastantes SGBD diseñados para PC’s y usuarios no
expertos: Microsoft Access, Filemaker, etc.
El tremendo éxito real del MR ha supuesto que el cambio
tecnológico a la siguiente generación esté siendo evolutivo y no
revolucionario: Triunfan los SGBD Objeto-Relacionales, y
Fracasan, en general, los SGBD de Objetos puros.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
10. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Conceptos básicos I (Las tablitas)
Tabla
El modelo relacional proporciona una manera simple de
representar los datos: una tabla bidimensinal llamada
relación.
Nombre Año Temporadas Episodios
The big bang theory 2007 3 63
HOUSE M.D 2004 6 132
Dexter 2006 4 48
How I Met Your Mother 2005 5 112
Por ejemplo, la relación Series tiene la intención de manejar la
información de las instancias de la entidad Series. Cada renglón
corresponde a una entidad Series y cada columna corresponde a uno
de los atributos de la entiudad. Sin embargo, las relaciones pueden
representar más que entidades.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
11. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Conceptos Básicos II (Atributos y Esquemas)
Atributos
Los atributos son las columnas de una relación y
describen características particulares de ella.
Esquemas
Es el nombre que se le da a una relación y el conjunto de
atributos en ella. En un modelo relación, un diseño
consiste de uno o más esquemas, a este conjunto se le
conoce como "esquema relacional de base de datos"
(relational database schema) o simplemente "esquema de
base de datos" (database schema)
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
12. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Conceptos Básicos III (Tuplas y Dominios)
Tuplas
Cada uno de los renglones en una relación conteniendo
valores para cada uno de los atributos.
(The big bang theory, 2007, 3, 63)
Dominios
Se debe considerar que cada atributo (columna) debe ser
atómico, es decir, que no sea divisible, no se puede
pensar en un atributo como un "registro" o "estructura"
de datos.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
13. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
El modelo Relacional muy bien... ¿pero y SQL?
Los orígenes del SQL están ligados a los de las bases de datos
relacionales. Aparte del modelo, Codd propone asociado a éste
un sublenguaje de acceso a los datos basado en el cálculo de
predicados.
Basándose en estas ideas, los laboratorios de IBM definen el
lenguaje SEQUEL (Structured English QUEry Language) que
más tarde sería ampliamente implementado por el SGBD
(Sistemas Gestores de Bases de Datos) experimental System R,
desarrollado en 1977 también por IBM.
Sin embargo, fue Oracle quien lo introdujo por primera vez en
1979 en un programa comercial.
El SEQUEL terminaría siendo el predecesor de SQL. SQL pasa a
ser el lenguaje por excelencia de los diversos SGBD relacionales
surgidos en los años siguientes y es por fin estandarizado en
1986 por el ANSI, dando lugar a la primera versión estándar de
este lenguaje, el "SQL-86" o "SQL1". Al año siguiente este
estándar es también adoptado por la ISO.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
14. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
SQL2
Sin embargo, este primer estándar no cubre todas las
necesidades de los desarrolladores e incluye funcionalidades de
definición de almacenamiento que se consideraron suprimir. Así
que en 1992 se lanza un nuevo estándar ampliado y revisado del
SQL llamado "SQL-92" o "SQL2".
En la actualidad el SQL es el estándar de facto de la inmensa
mayoría de los SGBD comerciales y libres. Y, aunque la
diversidad de añadidos particulares que incluyen las distintas
implementaciones comerciales del lenguaje es amplia, el soporte
al estándar SQL-92 es general y muy amplio.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
15. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Caracterísitcas Generales
SQL es un lenguaje de acceso a bases de datos que explota la
flexibilidad y potencia de los sistemas relacionales permitiendo
gran variedad de operaciones en éstos últimos.
Es un lenguaje declarativo de "alto nivel" o "de no
procedimiento", que gracias a su fuerte base teórica y su
orientación al manejo de conjuntos de registros, y no a registros
individuales, permite una alta productividad en codificación y la
orientación a objetos. De esta forma una sola sentencia puede
equivaler a uno o más programas que se utilizarían en un
lenguaje de bajo nivel orientado a registros.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
16. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
La optimización
Como ya se dijo arriba, y suele ser común en los lenguajes de
acceso a bases de datos de alto nivel, el SQL es un lenguaje
declarativo. O sea, que especifica qué es lo que se quiere y no
cómo conseguirlo, por lo que una sentencia no establece
explícitamente un orden de ejecución.
El orden de ejecución interno de una sentencia puede afectar
gravemente a la eficiencia del SGBD, por lo que se hace
necesario que éste lleve a cabo una optimización antes de su
ejecución. Muchas veces, el uso de índices acelera una
instrucción de consulta, pero ralentiza la actualización de los
datos. Dependiendo del uso de la aplicación, se priorizará el
acceso indexado o una rápida actualización de la información.
La optimización difiere sensiblemente en cada motor de base de
datos y depende de muchos factores.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
17. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Lenguaje de Definición de datos (LDD)
Lenguaje de Definición de datos (LDD)
El lenguaje de definición de datos (en inglés Data
Definition Language, o DDL), es el que se encarga de la
modificación de la estructura de los objetos de la base de
datos.
Existen cuatro operaciones básicas:
CREATE
ALTER
DROP
TRUNCATE
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
18. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Lenguaje de Manipulación de datos (LMD)
Lenguaje de Manipulación de datos (LMD)
Un lenguaje de manipulación de datos (Data
Manipulation Language, o DML en inglés) es un lenguaje
proporcionado por el sistema de gestión de base de datos
que permite a los usuarios llevar a cabo las tareas de
consulta o manipulación de los datos, organizados por el
modelo de datos adecuado.
El lenguaje de manipulación de datos más popular hoy
día es SQL, usado para recuperar y manipular datos en
una base de datos relacional. Operaciones básicas:
INSERT
UPDATE
DELETE
SELECT
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
19. SQL El modelo relacional
NoSQL Conceptos Básicos
Preguntas SQL
Disparadores
Los desencadenantes, también conocidos
como disparadores, (triggers en inglés)
son definidos sobre la tabla en la que
opera la sentencia INSERT, los
desencadenantes son evaluados en el
contexto de la operación.
Desencadenantes BEFORE INSERT
permiten la modificación de los
valores que se insertará en la tabla.
Desencadenantes AFTER INSERT no
puede modificar los datos de ahora en
adelante, pero se puede utilizar para
iniciar acciones en otras tablas, por
ejemplo para aplicar mecanismos de
auditoría.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
21. SQL Introducción
NoSQL Las ventajas
Preguntas Un ejemplo: Cassandra
NoSQL
NoSQL es un término usado en informática para agrupar
una serie de almacenes de datos no relacionales que no
proporcionan garantías ACID. Normalmente no tienen
esquemas fijos de tablas ni sentencias "join".
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
22. SQL Introducción
NoSQL Las ventajas
Preguntas Un ejemplo: Cassandra
NoSQL
El término NOSQL fue acuñado a principios de 2009
por un empleado de Rackspace, Eric Evans, cuando
Johan Oskarsson de Last.fm quiso organizar un
evento para discutir bases de datos distribuidas de
código abierto.
El nombre intenta describir la emergencia de un
número creciente de bases de datos no relacionales y
distribuidas que no suelen proveer garantias ACID.
El término hace referencia a la manera de llamar a
las bases de datos relacionales clásicas como
MySQL, MS SQL, PostgreSQL, etc.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
23. SQL Introducción
NoSQL Las ventajas
Preguntas Un ejemplo: Cassandra
Las ventajas I
Pueden manejar enormes cantidades de datos: esto es
debido a su propia estructura distribuida. Por ejemplo,
HyperTable, una implementación de código abierto basada en
BigTable (de Google), puede escribir 1000 millones de celdas de
datos por día. Al igual que BigTable, con MapReduce, es capaz
de manejar 20 petabytes diarios.
Se ejecutan en clusters de máquinas baratas: estos
sistemas no requieren de apenas computación, en comparación
con los sitemas gestores de base de datos tradicionales y
basados en SQL, por lo que se pueden montar en máquinas de
un coste más reducido y en mayor número, gracias a su nivel de
escalabilidad.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
24. SQL Introducción
NoSQL Las ventajas
Preguntas Un ejemplo: Cassandra
Las ventajas II
No generan cuellos de botella: el problema de fondo de los
sistemas SQL, es que deben de transcribir cada sentencia para
poder ser ejecutada y, cada sentencia compleja requiere, además
de un nivel de ejecución más concreto para poderse llevar a
cabo, por lo que constituye un punto de entrada común, único y
conflictivo en base a rendimiento.
Solo lo estrictamente necesario: son sistemas simples que
no tienen un sistema de consulta complejo ni con capacidad
declarativa para en una sola línea realizar una cantidad interna
de operaciones desorbitada.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
25. SQL Introducción
NoSQL Las ventajas
Preguntas Un ejemplo: Cassandra
Distintos acercamientos
Dentro de las bases de datos encasilladas dentro del
movimiento NoSQL, existen varios acercamientos:
Orientadas a documento como CouchDB o MongoDB
Orientadas a grafos como Neo4j
Clave/valor, como SimpleDB o Voldemort
Orientadas a objetos como Db4o
Tabulares como Cassandra o Hypertable
Otros acercamientos como GT.M
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
26. SQL Introducción
NoSQL Las ventajas
Preguntas Un ejemplo: Cassandra
Cassandra I
El modelo de datos de Cassandra es simple pero muy
flexible.
Cada fila se identifica con una clave única, que es un
string que no tiene un tamaño límite.
Una instancia de Cassandra tiene una tabla que se
constituye de una o más familias de columnas
definidas por el usuario.
Cada familia de columnas puede contener una o dos
estructuras: supercolumnas o columnas.
Las dos se crean de forma dinámica y no hay límite
en cuanto al número que pueden ser almacenados
en una familia de columnas.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
27. SQL Introducción
NoSQL Las ventajas
Preguntas Un ejemplo: Cassandra
Cassandra II
Las columnas son construcciones que tienen un
nombre, un valor y un ‘timestamp’ asociado a las
mismas. Se pueden almacenar tantas columnas
como se quieran en una familia de columnas.
Por otro lado, las supercolumnas son una
construcción que tiene un nombre y un número
infinito de columnas asociadas a la misma.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
28. SQL Introducción
NoSQL Las ventajas
Preguntas Un ejemplo: Cassandra
Cassandra III
Cuenta con características muy interesantes:
Está diseñado para estar siempre disponible. Las
escrituras nunca fallan. Maneja dos diferentes tipos
de lectura.
Tiene un modelo de datos muy rico, permitiendo
aplicaciones que manejen datos más complejos que
sólamente clave-valor.
Los datos son automáticamente replicados a
diferentes nodos.
Elasticidad: nuevos nodos pueden ser agregados
fácilmente a un cluster en ejecución.
Soporte para versiones y resolución de conflictos.
Las lecturas y escrituras están garantizadas para ser
atómicas.
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
29. SQL
NoSQL
Preguntas
Pregunta I
Pregunta I
SQL es un estandar conocido por gran cantidad de
desarrolladores, además de que la gran cantidad de
bases de datos relacionales de código abierto lo usan.
¿Qué puede ofrecer un modelo NoSQL para prestar
un servicio más consistente y productivo a los
desarrolladores?
¿Qué beneficios puede ofrecer no utilizar un modelo
NoSQL para el desarrollo?
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
30. SQL
NoSQL
Preguntas
Pregunta II
Pregunta II
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
31. SQL
NoSQL
Preguntas
Pregunta III
Pregunta III
Las bases de datos SQL se presentan en muchos
productos de código abierto y además son ofrecidas
mediante LAMP. También se suele incluir y utilizar en
gran cantidad software popular de blogging, wiki,
Gestores de Contenido (CMS) (como por ejemplo
Wordpress, Drupal, Mediawiki,...)
¿Cuales son los productos (nuevos o propuestos)
donde la utilización de un modelo no relacional será
más beneficioso para el día a día de la gente que la
utilización de un modelo SQL?
¿Qué productos no funcionan con las tecnologías
no-sql?
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
32. SQL
NoSQL
Preguntas
Pregunta IV
Pregunta IV
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
33. SQL
NoSQL
Preguntas
Pregunta V
Pregunta V
La mayoría de las bases de datos cumplen la función de almacén de
datos o data warehouse. En definitiva lo que se quiere es contener
datos que son necesarios o útiles para una organización para
posteriormente transformarlos en información útil para el usuario. El
almacen de datos debe de entregar la información correcta, en el
momento óptimo y en el formato adecuado. Además, dar respuestas a
las necesidades de usuarios expertos que pueden utilizar Sistemas de
Soporte a Decisiones, Sistemas de información Ejecutiva o
herramientas para hacer consultas o informes.
¿Qué tal se comporta un modelo no-sql ante un
entorno de data-warehousing?
¿Y ante un sistema de alta transaccionalidad (como
procesos bancarios o financieros)?
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
34. SQL
NoSQL
Preguntas
Pregunta VI
Pregunta V
SQL es un estandar conocido por gran cantidad de
desarrolladores, además de que la gran cantidad de
bases de datos relacionales de código abierto lo usan.
¿Qué puede ofrecer un modelo NoSQL para prestar
un servicio más consistente y productivo a los
desarrolladores?
¿Qué beneficios puede ofrecer no utilizar un modelo
NoSQL para el desarrollo?
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL
35. SQL
NoSQL
Preguntas
Preguntas del públicos
Ahora os toca a vosotros hacer preguntas...
Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL