36
NoSQL (y SQL): Algunas nociones Algunas definiciones, tipos y su rol en la web moderna

Conceptos de NoSoloSQL

Embed Size (px)

DESCRIPTION

Presentación para Experiencias Web HTML5, P2PU

Citation preview

Page 1: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Algunas definiciones, tipos y su rol en la web moderna

Page 2: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Page 3: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

vs.

Page 4: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

ENTERING

Page 5: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

sTRUCTURATED qUERY lANGUAGE(M.O.I. aka Ministery Of Information, Brazil 1985)

Page 6: Conceptos de NoSoloSQL

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

Page 7: Conceptos de NoSoloSQL

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

Page 8: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Joins

Los (joins) son usados para combinar información demúltiples tablas. Pueden ser INNER o OUTER Joins.

Set operatorsOperaciones con tablas o partes de ellas...

Inner Join [Left] Outer Join

UNION EXCEPT INTERSECT

etc, etc...

Page 9: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Usando SQL en la WebPara 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.

Page 10: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Ejemplo de una Condición WHERE en SQL:Dada una tabla llamada “Personas”

P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes2 Svendson Tove Borgvn 23 Sandnes3 Pettersen Kari Storgt 20 Stavanger

Sólo seleccionamos las personas de la ciudad SandnesDebemos usar entonces el siguiente comando SELECT :SELECT * FROM PersonasWHERE City='Sandnes'

El resultado que arrojará será algo parecido a esto.

P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes2 Svendson Tove Borgvn 23 Sandnes

Page 11: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

...entering:

(or Harry Tuttle [aka De Niro] , Brazil 1985)

Page 12: Conceptos de NoSoloSQL

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!

Page 13: Conceptos de NoSoloSQL

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 describestructured storage that doesn’t rely on SQLto be accessed in a useful way”.

Chris Lea

“NoSQL” NO significa que “SQL es MALO”... sino simplemente Not Only SQL (No sólo SQL)

Page 14: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Peeero.. si [My]SQL hace lo que necesito, para qué necesito otra cosa??

RDBMS NoSQL

Diseñado paracargas genéricas(workloads)

Diseñado pararesolver problemasespecíficos

Grandes (y cadavez más grandes)sets de funciones

Cambia funcionespor perfomance

Page 15: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Escalab. horizontalmás servidores creanmás capacidad

Transparente a la aplicaciónla lógica de negociación dela aplicaciónse debe separarde temas de escalado de recursos de servidor

No hay un sólo punto de falla:No UN solo servidor, que si secae, cause un fuera de serviciode la aplicación

Los sistemas NoSQL típicamenteNO 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:

Page 16: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Porqué .. AHORA??

Tamaño de los Datos (Data Size)

Conectividad (Conectedness)

Semi-Estructuras

Arquitectura (de las bases de datos)

Page 17: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

2006 2007 2008 2009 2010

0

250

500

750

1000

397

ExaBytes (10 ) de datos almacenados por año) de datos almacenados por año

Fuente: IDC 2007

161253

397

623

988

Tamaño de los Datos (Data Size)

Cada año se crea más data digital En dos años hemos creado más datos digitales que toda los datos creados en la historia antes de ello.

Page 18: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Conectividad (Conectedness)

Text documents

1990

Cone

ctiv

idad

de

la in

form

ació

n

FolksonomiesTagging

User-generated

content

Wikis

RSS

Blogs

Hypertext

2000 2010 2020

web 1.0 web 2.0

Ontologies

RDF

GiantGlobal

Graph (GGG)

A lo largo del tiempo la dataha evolucionado y se ha vueltomás interenlazada y conectada.El hipertexto tiene links,Los blogs tienen pingbacks,Grupos de etiquetas de datos relacionados...

Page 19: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

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 entidadHay 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)

Semi- Estructura

Page 20: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Arquitectura (de las bases de datos)

DB

Application80´s: Aplicacionestipo “MainFrame”

DB

Application

90´s: Base de datos como centro integrador

Application Application

DBDB DB

Application

2000´s: (y al futuro) Servicios desconectadoscon sus propios back-ends

Application Application

Page 21: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Y de qué gustos viene?

Page 22: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

CUATRO categorías emergentes:

Page 23: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Hace foco en escalar grandes cantidades de dataDiseñado para manejar cargas masivasBasado en DynamoPaper de AmazonModelo 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...}

Key-Value (Llaves-Valor)

Page 24: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Como si fuera “como DB Relacionales orientadas a co-lumnas”, pero con un giro extraTablas similares a las RDBMS, pero que manejan datos semiestructuradosBasados en “BigTable” de GoogleModelo 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...)

Big Table (clones) (o Column Stores)

Page 25: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

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 NotesModelo de datos: Colecciones de colecciones de Llave-Valor ( Key-Value)Los documentos son bastante versionados/replicados

Ejemplos:•CouchDB•MongoDB•Redis•JackRabbit

Document Databases

Page 26: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Se enfocan en modelar la estructura datos-interconectividadSe escala a la complejidad de los datosInspirado por la Teoría Grafo-matemática ( G=(E,V) )Modelo de datos: “grafo de propiedad” NodosRelaciones/ Bordes entre Nodos (primera clase)Pares Llave-valor en ambosPosibilidad de etiquetas de Borde y/o Tiposde Nodo/Borde.

Ejemplos:•Neo4j•AllegroGraph•Sones graphDB

DataBase Gráfica (Graph DB)

Page 27: Conceptos de NoSoloSQL

QUERY

NoSQL (y SQL): Algunas nociones

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 LanguageAPIs de consulta•La Google BigTable DataStore API•La API transversal Neo4j

OK! No es una DB... Y COMO LA CONSULTO?

Page 28: Conceptos de NoSoloSQL

DATAHandle

NoSQL (y SQL): Algunas nociones

Otra vez, interfaces REST (http PUT, POST, DELETE)APIs de Manipulación de Datos•Google BigTable DataStore API•Neo4j GraphDatabase APIFormatos de Serialización•JSON•Thrift•ProtoBuffers•RDF

Estee... Y COMO MANIPULO LOS DATOS?

Page 29: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Quiénes trabajan con NoSQL?(qué jugadores!)

Page 30: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Mmm.. Y si atamos cabos?

( o sea.. SQL o NoSQL? Cuál?)

Page 31: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

(Dream is Over...Finale, Brazil 1985)

RDBMSHasta ahora , (era) la única Database.

Page 32: Conceptos de NoSoloSQL

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!

Page 33: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Ahora, hay que usar el mejor envase para cada tipo de dato.

(o lo que es igual, la mejor base de datos para el problema que se presente)

38

Page 34: Conceptos de NoSoloSQL

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!!

Page 35: Conceptos de NoSoloSQL

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 trabajoLa persistencia políglota ya está en marcha, y cada vez se volverá más cotidianaResuelve 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 JOINsJugado por grandes compañías y empresas in-dependientes (una dupla saludable :)

Page 36: Conceptos de NoSoloSQL

NoSQL (y SQL): Algunas nociones

Fuentes:NoSQL for Dummieshttp://slidesha.re/boJDgs

What Does NoSQL Mean for You?http://slidesha.re/bacCWC

NoSQL: An introductionhttp://slidesha.re/bBuApG

SQL Overviewhttp://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.