Hola Iván, me alegra que vayas avanzando bien.
Respecto a las claves únicas. Tienes varias opciones.
1) Utilizar un UUID como clave primaria en todas las tablas (Es una solución sencilla, en la que no te tienes que preocupar de más problemas. Yo no la utilizo porqué es incómoda a la hora de trabajar con los datos, si quieres lanzar una consulta para ver todas las líneas de una factura, tendrás que escribir una consulta con una clave secundaria de 16 dígitos).
http://www.firebirdfaq.org/faq98/
NOTA: Estos UUID se guardan en campos varchar(16) con el charset OCTETS.
2) Seguir utilizando un Entero largo, pero en este caso te tienes que asegurar de que no pueden entrar en conflicto los números asignados en las distintas ubicaciones en Replicación.
Para solventar el punto 2) algunos amigos lo han solventado reservando paquetes. Es decir, el primer servidor asignará claves primarias del 1 al 10.000, el segundo servidor del 10.001 al 20.000, etc. ...
A mi me parece muy laborioso, y además tienes que tener en cuenta de que un servidor puede agotar todas las claves primarias que tenía asignadas, y se le ha de asignar un nuevo paquete.
Personalmente he optado por añadir un sufijo a las claves primarias. Es decir todos los claves primarias creadas por el primer servidor acaban en 01, las creadas por el segundo acaban en 02, etc. ...
Para ello tengo una tabla CONFIG, donde se guarda el campo UBICACION (que indica si es el servidor 1, 2, 3, 4, ...).
Asi pués, en el momento de asignar una nueva clave primaria, la calculo de la forma habitual, con un generador, pero mediante una consulta de este estilo :
select gen_id(GENERADOR_TABLA, 1) * 100 + UBICACION
from CONFIG