sql v snosql

36
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

Upload: antonio-fernandez-ares

Post on 28-May-2015

5.756 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sql v snosql

SQLNoSQL

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

Page 2: Sql v snosql

SQLNoSQL

Preguntas

Índice

1 SQLEl modelo relacionalConceptos BásicosSQL

2 NoSQLIntroducciónLas ventajasUn ejemplo: Cassandra

3 Preguntas

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 3: Sql v snosql

SQL

Page 4: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Definición

Modelo relacionalEl modelo relacional para la gestión de una base dedatos es un modelo de datos basado en la lógica depredicados y en la teoría de conjuntos.

Es el modelo más utilizado en la actualidad paramodelar problemas reales y administrar datosdinámicamente.

Tras ser postuladas sus bases en 1970 por EdgarFrank Codd, de los laboratorios IBM en San José(California), no tardó en consolidarse como un nuevoparadigma en los modelos de base de datos.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 5: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Las relaciones son buenas (y lo dice un soltero...)

Su idea fundamental es el uso de«relaciones». Estas relaciones podríanconsiderarse en forma lógica comoconjuntos de datos llamados «tuplas».

Para simplificar las cosas, podemospensar en cada relación como si fueseuna tabla que está compuesta porregistros (cada fila de la tabla sería unregistro o tupla), y columnas (tambiénllamadas campos).

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 6: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Algo de historia...

Codd perseguía una serie de objetivos:

Independencia física: El modo cómo se almacenan los datos nodebe influir en su manipulación lógica.Independencia lógica: Añadir, eliminar o modificar cualquierelemento de la BD no debe repercutir en los programas y/o usuarios queestán accediendo a subconjuntos parciales de los mismos (vistas).Flexibilidad: Ofrecer a cada usuario los datos de la forma másadecuada a la correspondiente aplicación.Uniformidad: Las estructuras lógicas de los datos presentan unaspecto uniforme (tablas), lo que facilita la concepción y manipulaciónde la BD por parte de los usuarios.Sencillez: Las características anteriores, así como unos lenguajes deusuario muy sencillos, producen como resultado que el modelorelacional (MR) sea fácil de comprender y de utilizar por parte delusuario final.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 7: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Un poquito más de historia...

Codd concedió mucha importancia al tema de laindependencia de la representación lógica de los datosrespecto a su almacenamiento interno, que concretó entres 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

Page 8: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Los principales Avances

Los avances más importantes que el MD relacionalincorpora respecto a los MD anteriores fueron:

Sencillez y uniformidad: Los usuarios ven la base de datosrelacional como una colección de tablas, y al ser la tabla laestructura fundamental del modelo, éste goza de una granuniformidad, lo que unido a unos lenguajes no navegacionales ymuy orientados al usuario final, da como resultado la sencillezde los sistemas relacionales.

Sólida fundamentación teórica: Al estar el modelo definido conrigor matemático, el diseño y la evaluación del mismo puederealizarse por métodos sistemáticos basados en abstracciones.

Independencia de la interfaz de usuario: los lenguajesrelacionales, al manipular conjuntos de registros, proporcionanuna gran independencia respecto a la forma en la que los datosestán almacenados.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 9: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Y nuestro amigo Codd besó el santo...

Las ventajas citadas han contribuido a quedesde mediados de los años 80, el MR seautilizado por prácticamente la totalidad de losSGBD 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” SGBDrelacional: IBM DB2, Microsoft SQL Server, ...

Existen bastantes SGBD diseñados para PC’s y usuarios noexpertos: Microsoft Access, Filemaker, etc.

El tremendo éxito real del MR ha supuesto que el cambiotecnológico a la siguiente generación esté siendo evolutivo y norevolucionario: Triunfan los SGBD Objeto-Relacionales, yFracasan, en general, los SGBD de Objetos puros.

SGBD = Sistema de Gestión de Base de DatosAntonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 10: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Conceptos básicos I (Las tablitas)

TablaEl modelo relacional proporciona una manera simple derepresentar los datos: una tabla bidimensinal llamadarelación.

Nombre Año Temporadas EpisodiosThe big bang theory 2007 3 63

HOUSE M.D 2004 6 132Dexter 2006 4 48

How I Met Your Mother 2005 5 112Por ejemplo, la relación Series tiene la intención de manejar lainformación de las instancias de la entidad Series. Cada renglóncorresponde a una entidad Series y cada columna corresponde a unode los atributos de la entiudad. Sin embargo, las relaciones puedenrepresentar más que entidades.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 11: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Conceptos Básicos II (Atributos y Esquemas)

AtributosLos atributos son las columnas de una relación ydescriben características particulares de ella.

Esquemas

Es el nombre que se le da a una relación y el conjunto deatributos en ella. En un modelo relación, un diseñoconsiste de uno o más esquemas, a este conjunto se leconoce como "esquema relacional de base de datos"(relational database schema) o simplemente "esquema debase de datos" (database schema)

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 12: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Conceptos Básicos III (Tuplas y Dominios)

Tuplas

Cada uno de los renglones en una relación conteniendovalores para cada uno de los atributos.(The big bang theory, 2007, 3, 63)

DominiosSe debe considerar que cada atributo (columna) debe seratómico, es decir, que no sea divisible, no se puedepensar en un atributo como un "registro" o "estructura"de datos.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 13: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

El modelo Relacional muy bien... ¿pero y SQL?

Los orígenes del SQL están ligados a los de las bases de datosrelacionales. Aparte del modelo, Codd propone asociado a ésteun sublenguaje de acceso a los datos basado en el cálculo depredicados.

Basándose en estas ideas, los laboratorios de IBM definen ellenguaje SEQUEL (Structured English QUEry Language) quemá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 en1979 en un programa comercial.

El SEQUEL terminaría siendo el predecesor de SQL. SQL pasa aser el lenguaje por excelencia de los diversos SGBD relacionalessurgidos en los años siguientes y es por fin estandarizado en1986 por el ANSI, dando lugar a la primera versión estándar deeste lenguaje, el "SQL-86" o "SQL1". Al año siguiente esteestándar es también adoptado por la ISO.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 14: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

SQL2

Sin embargo, este primer estándar no cubre todas lasnecesidades de los desarrolladores e incluye funcionalidades dedefinición de almacenamiento que se consideraron suprimir. Asíque en 1992 se lanza un nuevo estándar ampliado y revisado delSQL llamado "SQL-92" o "SQL2".

En la actualidad el SQL es el estándar de facto de la inmensamayoría de los SGBD comerciales y libres. Y, aunque ladiversidad de añadidos particulares que incluyen las distintasimplementaciones comerciales del lenguaje es amplia, el soporteal estándar SQL-92 es general y muy amplio.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 15: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Caracterísitcas Generales

SQL es un lenguaje de acceso a bases de datos que explota laflexibilidad y potencia de los sistemas relacionales permitiendogran variedad de operaciones en éstos últimos.

Es un lenguaje declarativo de "alto nivel" o "de noprocedimiento", que gracias a su fuerte base teórica y suorientación al manejo de conjuntos de registros, y no a registrosindividuales, permite una alta productividad en codificación y laorientación a objetos. De esta forma una sola sentencia puedeequivaler a uno o más programas que se utilizarían en unlenguaje de bajo nivel orientado a registros.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 16: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

La optimización

Como ya se dijo arriba, y suele ser común en los lenguajes deacceso a bases de datos de alto nivel, el SQL es un lenguajedeclarativo. O sea, que especifica qué es lo que se quiere y nocómo conseguirlo, por lo que una sentencia no estableceexplícitamente un orden de ejecución.

El orden de ejecución interno de una sentencia puede afectargravemente a la eficiencia del SGBD, por lo que se hacenecesario que éste lleve a cabo una optimización antes de suejecución. Muchas veces, el uso de índices acelera unainstrucción de consulta, pero ralentiza la actualización de losdatos. Dependiendo del uso de la aplicación, se priorizará elacceso indexado o una rápida actualización de la información.La optimización difiere sensiblemente en cada motor de base dedatos y depende de muchos factores.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 17: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Lenguaje de Definición de datos (LDD)

Lenguaje de Definición de datos (LDD)

El lenguaje de definición de datos (en inglés DataDefinition Language, o DDL), es el que se encarga de lamodificación de la estructura de los objetos de la base dedatos.Existen cuatro operaciones básicas:

CREATE

ALTER

DROP

TRUNCATE

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 18: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Lenguaje de Manipulación de datos (LMD)

Lenguaje de Manipulación de datos (LMD)

Un lenguaje de manipulación de datos (DataManipulation Language, o DML en inglés) es un lenguajeproporcionado por el sistema de gestión de base de datosque permite a los usuarios llevar a cabo las tareas deconsulta o manipulación de los datos, organizados por elmodelo de datos adecuado.El lenguaje de manipulación de datos más popular hoydía es SQL, usado para recuperar y manipular datos enuna base de datos relacional. Operaciones básicas:

INSERT

UPDATE

DELETE

SELECT

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 19: Sql v snosql

SQLNoSQL

Preguntas

El modelo relacionalConceptos BásicosSQL

Disparadores

Los desencadenantes, también conocidoscomo disparadores, (triggers en inglés)son definidos sobre la tabla en la queopera la sentencia INSERT, losdesencadenantes son evaluados en elcontexto de la operación.

Desencadenantes BEFORE INSERTpermiten la modificación de losvalores que se insertará en la tabla.

Desencadenantes AFTER INSERT nopuede modificar los datos de ahora enadelante, pero se puede utilizar parainiciar acciones en otras tablas, porejemplo para aplicar mecanismos deauditoría.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 20: Sql v snosql

NOSQL

Page 21: Sql v snosql

SQLNoSQL

Preguntas

IntroducciónLas ventajasUn ejemplo: Cassandra

NoSQL

NoSQL es un término usado en informática para agruparuna serie de almacenes de datos no relacionales que noproporcionan garantías ACID. Normalmente no tienenesquemas fijos de tablas ni sentencias "join".

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 22: Sql v snosql

SQLNoSQL

Preguntas

IntroducciónLas ventajasUn ejemplo: Cassandra

NoSQL

El término NOSQL fue acuñado a principios de 2009por un empleado de Rackspace, Eric Evans, cuandoJohan Oskarsson de Last.fm quiso organizar unevento para discutir bases de datos distribuidas decódigo abierto.

El nombre intenta describir la emergencia de unnúmero creciente de bases de datos no relacionales ydistribuidas que no suelen proveer garantias ACID.El término hace referencia a la manera de llamar alas bases de datos relacionales clásicas comoMySQL, MS SQL, PostgreSQL, etc.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 23: Sql v snosql

SQLNoSQL

Preguntas

IntroducciónLas ventajasUn ejemplo: Cassandra

Las ventajas I

Pueden manejar enormes cantidades de datos: esto esdebido a su propia estructura distribuida. Por ejemplo,HyperTable, una implementación de código abierto basada enBigTable (de Google), puede escribir 1000 millones de celdas dedatos por día. Al igual que BigTable, con MapReduce, es capazde manejar 20 petabytes diarios.

Se ejecutan en clusters de máquinas baratas: estossistemas no requieren de apenas computación, en comparacióncon los sitemas gestores de base de datos tradicionales ybasados en SQL, por lo que se pueden montar en máquinas deun coste más reducido y en mayor número, gracias a su nivel deescalabilidad.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 24: Sql v snosql

SQLNoSQL

Preguntas

IntroducciónLas ventajasUn ejemplo: Cassandra

Las ventajas II

No generan cuellos de botella: el problema de fondo de lossistemas SQL, es que deben de transcribir cada sentencia parapoder ser ejecutada y, cada sentencia compleja requiere, ademásde un nivel de ejecución más concreto para poderse llevar acabo, por lo que constituye un punto de entrada común, único yconflictivo en base a rendimiento.

Solo lo estrictamente necesario: son sistemas simples queno tienen un sistema de consulta complejo ni con capacidaddeclarativa para en una sola línea realizar una cantidad internade operaciones desorbitada.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 25: Sql v snosql

SQLNoSQL

Preguntas

IntroducciónLas ventajasUn ejemplo: Cassandra

Distintos acercamientos

Dentro de las bases de datos encasilladas dentro delmovimiento 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

Page 26: Sql v snosql

SQLNoSQL

Preguntas

IntroducciónLas ventajasUn ejemplo: Cassandra

Cassandra I

El modelo de datos de Cassandra es simple pero muyflexible.

Cada fila se identifica con una clave única, que es unstring que no tiene un tamaño límite.

Una instancia de Cassandra tiene una tabla que seconstituye de una o más familias de columnasdefinidas por el usuario.

Cada familia de columnas puede contener una o dosestructuras: supercolumnas o columnas.

Las dos se crean de forma dinámica y no hay límiteen cuanto al número que pueden ser almacenadosen una familia de columnas.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 27: Sql v snosql

SQLNoSQL

Preguntas

IntroducciónLas ventajasUn ejemplo: Cassandra

Cassandra II

Las columnas son construcciones que tienen unnombre, un valor y un ‘timestamp’ asociado a lasmismas. Se pueden almacenar tantas columnascomo se quieran en una familia de columnas.

Por otro lado, las supercolumnas son unaconstrucción que tiene un nombre y un númeroinfinito de columnas asociadas a la misma.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 28: Sql v snosql

SQLNoSQL

Preguntas

IntroducciónLas ventajasUn ejemplo: Cassandra

Cassandra III

Cuenta con características muy interesantes:

Está diseñado para estar siempre disponible. Lasescrituras nunca fallan. Maneja dos diferentes tiposde lectura.

Tiene un modelo de datos muy rico, permitiendoaplicaciones que manejen datos más complejos quesólamente clave-valor.

Los datos son automáticamente replicados adiferentes nodos.

Elasticidad: nuevos nodos pueden ser agregadosfácilmente a un cluster en ejecución.

Soporte para versiones y resolución de conflictos.

Las lecturas y escrituras están garantizadas para seratómicas.

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 29: Sql v snosql

SQLNoSQL

Preguntas

Pregunta I

Pregunta I

SQL es un estandar conocido por gran cantidad dedesarrolladores, además de que la gran cantidad debases de datos relacionales de código abierto lo usan.

¿Qué puede ofrecer un modelo NoSQL para prestarun servicio más consistente y productivo a losdesarrolladores?

¿Qué beneficios puede ofrecer no utilizar un modeloNoSQL para el desarrollo?

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 30: Sql v snosql

SQLNoSQL

Preguntas

Pregunta II

Pregunta II

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 31: Sql v snosql

SQLNoSQL

Preguntas

Pregunta III

Pregunta III

Las bases de datos SQL se presentan en muchosproductos de código abierto y además son ofrecidasmediante LAMP. También se suele incluir y utilizar engran cantidad software popular de blogging, wiki,Gestores de Contenido (CMS) (como por ejemploWordpress, 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 lautilización de un modelo SQL?

¿Qué productos no funcionan con las tecnologíasno-sql?

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 32: Sql v snosql

SQLNoSQL

Preguntas

Pregunta IV

Pregunta IV

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 33: Sql v snosql

SQLNoSQL

Preguntas

Pregunta V

Pregunta VLa mayoría de las bases de datos cumplen la función de almacén dedatos o data warehouse. En definitiva lo que se quiere es contenerdatos que son necesarios o útiles para una organización paraposteriormente transformarlos en información útil para el usuario. Elalmacen de datos debe de entregar la información correcta, en elmomento óptimo y en el formato adecuado. Además, dar respuestas alas necesidades de usuarios expertos que pueden utilizar Sistemas deSoporte a Decisiones, Sistemas de información Ejecutiva oherramientas para hacer consultas o informes.

¿Qué tal se comporta un modelo no-sql ante unentorno de data-warehousing?

¿Y ante un sistema de alta transaccionalidad (comoprocesos bancarios o financieros)?

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 34: Sql v snosql

SQLNoSQL

Preguntas

Pregunta VI

Pregunta V

SQL es un estandar conocido por gran cantidad dedesarrolladores, además de que la gran cantidad debases de datos relacionales de código abierto lo usan.

¿Qué puede ofrecer un modelo NoSQL para prestarun servicio más consistente y productivo a losdesarrolladores?

¿Qué beneficios puede ofrecer no utilizar un modeloNoSQL para el desarrollo?

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 35: Sql v snosql

SQLNoSQL

Preguntas

Preguntas del públicos

Ahora os toca a vosotros hacer preguntas...

Antonio Fernández Ares y Vicente Ruiz Rodríguez SQL vs NOSQL

Page 36: Sql v snosql

Y por ahora hemos terminado