SlideShare una empresa de Scribd logo
“Operadores para JSON
   en PostgreSQL 9.2”
Anthony R. Sotolongo León(asotolongo@uci.cu)
Daymel Bonne Solis
Introducción




                    9.2
               Septiembre 2012
Introducción




                    9.2
 •Tipo de rango.
 •Replicación en cascada.
 •Index-only scans
 •PLV8
 •JSON
Introducción

JSON

Dos funciones:

•row_to_json()     select row_to_json (tabla1) from tabla1
•array_to json()
Introducción

JSON

Dos funciones:

•row_to_json()     select row_to_json (row
                   (tabla1.columna1,tabla1.columna2)) from tabla1
•array_to json()
Introducción

JSON


Aun no cuenta con operadores ni índices para
mejorar los tiempos de respuestas



                  
Desarrollo

Los mecanismos de extensión del gestor.

Agregar:
•Tipos de datos
•Operadores
•Funciones
•Indices
Desarrollo

Los mecanismos de extensión del gestor.

Agregar:
•Tipos de datos
•Operadores
•Funciones
•Índices




  Extensiones(SQL, C, python,etc.)
Desarrollo

Extensiones en PostgreSQL

Dos archivos como mínimo

                .control --- .SQL

• Incluirlas en directorio extension.

   CREATE EXTESION nombre_de_extensión
Desarrollo

Extensiones en PostgreSQL

.control
# extension
comment = 'extension …postgresql'
default_version = '0.1‘
superuser = true

•nombre--version.SQL
Create type …
Desarrollo

Extensiones en PostgreSQL

Tipo de dato Hstore


Operadores:
  hstore || hstore    Concatena     dos     atributos
                      hstore
  hstore ? text       Pregunta si el tipo de dato
                      tiene una llave específica.
  hstore @> hstore    Si el hstore contiene otro
                      hstore
Desarrollo

JSON:


Fue especificado por Douglas Crockford como
una notación de datos, descrito en la RFC 4627,
para el mismo no existe operadores estándares.
JSON ejemplo ={“id": "file", "value": “archivo.txt}
Desarrollo

JSON:
Operadores propuestos

=
Verifica si son iguales enVerifica si son datos los
              =
                            estructura y iguales en
JSON                      estructura y datos los JSON
?             ?           Pregunta si el tipo de dato
Pregunta si el tipo de dato tiene llave específica.
                          tiene una una llave
específica.
             @>            Pregunta     si   el   JSON
@>
 Pregunta si el JSON contiene un par llave/valor
                          contiene un par llave/valor
Desarrollo

Operadores:

CREATE OPERATOR ? (
leftarg = json,
rightarg = character varying,
procedure = contains);

CREATE OPERATOR @> (
leftarg = json,
rightarg = character varying,
procedure = containsvalue);

CREATE OPERATOR = (
leftarg = json,
rightarg = json,
procedure = equals);
Desarrollo

Funciones:

CREATE OR REPLACE FUNCTION equals(doc1 json, doc2 json)
RETURNS boolean AS
$BODY$
declare
begin
 if ( $1::character varying=$2::character varying ) then
    return true;
 else
    return false;
 end if;
end;
$BODY$ LANGUAGE plpgsql VOLATILE;
Desarrollo

Ejemplo:

CREATE TABLE tabla2( campo1 serial NOT
NULL, campo2 json);

with datos as
(select
'{"field1":"valor1","field2":'||generate_series(1
,1000)::text||'}' as son)

insert into tabla2 ( campo2) select son::json
from datos;
Desarrollo

Ejemplo:

select * from tabla2 where campo2=
'{"field1":"valor1","field2":10}'::json
Desarrollo

Ejemplo:

select * from tabla2 where campo2=
'{"field1":"valor1","field2":10}'::json


ERROR: el operador no existe: json = json
Desarrollo

Ejemplo:

select * from tabla2 where campo2=
'{"field1":"valor1","field2":10}'::json

Después de instalada la extensión
Create extension jsonutils;
Descarga:http://pgxn.org/dist/json_utils/

Resultado: 11;"{"field1":"valor1","field2":10}".
Desarrollo

Ejemplo:

select * from tabla1 where campo2 @>
'"field2":340'


Resultado: 340;"{"field1":"valor1","field2“:340}".




                      
Desarrollo

Índices:
Se definió un índice hash, con el operador de =

CREATE OPERATOR CLASS json_equal_ops
DEFAULT FOR TYPE json USING hash AS
OPERATOR 1 = ,
FUNCTION 1 jsonhash(json);
Desarrollo

Índices:

Explain analyze select * from tabla1 where
campo2 ='{"field1":"valor1","field2":34}'

"Total runtime: 14.135 ms"
Desarrollo

Índices:

CREATE INDEX test_index_json ON tabla1
USING hash(campo2);


Explain analyze select * from tabla1 where
campo2 ='{"field1":"valor1","field2":34}'

"Total runtime: 0.491 ms"

                     
POSTGRESQL

Conclusiones
•Se puede apreciar la capacidad de extensibilidad del
gestor.
•Se define una extensión con un conjunto de
operadores y funciones que mejoran el trabajo con el
tipo de dato JSON
•Se agrega el índice de tipo “hash”, y se mostraron
ejemplos de su utilización.
POSTGRESQL

Descarga de:
http://pgxn.org/dist/json_utils/
“Operadores para JSON
   en PostgreSQL 9.2”
Anthony R. Sotolongo León(asotolongo@uci.cu)
Daymel Bonne Solis

Más contenido relacionado

PPTX
9.d.el reino de dios
PDF
6-7-funciones-atributos-de-dios-1.pdf
PDF
Actividades para enseñar a orar a los niños.pdf
PPTX
EKSPOSISI KITAB WAHYU DALAM KEKRISTENAN.pptx
PPT
Es 07 Bondad
PPT
Lectio divina
PPT
Tema5. +
DOC
Planeación Segundo Perìodo
9.d.el reino de dios
6-7-funciones-atributos-de-dios-1.pdf
Actividades para enseñar a orar a los niños.pdf
EKSPOSISI KITAB WAHYU DALAM KEKRISTENAN.pptx
Es 07 Bondad
Lectio divina
Tema5. +
Planeación Segundo Perìodo

Similar a Operadores para json en pg 9.2 (20)

PPTX
Presentacion Practico de Base de Datos.pptx
PPTX
Presentación Grupo 28 Tema 5 hablando so
PDF
Postgres como base de datos NoSQL. Codemotion 2015
PDF
Presentación sobre Bases de Datos NoSQL Sesion2
PDF
Pgpymongo y pgpycouch
PPTX
Json short manual
PPTX
Bd no sq ldocumento
PDF
PostgreSQL 9.2
PDF
Lenguajes de Transformación
PDF
Evolucion de PostgreSQL hasta 9.4
PDF
PostgreSQL: Un motor Impulsado por una comunidad
PPTX
JSON Support en SQL Server 2016
PPT
Mongo db course introduction
DOCX
Nuevo Document Microsoft Word.docx
PPTX
Objeto relacional bases datos 2
PDF
Evolución y avances del Gestor PostgreSQL
PDF
BigData - NoSQL
PPTX
Jean piere sarumo mongodb
PDF
Bdo r en oracle
Presentacion Practico de Base de Datos.pptx
Presentación Grupo 28 Tema 5 hablando so
Postgres como base de datos NoSQL. Codemotion 2015
Presentación sobre Bases de Datos NoSQL Sesion2
Pgpymongo y pgpycouch
Json short manual
Bd no sq ldocumento
PostgreSQL 9.2
Lenguajes de Transformación
Evolucion de PostgreSQL hasta 9.4
PostgreSQL: Un motor Impulsado por una comunidad
JSON Support en SQL Server 2016
Mongo db course introduction
Nuevo Document Microsoft Word.docx
Objeto relacional bases datos 2
Evolución y avances del Gestor PostgreSQL
BigData - NoSQL
Jean piere sarumo mongodb
Bdo r en oracle
Publicidad

Último (20)

PDF
Estrategia de apoyo tecnología miguel angel solis
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPT
Que son las redes de computadores y sus partes
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
taller de informática - LEY DE OHM
PPT
introduccion a las_web en el 2025_mejoras.ppt
Estrategia de apoyo tecnología miguel angel solis
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Presentación PASANTIAS AuditorioOO..pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Diapositiva proyecto de vida, materia catedra
historia_web de la creacion de un navegador_presentacion.pptx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Que son las redes de computadores y sus partes
Zarate Quispe Alex aldayir aplicaciones de internet .docx
SAP Transportation Management para LSP, TM140 Col18
Influencia-del-uso-de-redes-sociales.pdf
Plantilla para Diseño de Narrativas Transmedia.pdf
Sesion 1 de microsoft power point - Clase 1
taller de informática - LEY DE OHM
introduccion a las_web en el 2025_mejoras.ppt
Publicidad

Operadores para json en pg 9.2