Re: Fwd: consulta sobre sequencias globales de BDR

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>
Cc: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Fwd: consulta sobre sequencias globales de BDR
Date: 2015-01-31 02:14:08
Message-ID: CAN3Qy4qZPr2YWqyHo+WhMhuyNxeA3pZEPt9vKRiP1YmBggJmhQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Geraldo

Gracias por la sugerencia, si lo monte y configure pero cuando ya iba a
montar un backup de mi base me di cuenta que no es tan transparente: toca
registrar cada entidad y generar una especie de primary key adicionales
.. En fin... y el tema es que ya tengo un esquema con datos existentes
sobre una aplicación existente construida con un ORM (hibernate) entonces
implica muchos cambios.. Me pareció interesante para una aplicación nueva
desde cero ...

Me pareció más fácil migrar al esquema BDR mi aplicación preexistentes con
un esquema complejo con muchos datos..
El ene 30, 2015 6:56 PM, "Gerardo Herzig" <gherzig(at)fmed(dot)uba(dot)ar> escribió:

> 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" <hivs77(at)gmail(dot)com>
> > Para: "Lista Postgres ES" <pgsql-es-ayuda(at)postgresql(dot)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" < hivs77(at)gmail(dot)com >
> > Fecha: ene 29, 2015 2:49 AM
> > Asunto: consulta sobre sequencias globales de BDR
> > Para: "Lista Postgres ES" < pgsql-es-ayuda(at)postgresql(dot)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
> >
> >
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2015-02-03 04:24:08 Re: Fwd: consulta sobre sequencias globales de BDR
Previous Message Gerardo Herzig 2015-01-30 23:56:33 Re: Fwd: consulta sobre sequencias globales de BDR