Foros del Web » Programando para Internet » PHP »

Sincronizar 2 bases de datos

Estas en el tema de Sincronizar 2 bases de datos en el foro de PHP en Foros del Web. Que tal, estoy desarrollando un punto de venta basado en la nube con posibilidad de correrlo en local o al menos eso se planea. Mi ...
  #1 (permalink)  
Antiguo 12/02/2015, 19:22
Avatar de Alexhg42  
Fecha de Ingreso: febrero-2015
Mensajes: 33
Antigüedad: 9 años, 2 meses
Puntos: 2
Pregunta Sincronizar 2 bases de datos

Que tal, estoy desarrollando un punto de venta basado en la nube con posibilidad de correrlo en local o al menos eso se planea.
Mi duda es, si quiero tener un local host con una base de datos y a la vez que este se sincronice con la de algún servidor sin necesidad de tener un 'maestro' y un 'esclavo', como le haría? lo que pasa es que quiero que las 2 db se sincronicen mutuamente ya que las dos se estarian usando en tiempo real.

Supongamos que la sucursal A esta utilizando la base de datos y a su vez la sucursal B tambien lo hace, al final del dia se tienen que "sincronizar" las bases de datos entre si, que comparen si tienen los mismos resultados y agregarse los faltantes. La verdad no se si me explico muy bien, cualquier duda pregunten. gracias.
saludos.
  #2 (permalink)  
Antiguo 12/02/2015, 19:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sinconizar 2 bases de datos

Podrías crear un web-service para eso.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/02/2015, 04:28
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Sinconizar 2 bases de datos

Cita:
Iniciado por Alexhg42 Ver Mensaje
Que tal, estoy desarrollando un punto de venta basado en la nube con posibilidad de correrlo en local o al menos eso se planea.
Mi duda es, si quiero tener un local host con una base de datos y a la vez que este se sincronice con la de algún servidor sin necesidad de tener un 'maestro' y un 'esclavo', como le haría? lo que pasa es que quiero que las 2 db se sincronicen mutuamente ya que las dos se estarian usando en tiempo real.

Supongamos que la sucursal A esta utilizando la base de datos y a su vez la sucursal B tambien lo hace, al final del dia se tienen que "sincronizar" las bases de datos entre si, que comparen si tienen los mismos resultados y agregarse los faltantes. La verdad no se si me explico muy bien, cualquier duda pregunten. gracias.
saludos.
Cuidado con eso..Depende muchisimo del esquema de tablas que tengas...

Siempre que el modo de uso de esas tablas sea "añadir registro", bueno, pues más o menos, lo puedes hacer, y con mucho cuidado, porque un bug en ese sistema puede ser muy complicado de arreglar.
Pero, si hay tablas que actualizan o borran registros con más antiguedad que tu proceso de sincronizacion, la cosa se complica...Tienes que escanear todas las filas buscando diferencias..Y el script anterior se complica aún más...

Por supuesto, si no lo haces con un sistema de replicación master-master, cuidado con los autoincrementales..No los puedes usar..cada BD tiene que generar GUIDs siempre que haya cualquier tipo de relación..
  #4 (permalink)  
Antiguo 13/02/2015, 06:58
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Sinconizar 2 bases de datos

La verdad es sumamente complicado hacer una sincronizacion del modo en que lo planteas, suponte que una sucursal crea un producto o articulo este tendra un identificador autonumerico, suponte que la otra sucursal hace lo mismo, tendras que resolver y renumerar los identificadores de ambas tablas de productos o articulos y si tienen facturacion, compras, transferencias, devoluciones etc la cosa se complica en exceso, ahoooora si no trabajas con id autonumerico lo cual no es recomendable podría ser posible, dependiendo de tu esquema.

Ahora suponte el siguiente esquema tener una base de datos con datos compartidos(nuve) productos, clientes, proveedores, cta cte, y todos los datos que se comparte entre sucursales etc y otra base de datos para el centro o sucursal (local) es decir todo lo referente a ventas, compras, transferencias, recibos, stock y manejarlo localmente, ahi si resulta factible sincronizar, te explico mejor el esquema

1 dbase con datos compartidos y accesible por ambas sucursales (nuve/internet)
1 dbase con datos de la sucursal1, con registros de compras, ventas, transf. cobros etc.
1 dbase con datos de la sucursal2, con registros de compras, ventas, transf.

en ese caso podrías hacer la sincronizacion manual diariamente.
  #5 (permalink)  
Antiguo 13/02/2015, 10:13
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Sincronizar 2 bases de datos

Las dos base de datos comparten el mismo modelo ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 13/02/2015, 11:09
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Sincronizar 2 bases de datos

Cita:
Iniciado por hhs Ver Mensaje
Las dos base de datos comparten el mismo modelo ?
Efectivamente las bases de datos para cada sucursal tiene la misma estructura y diferente contenido, no asi la base de datos compartida que tendra las tablas, productos, clientes, proveedores etc es decir las tablas primarias para la base de datos de cada sucursal.

Entonces cuando grabas un comprobante de una sucursal solo cambias la base de datos, por ejemplo al hacer un proceso de facturacion pones en un combo la lista de sucursales y ese valor utilizas para elegir en que base de datos grabaras el comprobante, funciona bien.

Hice mi tesis sobre un proyecto asi y efectivamente al separar los datos de sucursales en diferente dbases se gana velocidad de lectura y escritura, pero complica la obtención de la información de varias sucursales a la vez, pero agiliza obtención de informacion de una a la vez.

Si bien mi proyecto lo hice pensando en un mismo host para todas las dbases, este esquema podría funcionar bien teoricamente separando la base de datos compartida en un host y la de cada sucursal en otra.
  #7 (permalink)  
Antiguo 13/02/2015, 11:44
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Sincronizar 2 bases de datos

Algo muy importante que olvide mencionar, con este esquema es imposible crear claves foraneas por ejemplo de productos y el detalle de ventas en las tablas de sucursales por tratarse de diferentes dbases pero PHP puede ser responsable de validar estos registros es decir PHP puede controlar que el id en detalle de ventas sea correspondido con uno de la tabla producto
  #8 (permalink)  
Antiguo 13/02/2015, 12:09
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Sincronizar 2 bases de datos

Gracias por la explicación orodrf pero la pregunta era para Alexhg42. Entiendo tu punto por ejemplo SOA y REST requieren la perspectiva que mencionas, pero requieren tomar en consideración varios aspectos y la implementación no es trivial. Mi pregunta va relacionada a esta parte en el mensaje inicial de Alexhg42:
Cita:
Mi duda es, si quiero tener un local host con una base de datos y a la vez que este se sincronice con la de algún servidor sin necesidad de tener un 'maestro' y un 'esclavo', como le haría? lo que pasa es que quiero que las 2 db se sincronicen mutuamente ya que las dos se estarian usando en tiempo real.
Para lo que el menciona no existe solución sencilla. Lo mas cercano a eso seria utilizar replicación o clustering (habría que ver que opina alguien con mas experiencia) ya que cualquier otra opción va requerir cambios que afectan el modelo y el desarrollo actual de la aplicación.
No acostumbro a aconsejar en situaciones complejas, pero lo mas sano para el en este momento es que siga el esquema monolítico y escale de forma horizontal y que planifique la separación de la aplicación que se acerque a lo que requiere.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Última edición por hhs; 13/02/2015 a las 12:43
  #9 (permalink)  
Antiguo 13/02/2015, 17:57
Avatar de Alexhg42  
Fecha de Ingreso: febrero-2015
Mensajes: 33
Antigüedad: 9 años, 2 meses
Puntos: 2
Respuesta: Sincronizar 2 bases de datos

Que tal, si, usarían el mismo modelo, serian idénticas, solo variaría la información por un periodo corto en lo que una se vuelve a conectar a Internet. estoy consciente que con id's auto incrementables esto seria un problema porque podría ser que la sucursal 1 agregue un producto en el id 1 y al mismo tiempo la sucursal 2 suba otro producto diferente con el mismo id, al momento de comparar bases de datos abría una incongruencia haciendo que uno de los dos productos se eliminase. por ese punto estoy también investigando si hay forma de recorrer una base de datos sin necesidad de que los id auto incrementables. gracias por sus respuestas.

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:04.