Re: Estructura tipo diccionario o hashset

From: José Hurtado <jhurtadom(at)gmail(dot)com>
To: Francisco Olarte <folarte(at)peoplecall(dot)com>
Cc: Jaime Casanova <jaime(dot)casanova(at)2ndquadrant(dot)com>, POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Estructura tipo diccionario o hashset
Date: 2016-08-26 08:59:52
Message-ID: CAOF-YQAH04YHxD3T0yTrMjzN3nj-tR9Xta-fpTtxELC2ntvzHA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Francisco,
He probado con json y jsonb, el incoveniente es que son valores inmutables
y una vez que has creado un json es dificil agregarle mas propiedades,
hasta la versión 9.5 no hay funciones para agregar o eliminar una propiedad
incluso devolviendo una nueva instancia.
Para resolverlo agregué la extensión plv8, que es el motor v8 de javascript
de Chrome (https://github.com/plv8/plv8) pero creo que hay una pequeña
penalización en la conversión de tipos que haciendo muchas llamadas se
llega a notar en el rendimiento. Sin embargo si debo reconocer que en
tratamiendo de estructuras json complejas es mejor hacerlo en funciones con
plv8. También está el tema que hasta el momento plv8 no soporta jsonb, sólo
json por lo resulta mejor mantener la información en json si se va a tratar
con plv8.
Mi propuesta va en el sentido de evitar ese salto de lenguaje que implica
una conversión de tipos usando una estructura de datos básica en muchos
lenguajes y util para resolver ciertos algoritmos.
Gracias por tu respuesta,
Un saludo.

El 24 de agosto de 2016, 14:53, Francisco Olarte <folarte(at)peoplecall(dot)com>
escribió:

> 2016-08-24 14:16 GMT+02:00 Jaime Casanova <jaime(dot)casanova(at)2ndquadrant(dot)com
> >:
> > 2016-08-24 6:52 GMT-05:00 José Hurtado <jhurtadom(at)gmail(dot)com>:
> >> Creo que vendría bien tener algo parecido a:
> >>
> >> DECLARE
> >> dic1 HASHSET(varchar, schema_name.table_name);
> >> -- format: HASHSET(anytype, anytype)
> >> ...
> >> BEGIN
> >> ...
> >> ...
> >> IF (hashset_has_key(dic1, "alfa") THEN
> >> dic1["alfa"] := (val1, val2)::schema_name.table_name;
> >> -- O: hashset_update(dic1, "alfa", (val1,
> >> val2)::schema_name.table_name);
> >> ELSE
> >> hashset_add(dic1, "alfa", (val1, val2)::schema_name.table_name);
> >> END IF;
> >> ...
> >> hashset_remove(dic1, "alfa");
> > Podrías por favro fingir que no todos somos expertos es Java (o al
> > menos creo que esa construcción es de Java o no?) e indicarnos que
> > haría ese HASHSET ?
>
>
> Tampoco creo que el OP lo sea (experto en). Parece que lo que quiere
> es un diccionario, mapa en java, con claves de tipo varchar.
> Normalmente un SET es un conjunto, es decir, solo claves, y el hash es
> un detalle de implementacion, puestos a pedir deberia pedir un
> diccionario cualquiera. Ademas parece que lo quiere tipo generic de
> java/ template de c++. Malamente se va a poder hacer de una forma
> facil.
>
> De todas formas, teniendo jsonb, y sus funciones row_to_json y demas
> deberia poder hacer lo que quiere sin problemas, un pelo mas largo,
> pero con 4 funciones de apoyo le saldria.
>
> Igual tiene mas suerte preguntandolo en -hackers, pero desde luego
> este tiene toda la pinta de un http://xyproblem.info/ unido a una mala
> eleccion de lenguage (plperl/plpython/pltcl parecen mejores si
> necesita ese tupo de cosas) o de sitio en el que meter la logica.
>
> Francisco Olarte.
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message José Hurtado 2016-08-26 09:02:04 Re: Estructura tipo diccionario o hashset
Previous Message José Hurtado 2016-08-26 08:50:23 Re: Estructura tipo diccionario o hashset