RE: Problemas al actualizar una BD

From: Ricardo Martin Gomez <rimartingomez(at)hotmail(dot)com>
To: Carlos Mendez <lucas1850(at)gmail(dot)com>, Omar Zeballos <ozeballos(at)kantutani(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Problemas al actualizar una BD
Date: 2008-03-13 11:31:53
Message-ID: BAY111-W277EB9217A2FF08AE3C846A3090@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Carlos, casualmente me toco hacer algo parecido, mi solución utiliza ampliamente dblink, ya que todos las maquinas tienen acceso a internet y al servidor usando ip fijas. Ahora bien, tu idea de como hacerlo es bastante logica y acertada pero debes tener cuidado. Lo que deberias hacer es utilizar funciones y que cada funcion inserte o actulice los datos segun cual sea la idea, teniendo en cuenta que las tablas que tienen FK asociadas primero deberias insertar/actualizar la tabla que contiene la PK para que toda tu funcion de importación no falle.
Yo tenia una restricción que habia datos que se agregaban/actulizaban en el servidor y otros que lo hacian solo en los clientes y para solucionar esto cree columnas de actualizacion de tipo timestamp para restringir el tamaño de los datos que traia y no traer siempre todos los datos como es tu opcion.

Otra solución que me parece conveniente segun tu problema es tratar de generar un archivo de transacciones por BD y solo mandar las mismas hacia el servidor, yo pense en esta opcion para mi solucion pero no era factible debido a que necesitaba una persona que este ahi bajando estos archivos y corriendolos para que esten sincronizados. En cambio se necesitaba automizar por eso es que cree fuinciones que se podrian utilizar y programarlas quiza con el cron o con el at.

Espero que te sirve de ayuda al menos como para fijar un rumbo. -
Saludos
Martin.

Date: Mon, 21 Jan 2008 22:45:59 -0400
From: lucas1850(at)gmail(dot)com
To: ozeballos(at)kantutani(dot)com; pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: [pgsql-es-ayuda] Problemas al actualizar una BD

Hola Omar, Muchas gracias por responder,

Te dire lo que estoy haciendo y dime lo que opinas,

Cuando me den el backup de un colegio lo cargare en una base de datos llamada intermedia, las tablas del backup tendran un sufijo(para diferenciarlas de las tablas de la bd intermedia) yo le puse una "t"(de temporal), es decir el backup tendra una tabla llamada alumnos_t y la bd intermedia ya tendra una tabla llamada alumnos, el espejo de la tabla alumnos_t sera la tabla alumnos, todas la tablas tendran sus espejos(es decir dentro de la bd intermedia habra 2 conjuntos de tablas relacionadas e independientes, un conjunto de tablas del backup que se subira y otro conjunto que ya tendra la bd intermedia ), los datos de la tabla alumnos_t se insertaran o actualizaran en la tabla alumnos y de la misma manera las otras tablas, esto todavia lo estoy investigando para que se inserte o actualice sin errores, despues que se cargue o actualice sin errores realizar una replica de las tablas espejo de la bd intermedia hacia las tablas de la bd principal,

eso es lo que pienso hacer, pero no se si sera factible, desconozco slony y recien estoy realizando esto de replicas.

Agradecere cualquier sugerencia o ayuda,
saludos.


El día 21/01/08, Omar Zeballos <ozeballos(at)kantutani(dot)com> escribió:

Estimado Carlos,
no creo que Slony pueda resolver tu problema, y si lo hace tu configuracion de replicacion debera ser muy compleja y apesar de eso deberas realizar actividades manuales.
La unica solucion que puedo divisar es replantear el diseño de la BD, esta base debera tener un modelo de Importacion y Exportacion de acuerdo un Lote para poder determinar cuando se migro cierta informacion, al mismo tiempo este sistema de I/O debera validar informacion borrada y o eliminada o simplemente en la importacion una validacion del PK para no insertar pero si pisar el resto y si no existe insertar y asi so so so. (ojo no olvidar que unidad es la dueña de la informacion)


Com ves es un problema de Diseño y tu sistema si va ha tropezar con este problema por lo que te recomiendo diseñar esto dentro tu sistema.

Saludos,
Omar

From: Carlos Mendez

To: Alvaro Herrera
Cc: Julio Cesar Sánchez González
; Raul Andres Duque ;
pgsql-es-ayuda(at)postgresql(dot)org
Sent: Thursday, January 17, 2008 4:59 PM
Subject: Re: [pgsql-es-ayuda] Problemas al actualizar una BD


Hola, Gracias por responder,

les comentare un poco acerca del proyecto, es un sistema web que gestionara a nivel departamental es decir abarcara colegios de escuelas de las ciudades, de la zona rural, de los poblados, etc.
el sistema concentrara la informacion de alrededor de 100.000 alumnos, 4000 profesores y 500 colegios, adicionando a esto las notas, asistencia, materias, cursos, etc.
Y como dije anteriormente algunos colegios o mejor dicho la mayoria no tienen conexion a internet, por lo tanto me daran la informacion en un cd o disquett, y se lo cargara al servidor central.

Por lo tanto este proceso del backup o no se como llamarlo, es crucial, vital para el proyecto, sin este el proyecto no sera viable,

Gracias por recomendarme slony, y ya lo estoy investigando, pero quiero preguntarles despues de decirles los alcances y pormenores del proyecto si Slony se adapta a lo que quiero hacer, y si no se adapta por favor una sugerencia para afrontar este proyecto.


A continuacion coloco la descripcion del problema que anteriormente ya mencione:

Estoy realizando un sistema que centraliza en un servidor toda la informacion de los colegios como ser alumnos, profesores y notas, los colegios se conectan al servidor central a traves de internet, pero sucede que no todos los colegios tienen internet y me dijeron que no dejara de lado a esos colegios, bueno, lo que a mi se me ocurre es instalarles un sistema local a cada colegio que no tenga conexion a internet y despues pedirles un backup de su bd local y subir este backup a la bd del servidor central.


aqui viene el problema,
cuando yo intento subir un backup que tiene registros que ya estan en la bd central en el sistema no los carga me dice error lo cual esta muy bien, pero tampoco inserta los registros nuevos lo cual yo quisiera, es decir supongamos que me dieron un primer backup de un colegio que tiene la tabla alumnos con 10 registros, supongo que ese bakcup se subira sin ningun problema al servidor central porque son registros nuevos, pasado algun tiempo me daran el segundo backup del colegio para que lo cargue al servidor central y supongamos que contiene en la tabla alumnos 15 registros(10 antiguos y 5 nuevos), cuando intente subir esta tabla me dara error pues la bd central ya tiene los 10 primeros registros y no insertara los 5 nuevos registros que no tiene,

lo que busco es que cuando intente subir el backup, se inserte solo los nuevos registros es decir aquellos registros que estan en el backup de la bd del colegio y que no esten en la bd central, y que si en el colegio se modifico algun registro antiguo este tambien se pueda modificar cuando se suba el backup.

En resumen que se inserte solo los nuevos registros, que se modifiquen los que se han modificado en la la bd del colegio, y que los registros que estan contenidos en el backup pero que ya estan en la bd central simplemente sean ignorados y que no salga error y que solo se inserten los registros nuevos o modificados


¿Como hago esto? existen funciones o comandos especiales de pgsql para realizar el backup o para realizar la subida a la base de datos central de manera que haga lo que deseo? o algun software especial?

Gracias por la ayuda,
saludos.

_________________________________________________________________
MSN Video.
http://video.msn.com/?mkt=es-es

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rodriguez Fernando 2008-03-13 11:39:56 Re: Replicacion y alta disponibilidad
Previous Message Ricardo Martin Gomez 2008-03-13 11:10:06 RE: actualizar columna fecha