![Page 1: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/1.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/9.jpg)
MADRID · NOV 27-28 · 2015
Características NoSQL en PostgreSQLPostgreSQL 9.4
![Page 10: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/10.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/13.jpg)
MADRID · NOV 27-28 · 2015
HSTORE
![Page 14: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/16.jpg)
MADRID · NOV 27-28 · 2015
HSTORE
Efectivamente, devuelve texto, pero no sufras!
Ahora sí!
![Page 17: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/19.jpg)
MADRID · NOV 27-28 · 2015
HSTORE
Que sería denosostros sin… “Operadores”:
![Page 20: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/20.jpg)
MADRID · NOV 27-28 · 2015
HSTORE
Ymás que faltaban!
![Page 21: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/24.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/25.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/26.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/27.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/28.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/29.jpg)
MADRID · NOV 27-28 · 2015
JSON/JSONB
Soporte de operadores
Específicos de JSONB
![Page 30: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/30.jpg)
MADRID · NOV 27-28 · 2015
JSONB
Gran cantidad de funciones!
![Page 31: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/31.jpg)
MADRID · NOV 27-28 · 2015
Comparativa con MongoDBPostgreSQL 9.4
![Page 32: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/32.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/33.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/34.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/35.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/36.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/37.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/38.jpg)
MADRID · NOV 27-28 · 2015
ToroDBPostgreSQL 9.4
![Page 39: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/39.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/40.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/41.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/42.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/43.jpg)
MADRID · NOV 27-28 · 2015
TORODB
CREAR UNA BASE DEDATOS
![Page 44: Postgres como base de datos NoSQL. Codemotion 2015](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/44.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/45.jpg)
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](https://reader030.vdocuments.co/reader030/viewer/2022021420/58abc99a1a28ab68068b56bf/html5/thumbnails/46.jpg)
MADRID · NOV 27-28 · 2015
FINMongoDB vs PostgreSQL