Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 29-03-2013
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.939
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Diantre. Estas metiendote en algo que va ser facil o super difícil. Hacer BD distribuidas, es jodido. Hacerlas donde hay multiples escrituras y deben todas sincronizarse a un modelo estable y solido al final, es super super jodido.

De entrada: Lo mejor es simplemente que el cliente compre un mejor internet. Y que la BD este en un hosting aparte. No es una recomendación aleatoria pa ponerla en la lista de lindas ideas. Es la mejor opción, considerando la experiencia de muchos en este campo.

Pero porque hacerlo facil si se puede difícil? Pa eso programamos!!!!

P.D: Estoy en este momento pensando como resolver este mismo tema. Llevo *meses* investigando y mirando a ver si existe una solución *facil*. Pobre de mi.

----

El problema fundamental y mayor lio esta en la parte: "y la conexion se cae, luego se sincroniza" Repasa la paradoja de los 2 generales (Spoiler: Esta demostrado es imposible de resolver satisfactoriamente). Contrasta conque empresas como Apple han intentado resolver el punto, y les va mal. Existen algunas alternativas, como CouchDB -que no es para nada un motor sql- que pueden funcionar.

Osea, si hay operaciones asincronicas y poco fiables, se puede tornar el asunto muy serio. Y lo peor? Si no tienes mucha experiencia podrias no darte cuenta de lo serio hasta que empices a recibir llamadas constantes con quejas de informacion perdida, corrompida u obsoleta.

Enemigo #1: Datos asincronicos

El segundo problema es que hay mas de "una fuente de la verdad". Cuando hay un sistema "maestro:escritura-replica:solo lectura" es relativamente facil de resolver (es por eso que puedes hacer un cluster de BDs). En este modelo, el maestro es la definitiva "fuente de la verdad". Si un cliente esta corrompido, puedes reconstruir y compararlo contra el master, y la perdida de datos es local a solo ese cliente.


Aqui la *patada* es que tu maestro es un general ebrio, y propenso a perderse del radar! Por lo tanto, si el maestro esta fuera de combate, la informacion estara diseminada entre los clientes. Algunos clientes estaran mas adelante que otros, teniendo datos mas ciertos. Si te imaginas lo que implica un general en una batalla, ebrio, dormido, y poco fiable, pues eso es lo que describes.

Enemigo #2: Necesitas que sea un maestro-esclavos y dices que tu maestro es un inutil bueno para nada, a veces.


El tercero y mas comun es si los datos se actualizan simultanea y/o retroactivamente entre los clientes. Osea, 2 clientes pueden modificar el mismo registro, cuando les de la gana. Eso se resuelve facil en un sistema 2 niveles (con bloqueos o actualizaciones optimistas con resolucion de conflictos) pero estas metido con los otros 2.

Si *cada cliente* es dueño de sus propios datos en *independencia* de los demas o si los datos son "append/forward" entonces es *facil* incluso con los 3 lios juntos. Osea, es facil sincronizar solo inserciones. Sincronizar actualizaciones, y borrados, es lo que friega el asunto a niveles epicos.

Enemigo #3: Actualizaciones en conflicto-concurrentes (y dispares en el tiempo, pa rematar de ponerlo bonito).

---------
Reiterando la recomendacion anterior: La arquitectura externa de un sistema es *parte* integral de la eficacia del mismo. Una buena red, un buen configurado servidor, un motor de datos bien tenido, todo eso hace que el sistema opere *bien*. Cuando la infraestructura es correcta, los programas fluyen. Pero es cuando hay que darle vueltas para parchear (hackear) alrededor de las fallas de las infraestructuras que las cosa se ponen feas.

Sincronizar datos es posible. Pero no veo un escenario donde el maestro sea poco fiable y esperar que las cosas salgan bien. Si *definitivamente* es tan dificil pa tu cliente adquirir un mejor internet, la segunda mejor opcion es mover la BD central (el master) a un servidor en internet.

Luego, puedes aplicar varios modelos para sincronizar la informacion, pero es necesario saber un poco mas que tan "freago" es tu caso (ej: como son los datos, si se puede o no particionar por cliente, si hay lios de relaciones, mas bien, un esquema general de como es la BD).

Considera, que este camino es mas esforzado en programacion y testeo. Como te conte, llevo meses evaluando que hacer, porque francamente, preferiria no cojer ese camino (en mi caso, es necesario, si quiero, como deseo, que BestSeller pueda ser usado por cientos de personas con o sin conexion de internet... aunque por otro lado, podria desechar la idea de que funcione sin internet, y !bingo! problema resuelto).
__________________
El malabarista.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Iniciándome en aplicación cliente-servidor+bases datos LoPiTaL Servers 3 06-03-2011 16:45:19
Sincronizar 2 Bases de Datos Interbase Efren2006 SQL 1 09-02-2009 15:30:08
Sincronizar datos de dos bases de datos Neeruu Firebird e Interbase 6 04-05-2008 17:16:33
Sincronizar bases de datos SMTZ Oracle 4 30-11-2006 01:47:46
Como realizar consultas entre dos bases de datos jfgonzalez Conexión con bases de datos 1 20-10-2005 01:52:48


La franja horaria es GMT +2. Ahora son las 22:17:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi