[IRC-DEV] Sobre UDB.

MrIRC internet.relay.chat at gmail.com
Thu Mar 31 12:59:54 CEST 2005


Hace unos cuantos días que intento escribir esto pero no lo acabo haciendo.
He estado estudiando el protocolo de las UDB (Unreal Data Base) de 
Trocotronic, y encuentro un fallo en el protocolo de sincronización.
Por lo que yo entiendo, el sistema se basa en que uno de los nodos va a 
estar siempre al día. De este modo, cuando las horas no coinciden, se 
agregan las lineas faltantes y si los hash fallan, se elimina la base 
antigua y se recupera de la nueva.
Problemas:
  - Si se actualizan dos nodos durante un split, se perderán los datos del 
penúltimo en actualizarse. Desaparecen el el limbo, debido a que se eliminan 
las bases de datos. Debería poderse actualizar por bloques, de manera que se 
combinasen los datos. Las zonas distintas deberían agregarse, escogiendo la 
del último en actualizarse. Al respecto sería útil que al final de cada 
campo se situara un valor del momento de la última modificación. Como 
recurso "basto" estaría copiar toda la base de datos del servidor remoto y 
enviar seguidamente un OPT (aumentando sus funcionalidades) que eliminase 
los registros duplicados (según la prioridad, la fecha de cada servidor). 
Problemas de esto: los registros borrados durante un split volverían a 
crearse.

 - La actuación de los servidores depende de la fecha GMT en que se informa 
se realizó la última OPTimización. Un servidor mal implementado o con la 
fecha mal (borrado de la BIOS, etc.) desde el que se envíe OPT, establecería 
esa fecha de modificación en todos los servidores. Si algún servidor estaba 
caído/en split, etc. Sustituirá todos los datos de la red por los suyos 
propios (anticuados). Solución: Ningún servidor debería aceptar un OPT con 
una hora menor que la que tiene actualmente.


Enviado por: Trocotronic.
> Bueno pues ya que me das cuerda, voy a exponer un proyecto que hace 
> bastantes meses llevo manteniendo.
> Es para UnrealIRCd y se nombra UDB (Unreal Data Base).
(...)
> Otro tema muy dispar es el protocolo o método de propagación. No me 
> extenderé mucho pero consta de varios comandos todos emitidos por el 
> comando irc DB:
>
> - INF: información de un bloque.
> - RES: resumen de un bloque.
> - INS: inserción de un bloque.
> - DEL: eliminación de un bloque.
> - OPT: optimización de un bloque.
> - ERR: error en el último comando recibido.
>
> No me voy a extender mucho más pero, por si alguien le interesa, puede 
> encontrar todo esto en http://www.rallados.net/trabajos.php?item=udb , con 
> los fuentes y el esquema del protocolo.




More information about the IRC-Dev mailing list