postgres como base de datos nosql. codemotion 2015

46
Postgres como base de datos NoSQL Rubén Gómez García MADRID · NOV 27-28 · 2015

Upload: ruben-gomez-garcia

Post on 21-Feb-2017

596 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Postgres como base de datos NoSQL. Codemotion 2015

Postgres como base de datos NoSQLRubén Gómez GarcíaMADRID · NOV 27-28 · 2015

Page 2: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

Presentación

Rubén Gómez GarcíaFormador desde 2011 en

Muchas disciplinase inquietudes

Sobre todo Devop!@rubgomez

es.linkedin.com/in/rubgomez

Page 3: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

Descripción del sistema de almacenamiento y explotación de base de datos NoSQL

PostgreSQL

Page 4: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

Sistema de almacenamiento NoSQL

Crecimiento masivo de bases dedatos NoSQL

Están “demoda” pero no se conocen sus beneficios

Nopretenden sustituir a una base de datos relacional

Gran variedad de productos

Page 5: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

Sistema de almacenamiento NoSQL

Gran popularidad de bases dedatos relacionales

NormalizaciónEscalado aceptable ($)Persistencia avanzada

¿Pero, hasta donde podemos llegar con laescalabilidad?

Page 6: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

Sistema de almacenamiento NoSQL

Problemas de bases de datos relacionales:La complejidad de las consultas SQLRendimientos difícilesdemantenerJOINS!

Page 7: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

Sistema de almacenamiento NoSQL

Necesitamos sistemasmás versátiles, pero nada es gratis.

¿Esquema?¿Escalabilidad?¿Velocidad?

A cambio de qué!

Page 8: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

Sistema de almacenamiento NoSQL

Que sacrificamos?JOINS?Esquemas?Normalización?Claves foráneas?Validaciones?Transacciones en basede datos?

Page 9: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

Características NoSQL en PostgreSQLPostgreSQL 9.4

Page 10: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

NoSQL en PostgreSQL 9.4

PostgreSQL pretende no sacrificar totalmente las característicasde una base de datos relacional.Posee diversas soluciones

tipos de datos comoHSTORESoporte para JSONSoporte para JSONB (noBSON!)

Page 11: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

Almacenamiento clave-valor en PostgresNo se trata de una tabla, sino de un tipo de dato!

Page 12: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

Se trata deuna tabla hash almacenada PORCAMPO!Podemos definir características para cada unode los individuos.

Page 13: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

Page 14: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

Pero si eso lopuedo guardar igual en un campode texto!Ni siquiera podemos tratarlo como campode texto!Ni funciones ni operadores de texto!Como puedo acceder a la información almacenada!

Preguntando…

Page 15: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

Podemos preguntar a cualquiermiembro de la tabla hash

Genial!Pero… Si devuelve texto!

Page 16: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

Efectivamente, devuelve texto, pero no sufras!

Ahora sí!

Page 17: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

Soporte GIN yGIST para generación de índices en columnasHSTORE.Extremadamente eficiente.

Si disponemos de ello desde… PostgreSQL 8.4!

Page 18: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

GiNoGIST! DependeGINes tres veces más rápido buscando.GINTarda tres veces másen construirseGIN es más lento en actualizaciones.GINocupa entre dos y tres veces másque GIST

Regla general. Datos estáticos, GIN, Datos dinámicos GIST.

Page 19: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

Que sería denosostros sin… “Operadores”:

Page 20: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

HSTORE

Ymás que faltaban!

Page 21: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSON / JSONB

Ojo , nada que ver conBSON (MongoDB)JSON: Representación en textoJSONB: Representación en binario

Page 22: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSON

JavaScript Object NotationPostgres posee soporte básico JSONdesde haceaños.

Desde PostgreSQL 9.3 sepermiten operadores con JSONquepermite accionesmás avanzadas.

Page 23: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSON

El almacenamiento en JSON permite validación dedocumentos.Se suelemantener si senecesita el orden de las claves

Page 24: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSON

El almacenamiento en JSON permite validación dedocumentos.Se suelemantener si senecesita el orden de las clavesSu acceso es similar al HSTORE

Page 25: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSONB

Almacenamiento de información JSONen formato binario.

Soporte en PostgreSQL 9.4Formato compacto y eficiente.Permite acceso avanzado y operadores de comparaciónPermite GIN,GIST, hash y btree

Page 26: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSONB

Tamaño reducido en discoMuy inferior al tamaño JSONOrganizado comoun diccionario (una tabla hash), cuyo acceso estremendamente rápido, sin embargo, el orden no es preservado.JSONB es compatible con lasoperaciones JSON

Page 27: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSONB

EL TRATO ES IGUAL, SIN EMBARGO, SE APRECIAN VISUALMENTEDIFERENCIAS

Page 28: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSONB

EL ORDENNO ES RESPETADO. SE GUARDA COMOUN DICCIONARIORÁPIDOEFICIENTESOPORTEDE LASMISMAS FUNCIONES QUEEL TIPO JSON!NO ES BSON!

Page 29: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSON/JSONB

Soporte de operadores

Específicos de JSONB

Page 30: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

JSONB

Gran cantidad de funciones!

Page 31: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

Comparativa con MongoDBPostgreSQL 9.4

Page 32: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

PostgreSQL vs MongoDB

Diferencias más interesantes:

Soporte para transacciones a nivel de basede datos.MongoDB posee soporte de transacciones atómicas a nivel dedocumento.PostgreSQL posee soporte de transacciones a nivel de base dedatos (MVCC)

Page 33: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

PostgreSQL vs MongoDB

Diferencias más interesantes:

JSONB VS BSONSISTEMAS TOTALMENTE DISTINTOS.BSONPOSEE LIMITACIONES ENALMACENAMIENTO DE PRECISIÓNALTA.

Page 34: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

PostgreSQL vs MongoDB

Rendimiento: Carga yoperaciones

Using the NoSQL Capabilities in Postgres – EnterpriseDB Whitepaper

Page 35: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

PostgreSQL vs MongoDB

Rendimiento: Gráfico

Using the NoSQLCapabilities in Postgres – EnterpriseDB Whitepaper

Page 36: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

PostgreSQL vs MongoDB

Otras consideraciones.

MongoDB posee unas característicasmuy interesantes enconcepto de sharding y réplica:

Son sencillos de crear y demodificar.Postgres posee “artificios” para obtenerlosNo son tan sencillos comoMongoDB

Page 37: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

PostgreSQL vs MongoDB

Lasversiones superiores deMongoDB poseen nuevos sistemas degestión de almacenamiento comoWiredTiger o elMMAP, quesolucionan losproblemas debloqueos en versiones 2.6 oinferiores.Aumenta el rendimiento! MongoDb sigue sin ser una basede datos de crecimiento lineal.Problemas con consultas que afecten amás deuna colección.Soporte deMapReduce retirado!

Page 38: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

ToroDBPostgreSQL 9.4

Page 39: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

TORODB

BASE DE DATOS DE SOFTWARE LIBRE EJECUTADA SOBREPOSTGRESQLPROYECTO ESPAÑOL!ALMACENAMIENTO JSON RELACIONAL, NO EN JSONB (I/OREDUCIDA)COMPATIBILIDAD CONPROTOCOLOPROPIETARIO MONGODB

Page 40: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

TORODB

EVITA EL ALMACENAMIENTO DEMETAINFORMACIÓN REPETIDASOPORTEDE TRANSACCIONESACTUALIZACIONES SOBREDOCUMENTOS JSONLICENCIA AGPLv3 DESARROLLADO EN JAVACODIGO FUENTE ENGITHUB

Page 41: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

TORODB

MÁS QUEUNCONECTOR DE POSTGRESQL

ALTA CONCURRENCIA YRENDIMIENTO

PERMITE REALIZAR UN CAMBIO APOSTGRES TRANSPARENTE.

OPERACIONES JSON COMPATIBLES DEMONGODB.

Page 42: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

TORODB

SE ENCUENTRA EN :github.com/torodb

LANZADO EN 2014 COMODEVELOPER PREVIEWSOPORTECRUD YCASI TODO EL API DE SELECT.TODAVÍA NO TENEMOS UNAVERSIÓN 1.0 ESTAMOS EN LAVERSIÓN 0.23

Page 43: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

TORODB

CREAR UNA BASE DEDATOS

Page 44: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

TORODB

EJECUTAR EL JAR DEL PROYECTO

CONECTAR ALASHELL CONEL CLIENTE MONGO

Page 45: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

TORODB

PROYECTO PROMETEDOR

SIEMPRE SE NECESITA COLABORACIÓN!

CÓDIGO TOTALMENTE DISPONIBLE ENGITHUB

SERÁ INTERESANTE COMPROBAR LOSRENDIMIENTOS EN SUVERSIÓN 1.0!

Page 46: Postgres como base de datos NoSQL. Codemotion 2015

MADRID · NOV 27-28 · 2015

FINMongoDB vs PostgreSQL