Probaste con postgres-xc? Es un postgres modificado para usarse en entornos 
distribuidos, con soluciones nativas de replicacion y balanceo. Tal vez pueda 
ser util aqui.

http://sourceforge.net/projects/postgres-xc/

Saludos,
Gerardo

----- Mensaje original -----
> De: "Hellmuth Vargas" <hiv...@gmail.com>
> Para: "Lista Postgres ES" <pgsql-es-ayuda@postgresql.org>
> Enviados: Viernes, 30 de Enero 2015 6:27:22
> Asunto: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR
> 
> 
> 
> Hola lista
> 
> No llego el anterior correo, lo reenvío..
> ---------- Mensaje reenviado ----------
> De: "Hellmuth Vargas" < hiv...@gmail.com >
> Fecha: ene 29, 2015 2:49 AM
> Asunto: consulta sobre sequencias globales de BDR
> Para: "Lista Postgres ES" < pgsql-es-ayuda@postgresql.org >
> Cc:
> 
> 
> 
> Hola Lista:
> 
> 
> Estoy realizado pruebas con BDR de PostgreSQL anunciado
> recientemente, comparto una hilo de conversación que sostuve con
> Jaime Casanova, entre otros, sobre el tema especifico del
> comportamiento de secuencias globales. La inquietud surge porque
> trabajo en un call center donde se realizan miles de transacciones
> por segundo de diferentes clientes a un único cluster de base de
> datos PostgreSQL (con replicacion asincronica obviamente), y por
> balanceo de carga, disponibilidad, seguridad entre otros, seria
> extraordinario contar con la replicacion multimaster.
> 
> 
> ------------------------------------------------------------------------------------------------------------------
> 
> 
> 
> Buenos días
> 
> 
> Actualmente me encuentro realizando una prueba con BDR, para esto he
> seguido las pautas descritas en
> 
> 
> https://wiki.postgresql.org/wiki/BDR_Quick_Start
> 
> 
> luego ejecute las siguientes sentencias:
> 
> 
> 
> bdrdemo=# CREATE SEQUENCE seq_tabla2 USING bdr;
> CREATE SEQUENCE
> 
> 
> 
> bdrdemo=# create table prueba2(id bigint primary key default
> nextval('seq_tabla2'), origen text);
> CREATE TABLE
> --servidor 1
> 
> bdrdemo=# insert into prueba2(origen) select 'AAAA' from
> generate_series(0,1) as a(id);
> INSERT 0 2
> 
> 
> 
> --servidor 2
> 
> bdrdemo=# insert into prueba2(origen) select 'BBBB' from
> generate_series(0,1) as a(id);
> INSERT 0 2
> 
> 
> 
> 
> -- Acontinuación envío estas dos sentencias cada una en cada uno de
> los servidores:
> 
> 
> --servidor 1
> 
> 
> 
> 
> bdrdemo=# insert into prueba2(origen) select 'AAAA' from
> generate_series(0,20000) as a(id);
> ERROR: could not find free sequence value for global sequence
> public.seq_tabla2
> HINT: The sequence is refilling from remote nodes. Try again soon.
> Check that all nodes are up if the condition persists.
> 
> 
> --servidor 2
> 
> 
> bdrdemo=# insert into prueba2(origen) select 'BBBB' from
> generate_series(0,20000) as a(id);
> ERROR: could not find free sequence value for global sequence
> public.seq_tabla2
> HINT: The sequence is refilling from remote nodes. Try again soon.
> Check that all nodes are up if the condition persists.
> 
> 
> 
> 
> y genera el error que hay se presenta, toca esperar un buen tiempo
> para que vuelva a estar disponible
> 
> 
> -- servidor 1
> 
> bdrdemo=# select nextval('seq_tabla2');
> ERROR: could not find free sequence value for global sequence
> public.seq_tabla2
> HINT: The sequence is refilling from remote nodes. Try again soon.
> Check that all nodes are up if the condition persists.
> bdrdemo=# select nextval('seq_tabla2');
> ERROR: could not find free sequence value for global sequence
> public.seq_tabla2
> HINT: The sequence is refilling from remote nodes. Try again soon.
> Check that all nodes are up if the condition persists.
> bdrdemo=# select nextval('seq_tabla2a');
> nextval
> ---------
> 10001
> (1 row)
> 
> 
> 
> 
> -- servidor 2
> 
> 
> 
> bdrdemo=# select nextval('seq_tabla2');
> ERROR: could not find free sequence value for global sequence
> public.seq_tabla2
> HINT: The sequence is refilling from remote nodes. Try again soon.
> Check that all nodes are up if the condition persists.
> bdrdemo=# select nextval('seq_tabla2');
> nextval
> ----------
> 14314001
> (1 row)
> 
> 
> 
> 
> 
> 
> -- pero trato nuevamente de enviar el insert masivo y vuelve a
> generar error:
> 
> 
> -- servidor 1
> 
> 
> 
> 
> bdrdemo=# insert into prueba2(origen) select 'AAAA' from
> generate_series(0,20000) as a(id);
> ERROR: could not find free sequence value for global sequence
> public.seq_tabla2
> HINT: The sequence is refilling from remote nodes. Try again soon.
> Check that all nodes are up if the condition persists.
> 
> 
> 
> 
> -- servidor 2
> 
> 
> bdrdemo=# insert into prueba2(origen) select 'BBBB' from
> generate_series(0,20000) as a(id);
> ERROR: could not find free sequence value for global sequence
> public.seq_tabla2
> HINT: The sequence is refilling from remote nodes. Try again soon.
> Check that all nodes are up if the condition persists.
> 
> 
> 
> 
> La pregunta es si este comportamiento es normal? o debo configurar
> algo adicional o estoy haciendo algo mal? LE agradezco de antemano
> su atención, colaboración y tiempo
> 
> 
> 
> 
> 
> ----------------------------------------------------------------------------------------------------------------------
> Jaime Casanova respondio:
> 
> 
> > ---------- Forwarded message ----------
> > From: Hellmuth Vargas
> > To:
> > Cc:
> > Date: Mon, 26 Jan 2015 21:49:55 -0500
> > Subject: consulta sobre BDR
> > 
> [...]
> >> 
> >> -- servidor 1
> >> 
> >> bdrdemo=# insert into prueba2(origen) select 'AAAA' from
> >> generate_series(0,20000) as a(id);
> >> ERROR: could not find free sequence value for global sequence
> >> public.seq_tabla2
> >> HINT: The sequence is refilling from remote nodes. Try again soon.
> >> Check that all nodes are up if the condition persists.
> >> 
> >> 
> >> -- servidor 2
> >> bdrdemo=# insert into prueba2(origen) select 'BBBB' from
> >> generate_series(0,20000) as a(id);
> >> ERROR: could not find free sequence value for global sequence
> >> public.seq_tabla2
> >> HINT: The sequence is refilling from remote nodes. Try again soon.
> >> Check that all nodes are up if the condition persists.
> >> 
> >> 
> >> La pregunta es si este comportamiento es normal? o debo configurar
> >> algo adicional o estoy haciendo algo mal? Le agradezco de
> >> antemano su atención, colaboración y tiempo. Mil Gracias
> >> 
> 
> Si. Completamente normal. Como se explica en
> https://wiki.postgresql.org/wiki/BDR_Global_Sequences las secuencias
> globales deben coordinarse entre todos los nodos y eso toma tiempo.
> 
> Opciones que se sugieren:
> - Secuencias locales, con un offset. Algo como: DEFAULT (('2' ||
> nextval(secuencia))::bigint)
> - UUID
> - Una llave natural coordinada externamente
> 
> 
> 
> -------------------------------------------------------------------------------------------------------------
> 
> 
> 2015-01-28 9:33 GMT-05:00 Hellmuth Vargas :
> > Buenos días Jaime
> > 
> > Ups!! Osea que aún no es aconsejable para entornos de inserción
> > /actualización con mucha concurrencia... Voy a explorar las
> > alternativas
> > que me indica.. Le agradezco mucho su tiempo y atención!!!
> > 
> 
> No creo que ese comportamiento vaya a cambiar, con secuencias
> globales
> (secuencias unicas en *todos* los nodos) tienes dos alternativas:
> 1.- Cada nodo escoge un id que se garantice uno único cada vez, lo
> que
> implica bloquear la secuencia temporalmente en los otros nodos
> mientras se sincroniza, y es casi seguro que habrá conflictos
> frecuentes (por ejemplo si dos nodos incrementan la secuencia al
> mismo
> tiempo) a menos que haya un coordinador que causa aun mas problemas.
> 
> 2.- Se reserva un rango de id's para cada nodo y solo es necesario
> molestar a los otros nodos cuando se requiere solicitar un nuevo
> rango. En ese caso pasará un momento para que la secuencia este
> disponible otra vez.
> 
> Me parece a mi que no tiene mucho sentido usar secuencias globales
> para cosas que incrementan de ese modo, pero no tendrás problemas con
> cosas como id de cliente y cosas así porque no ingresas 1 cliente
> cada
> segundo.
> 
> En documentos igual no quieres usar secuencias globales por que no
> estará ordenado y habrá saltos.
> 
> Si nos cuentas cual es el problema, de preferencia en la lista para
> que otros se beneficien, podrías encontrar una solución apropiada.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> --
> 
> 
> Cordialmente,
> 
> Ing. Hellmuth I. Vargas S.
> Esp. Telemática y Negocios por Internet
> Oracle Database 10g Administrator Certified Associate
> 
> EnterpriseDB Certified PostgreSQL 9.3 Associate
> 
>

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a