El documento resume las diferencias entre bases de datos SQL y NoSQL. Explica que SQL es para bases de datos relacionales mientras que NoSQL incluye bases de datos clave-valor, columnares, de documentos y gráficas diseñadas para escalabilidad. También discute cómo el tamaño y complejidad crecientes de los datos, así como la necesidad de escalar horizontalmente, han llevado al surgimiento de bases de datos NoSQL.
5. NoSQL (y SQL): Algunas nociones
sTRUCTURATED qUERY lANGUAGE
(M.O.I. aka Ministery Of Information, Brazil 1985)
6. NoSQL (y SQL): Algunas nociones
SQL es un manera de construir,
manipular y accesar una base de datos relacional.
Tabla
Tiene columnas y filas
Relaciones
Llaves primarias [keys]
( única columna o combinación de columnas)
Llaves foráneas [foreign]
(una col. que referencia una llave primaria u otra tabla)
Normalización
Cada tabla describe solamente una cosa nada más
7. NoSQL (y SQL): Algunas nociones
Data Types
Cada columna debe tener un tipo de data válida
Los tipos de datos están (parcialmente) estandarizados.
Por ej: Numeric, Decimal, Float, Char, Varchar, Text, etc.
Create Tables/ Alter Tables
Define / Modifica la estructura de la tabla
Limitadores son usados para forzar data válida en las columnas
NOT NULL / CHECK / PRIMARY KEY
UNIQUE / FOREIGN KEY (especifica una relaciuón entre tablas)
Hay índices (Indexes) (como una tabla virtual
con punteros a una tabla física)
Modificar data
INSERT / UPDATE /DELETE
Transacciones
Un set de instrucciones INSERT, DELETE, UPDATE
que pertenecen a una unidad lógica de trabajo
8. NoSQL (y SQL): Algunas nociones
Joins
Los (joins) son usados para combinar información de
múltiples tablas. Pueden ser INNER o OUTER Joins.
Inner Join [Left] Outer Join
Set operators
Operaciones con tablas o partes de ellas...
etc, etc...
UNION EXCEPT INTERSECT
9. NoSQL (y SQL): Algunas nociones
Usando SQL en la Web
Para hacer un sitio que utilice una base de datos
SQL nos hará falta:
* un programa de base de datos tipo RDBMS (P.ej,
MS Access, SQL Server, MySQL)
* Un lenguaje de programación server-side tal
como PHP o ASP
* SQL
* HTML / CSS
RDBMS es la sigla de Relational Database Manage-
ment System.
RDBMS es la base de SQL y de todos los sistemas
modernos de base de datos, como
MS SQL Server, IBM DB2, Oracle, MySQL, y Microsoft
Access.
Los datos en RDBMS se guardan en objetos de la
base de datos llamados tablas.
Las tablas son colecciones de entradas de datos
relacionadas y consiste en columnas y filas.
10. NoSQL (y SQL): Algunas nociones
Ejemplo de una Condición WHERE en SQL:
Dada una tabla llamada “Personas”
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
Sólo seleccionamos las personas de la ciudad Sandnes
Debemos usar entonces el siguiente comando SELECT :
SELECT * FROM Personas
WHERE City='Sandnes'
El resultado que arrojará será algo parecido a esto.
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
11. NoSQL (y SQL): Algunas nociones
...entering:
(or Harry Tuttle [aka De Niro] , Brazil 1985)
12. NoSQL (y SQL): Algunas nociones
Una definición (o dos):
Otra forma es definirlo por lo que quiere decir No :
“cualquier base de datos que NO es relacional”
El término se acuñó en un encuentro con los
creadores de algunas importantes/emergentes
bases de datos
“Bases de datos No-Relacionales” hubiera sido más
correcto, ... pero era un bocado!
...luego hubo una conferencia, una lista de correo,
... el nombre prendió, hubieron más conferencias...
... y aquí estamos!
13. NoSQL (y SQL): Algunas nociones
Una definición (o dos):
NoSQL es un concepto genérico usado para descri-
bir almacenamiento estructurado que no necesita
de apoyarse en SQL para ser accesado de manera
útil”
“NoSQL is a blanket term used to describe
structured storage that doesn’t rely on SQL
to be accessed in a useful way”.
Chris Lea
“NoSQL” NO significa que “SQL es MALO”
... sino simplemente Not Only SQL
(No sólo SQL)
14. NoSQL (y SQL): Algunas nociones
Peeero.. si [My]SQL hace lo que necesito,
para qué necesito otra cosa??
RDBMS NoSQL
Diseñado para Diseñado para
cargas genéricas resolver problemas
(workloads) específicos
Grandes (y cada
vez más grandes) Cambia funciones
sets de funciones por perfomance
15. NoSQL (y SQL): Algunas nociones
Los sistemas NoSQL típicamente
NO hacen trasacciones ni JOIN´s
• si realmente necesita transacciones, manténgase
al lado de RDBMS
•no tener joins termina por no tener grandes efectos
Cuál es el foco del NoSQL?
..más que modelos de datos,
es la escalabilidad:
Escalab. horizontal Transparente a la aplicación No hay un sólo punto de falla:
más servidores crean la lógica de negociación de No UN solo servidor, que si se
más capacidad la aplicaciónse debe separar cae, cause un fuera de servicio
de temas de escalado de de la aplicación
recursos de servidor
16. NoSQL (y SQL): Algunas nociones
Porqué .. AHORA??
Tamaño de los Datos (Data Size)
Conectividad (Conectedness)
Semi-Estructuras
Arquitectura (de las bases de datos)
17. NoSQL (y SQL): Algunas nociones
Tamaño de los Datos (Data Size)
ExaBytes (10 ) de datos almacenados por año
1000 988
Cada año se crea más
data digital En dos años
750 hemos creado más datos
digitales que toda los
datos creados en la 623
historia antes de ello.
500
397
397
250 253
161
0
2006 2007 2008 2009 2010
Fuente: IDC 2007
18. NoSQL (y SQL): Algunas nociones
Conectividad (Conectedness)
A lo largo del tiempo la data
Giant
ha evolucionado y se ha vuelto Global
más interenlazada y conectada. Graph (GGG)
El hipertexto tiene links,
Ontologies
Conectividad de la información
Los blogs tienen pingbacks,
Grupos de etiquetas de RDF
datos relacionados...
Folksonomies
Tagging
User-
Wikis generated
content
Blogs
RSS
Hypertext
Text
documents web 1.0 web 2.0
1990 2000 2010 2020
19. NoSQL (y SQL): Algunas nociones
Semi- Estructura
Individualización de contenido:
En las listas de salarios de los 70´s todos los el-
ementos tenían UN solo trabajo.
En las listas del 2000, necesitamos 5 columnas de
trabajo! O bien 8? O 15...?
Todo busca “visiones enteras del mundo”
Se almacena más data de cada entidad
Hay una tendencia acelerada a la desentra-
lización de la generación de contenido
... que es la marca de la Edad de la Participación
(o de la web 2.0)
20. NoSQL (y SQL): Algunas nociones
Arquitectura (de las bases de datos)
80´s: Aplicaciones Application
tipo “MainFrame”
90´s: Base de datos
como centro integrador DB
Application Application Application
2000´s: (y al futuro)
Servicios desconectados
con sus propios back-ends
Application Application Application
DB
DB DB DB
22. NoSQL (y SQL): Algunas nociones
CUATRO categorías emergentes:
23. NoSQL (y SQL): Algunas nociones
Key-Value (Llaves-Valor)
Hace foco en escalar grandes cantidades de data
Diseñado para manejar cargas masivas
Basado en DynamoPaper de Amazon
Modelo de datos: Colección (global) de pares de
llaves-valor (key-value)
Replicación y partición basado en un anillo Dynamo
Ejemplos:
•Dynomite
•Voldemort
•Tokyo{Tyrant, Cabinet, etc...}
24. NoSQL (y SQL): Algunas nociones
Big Table (clones) (o Column Stores)
Como si fuera “como DB Relacionales orientadas a co-
lumnas”, pero con un giro extra
Tablas similares a las RDBMS, pero que manejan datos
semiestructurados
Basados en “BigTable” de Google
Modelo de datos: Columnas Familias de cols. ACL
Datos marcados por: fila, col, tiempo e index
Rango de filas: tablet distribución
Ejemplos:
•HBase
•Hypertable
•Cassandra (Facebook, Twitter, Digg...)
25. NoSQL (y SQL): Algunas nociones
Document Databases
Similares a los de almacenamiento por valor-Llave,
pero en este caso la DB sabe cuál es el Valor.
Similar to Key-Value stores, but the DB knows what the
Inspirado en Lotus Notes
Modelo de datos: Colecciones de colecciones de Llave-
Valor ( Key-Value)
Los documentos son bastante versionados/replicados
Ejemplos:
•CouchDB
•MongoDB
•Redis
•JackRabbit
26. NoSQL (y SQL): Algunas nociones
DataBase Gráfica (Graph DB)
Se enfocan en modelar la estructura
datos-interconectividad
Se escala a la complejidad de los datos
Inspirado por la Teoría Grafo-matemática ( G=(E,V) )
Modelo de datos: “grafo de propiedad” Nodos
Relaciones/ Bordes entre Nodos (primera clase)
Pares Llave-valor en ambos
Posibilidad de etiquetas de Borde y/o Tipos
de Nodo/Borde.
Ejemplos:
•Neo4j
•AllegroGraph
•Sones graphDB
27. NoSQL (y SQL): Algunas nociones
OK! No es una DB...
Y COMO LA CONSULTO?
Interfaces REST (HTTP como API de acceso)
Otros lenguajes de consulta que el SQL
•GQL - SQL-like QL para Google BigTable
•SPARQL - Query language para la Web Semántica
•Gremlin - Lenguaje trasnversal gráfico
•Sones Graph Query Language
APIs de consulta
•La Google BigTable DataStore API
•La API transversal Neo4j
QUERY
28. NoSQL (y SQL): Algunas nociones
Estee...
Y COMO MANIPULO LOS DATOS?
Otra vez, interfaces REST (http PUT, POST, DELETE)
APIs de Manipulación de Datos
•Google BigTable DataStore API
•Neo4j GraphDatabase API
Formatos de Serialización
•JSON
•Thrift
•ProtoBuffers
•RDF
DATAHandle
29. NoSQL (y SQL): Algunas nociones
Quiénes trabajan con NoSQL?
(qué jugadores!)
30. NoSQL (y SQL): Algunas nociones
Mmm.. Y si atamos cabos?
( o sea.. SQL o NoSQL? Cuál?)
31. NoSQL (y SQL): Algunas nociones
Hasta ahora , (era) la única Database.
RDBMS
(Dream is Over...Finale, Brazil 1985)
32. NoSQL (y SQL): Algunas nociones
... incluso podemos usar múltiples bases
de datos en conjunto, y dejar que cada
una se encargue de las cosas que maneja
mejor!
33. NoSQL (y SQL): Algunas nociones
Ahora, hay que usar el mejor envase para cada tipo de dato.
38
(o lo que es igual, la mejor base de datos para el problema que se presente)
34. NoSQL (y SQL): Algunas nociones
Persistencia políglota
(Polyglot persistence)
DataBase
Todas las bases de datos
son bienvenidas!
SQL y NoSQL... No es sólo SQL!!
35. NoSQL (y SQL): Algunas nociones
Conclusiones:
Dos pasos adelante (pero antes uno atrás...)
La era de una sola base de datos terminó
Use la herramienta justa para cada trabajo
La persistencia políglota ya está en marcha, y
cada vez se volverá más cotidiana
Resuelve varios problemas de escalabilidad:
•Escalar por tamaño - grandes cantidades de
datos, muchas muchas máquinas
•Escalar por complejidad - maneja esquemas
complicados
- evita ser ”lastrado” por profundos JOINs
Jugado por grandes compañías y empresas in-
dependientes (una dupla saludable :)
36. NoSQL (y SQL): Algunas nociones
Fuentes:
NoSQL for Dummies
http://slidesha.re/boJDgs
What Does NoSQL Mean for You?
http://slidesha.re/bacCWC
NoSQL: An introduction
http://slidesha.re/bBuApG
SQL Overview
http://slidesha.re/i7uIWJ
Images:
Google Images
Brazil (1985), de Terry Gilliam. (un capo)
Mauro Ramón, para HTML5 Experiencia Web,
2011 P2PU / Profesor Dany Bautista.