JSONB un JSON superior en PostgreSQL

Hace unos días me puse a trabajar con el tipo de dato JSONB de PostgreSQL, nuevo desde la versión 9.4, el mismo me ha resultado fantástico y superior a su primo JSON presente en PostgreSQL desde la versión 9.2, muestra evidente de la evolución del gestor hacia funcionalidades y características cada vez mejor, y al nivel de los requerimientos de la actualidad.

Comencemos con algunas pruebas para ver las ventajas de este nuevo tipo de dato:

Creamos dos tablas similares, solo cambia el tipo de dato:


create table tablajson (atributo JSON);
create table tablajsonb (atributo JSONB);

Se insertaron un total de 100000 tuplas.

INSERT INTO tablajsonb

SELECT row_to_json(consulta)::JSONB FROM (SELECT 'Nombre'||round((random() * 100)::numeric,0)::text||' Apellido'||round((random() * 100)::numeric,0)::text as nombre_apellidos,

round((random() * 100)::numeric,0) as edad,round((random() * 9)::numeric ,2)as porciento FROM generate_series(1,100000) ) consulta;

INSERT INTO tablajson

SELECT row_to_json(consulta)::json FROM (SELECT 'Nombre'||round((random() * 100)::numeric,0)::text||' Apellido'||round((random() * 100)::numeric,0)::text as nombre_apellidos,

round((random() * 100)::numeric,0) as edad,round((random() * 9)::numeric ,2)as porciento FROM generate_series(1,100000) ) consulta;

Soporte de operadores

Sigue leyendo

Probando dump_fdw

Hola amigos de unas de las cosas que más soy FAN en PostgreSQL es de los FDW, la funcionalidad maravillosa que permite leer y “escribir” en fuentes externas a PostgreSQL, existen algunas como mysql, oracle, sql server entre otras, una lista mayor y más completa puede verla aquí. En lo personal he utilizado la de mysql y funciona excelente.

Recién estuve leyendo un FDW nuevo llamado: dump_fdw, y lo que hace es leer información de los archivos de salvas o backups generado por pg_dump en formato custom, es decir podemos acceder a una tabla que se le realizó un backup hace un tiempo y poder obtener dicho valor, es decir muy útil para rectificar o ver los valores que tuvo determinada tupla o fila hace en un momento de tiempo (cuando se hizo el backup).

¿Cómo funciona?. Bueno similar a los demás FDW, se crea la extensión, el server, y la tabla con sus respectivas opciones, en este caso no es necesario un map user, veamos mas acción descargándolo de aquí:

 

Antes que todo hago una salva de la bases de datos:

pg_dump –host localhost –port 5432 –username “postgres” –no-password  –format custom –blobs –verbose –file “/tmp/dell_salva.dmp” “dell” Sigue leyendo

Jugando con GraphpostgresQL

Hola amigos, hace unos días leí sobre GraphpostgresQL, la cual está inspirada en graphql de Facebook y puede ser útil para buscar relaciones entre una tabla y otras, pasando como parámetros la llave primaria de la una tabla, es decir dado un id de la tabla A me devuelve la relación que tiene ese id en la tabla B u otras tablas. Hasta ahora nada nodevodoso, lo que me gusta es que lo devuelve en formato JSON :D, y puede ser utilizado en llamada AJAX, aplicaciones RESTful, web service, etc, es decir un servicio que dado un paramétro(id) me devuelve las relaciones que tiene con otros objetos,

La extensión trabaja con llaves primaria , foráneas , LATERAL JOIN y JSON, puede ser descargada de aquí.
Luego de una presentación de la misma, les muestro mi experiencia jugando con esta extensión, no quiere decir que sea una solución final para todo, pero cada cual puede ajustarla a las necesidades que tenga, algo del Software Libre :D, :

Utilicé la base de datos Dell Store 2(http://pgfoundry.org/frs/?group_id=1000150):

1. Agrego las funciones de GraphpostgresQL.
psql -U postgres -h localhost -d dell -f graphql.sql

2. Me creo una función relacion_customer_orders(id), siguiendo el demo que colocan en el sitio con un código similar a: Sigue leyendo