Postgres como base de datos NoSQL. Codemotion 2015
-
Upload
ruben-gomez-garcia -
Category
Software
-
view
591 -
download
2
Transcript of Postgres como base de datos NoSQL. Codemotion 2015
Postgres como base de datos NoSQLRubén Gómez GarcíaMADRID · NOV 27-28 · 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
MADRID · NOV 27-28 · 2015
Descripción del sistema de almacenamiento y explotación de base de datos NoSQL
PostgreSQL
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
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?
MADRID · NOV 27-28 · 2015
Sistema de almacenamiento NoSQL
Problemas de bases de datos relacionales:La complejidad de las consultas SQLRendimientos difícilesdemantenerJOINS!
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é!
MADRID · NOV 27-28 · 2015
Sistema de almacenamiento NoSQL
Que sacrificamos?JOINS?Esquemas?Normalización?Claves foráneas?Validaciones?Transacciones en basede datos?
MADRID · NOV 27-28 · 2015
Características NoSQL en PostgreSQLPostgreSQL 9.4
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!)
MADRID · NOV 27-28 · 2015
HSTORE
Almacenamiento clave-valor en PostgresNo se trata de una tabla, sino de un tipo de dato!
MADRID · NOV 27-28 · 2015
HSTORE
Se trata deuna tabla hash almacenada PORCAMPO!Podemos definir características para cada unode los individuos.
MADRID · NOV 27-28 · 2015
HSTORE
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…
MADRID · NOV 27-28 · 2015
HSTORE
Podemos preguntar a cualquiermiembro de la tabla hash
Genial!Pero… Si devuelve texto!
MADRID · NOV 27-28 · 2015
HSTORE
Efectivamente, devuelve texto, pero no sufras!
Ahora sí!
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!
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.
MADRID · NOV 27-28 · 2015
HSTORE
Que sería denosostros sin… “Operadores”:
MADRID · NOV 27-28 · 2015
HSTORE
Ymás que faltaban!
MADRID · NOV 27-28 · 2015
JSON / JSONB
Ojo , nada que ver conBSON (MongoDB)JSON: Representación en textoJSONB: Representación en binario
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.
MADRID · NOV 27-28 · 2015
JSON
El almacenamiento en JSON permite validación dedocumentos.Se suelemantener si senecesita el orden de las claves
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
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
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
MADRID · NOV 27-28 · 2015
JSONB
EL TRATO ES IGUAL, SIN EMBARGO, SE APRECIAN VISUALMENTEDIFERENCIAS
MADRID · NOV 27-28 · 2015
JSONB
EL ORDENNO ES RESPETADO. SE GUARDA COMOUN DICCIONARIORÁPIDOEFICIENTESOPORTEDE LASMISMAS FUNCIONES QUEEL TIPO JSON!NO ES BSON!
MADRID · NOV 27-28 · 2015
JSON/JSONB
Soporte de operadores
Específicos de JSONB
MADRID · NOV 27-28 · 2015
JSONB
Gran cantidad de funciones!
MADRID · NOV 27-28 · 2015
Comparativa con MongoDBPostgreSQL 9.4
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)
MADRID · NOV 27-28 · 2015
PostgreSQL vs MongoDB
Diferencias más interesantes:
JSONB VS BSONSISTEMAS TOTALMENTE DISTINTOS.BSONPOSEE LIMITACIONES ENALMACENAMIENTO DE PRECISIÓNALTA.
MADRID · NOV 27-28 · 2015
PostgreSQL vs MongoDB
Rendimiento: Carga yoperaciones
Using the NoSQL Capabilities in Postgres – EnterpriseDB Whitepaper
MADRID · NOV 27-28 · 2015
PostgreSQL vs MongoDB
Rendimiento: Gráfico
Using the NoSQLCapabilities in Postgres – EnterpriseDB Whitepaper
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
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!
MADRID · NOV 27-28 · 2015
ToroDBPostgreSQL 9.4
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
MADRID · NOV 27-28 · 2015
TORODB
EVITA EL ALMACENAMIENTO DEMETAINFORMACIÓN REPETIDASOPORTEDE TRANSACCIONESACTUALIZACIONES SOBREDOCUMENTOS JSONLICENCIA AGPLv3 DESARROLLADO EN JAVACODIGO FUENTE ENGITHUB
MADRID · NOV 27-28 · 2015
TORODB
MÁS QUEUNCONECTOR DE POSTGRESQL
ALTA CONCURRENCIA YRENDIMIENTO
PERMITE REALIZAR UN CAMBIO APOSTGRES TRANSPARENTE.
OPERACIONES JSON COMPATIBLES DEMONGODB.
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
MADRID · NOV 27-28 · 2015
TORODB
CREAR UNA BASE DEDATOS
MADRID · NOV 27-28 · 2015
TORODB
EJECUTAR EL JAR DEL PROYECTO
CONECTAR ALASHELL CONEL CLIENTE MONGO
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!
MADRID · NOV 27-28 · 2015
FINMongoDB vs PostgreSQL