====== Estructura de Tablas ====== \\ ===== Réplica de Datos===== ===== Introducción ===== A diferencia de otros sistemas de réplica existentes, la réplica XOne es capaz de enfrentar distintos Sistemas Gestores de Base de Datos.\\ Para que los dispositivos puedan replicar, deben tener las tablas necesarias, que se explican más abajo, y la configuración correcta del archivo license.ini. ===== Tablas Necesarias ===== \\ La réplica necesita las siguientes tablas en la Base de Datos para su correcto funcionamiento:\\ \\ | **REPLICA** ^ CLIENTE ^ OBSERVACIONES ^ ^ OBLIGATORIAS | master_replica_queue \\ rl | - Aquí estan todas y cada una de las operaciones realizadas en la aplicación, ya sean //insert//, //update// o //delete//. Una vez que las replican al servidor y son confirmadas, se borran de la tabla, por lo que en la tabla solo están aquellas operaciones que no se han replicado al servidor. | ^ FICHEROS |master_replica_fields \\ master_replica_files | - Hay que configurar un campo en la tabla master_replica_slave con la ruta donde se guardan los ficheros en el servidor (Recordar dar permisos a la carpeta). | ===== Descripción de las Tablas ===== ==== Tablas Obligatorias ==== * **master_replica_queue**: * En el cliente contiene las operaciones pendientes de replicar hacia el servidor. * **rl**: El corazón de la réplica, contiene las relaciones entre tablas del fichero mappings.xml de forma que el servidor de réplica sea capaz de mantener la integridad referencial de las operaciones replicadas. CGSOFT provee de una herramienta que analiza el fichero mappings.xml y genera ésta tabla. ==== Tablas para Réplica de Ficheros ==== * **master_replica_fields**: Información de las tablas y los campos donde se almacena el nombre del fichero a replicar. * **master_replica_files**: No se configura nada, es el historial o queue de la réplica de ficheros. ===== master_replica_queue ===== Los campos principales de la tabla son los siguientes: | **CAMPO** ^ TIPO ^ OBLIGATORIO ^ OBSERVACIONES ^ ^ ID | INT (11) | Sí (indice) | Autonumérico | ^ ROWID | VARCHAR (50) | Si (indice) | Identificador único del registro en toda la BD (En Oracle palabra reservada, usar CGSROWID) | ^ OPERID | VARCHAR (65) | Sí (indice) | Identificador único de la operación sobre el registro anterior | ^ TIMESTAMP | VARCHAR (25) | Sí | Fecha y Hora a la que se generó la operación en el cliente | ^ OPER | INT (11) | Sí | Tipo de operación a replicar 1-Insert 2-Delete y 3-Update | ^ MID | INT (11) | Sí (indice) | Identificador del Cliente que realiza la operación | ^ SQL | TEXT | Sí | Sentencia SQL ejecutada (En MYSQL 5.0 palabra reservada, usar CGSSQL) | ^ DMID | INT (11) | Sí (indice) | Operación generada por el servidor dirigida para un cliente concreto | ^ CONDITIONAL | INT (11) | Sí | Para establecer condicionalidad simple | ^ TBL | VARCHAR (50) | Sólo para Select. Agrupada| Se utiliza para la selectividad agrupada (MYSQL 4.0 NO, sólo DBMS que admitan Subconsultas) | ^ DISABLED | INT (11) | Sólo para Lotes | Se pone a 1 si no queremos que se replique una instrucción determinada | ^ DMIDPR | INT (11) | Sólo para Lotes | Debe existir, utilizado internamente. | ===== rl ===== \\ Como ya se ha comentado anteriormente, esta tabla es el corazón de la réplica, contiene las relaciones entre tablas de forma que al replicar operaciones hacia los clientes, se haga con los valores . \\ \\ NOTA: Si cambia la RL, hay que reiniciar el servicio de réplica. (En android se podría poner un license.ini con alguna modificación y se vuelve a recargar toda la configuración de réplica) \\ \\ Los campos principales de la tabla son los siguientes:\\ \\ | **CAMPO** ^ TIPO ^ OBLIGATORIO ^ OBSERVACIONES ^ ^ ID | INT(11) | Sí (indice) | Autonumérico | ^ T1 | VARCHAR(50) | Si | Nombre de la tabla origen de la relación. | ^ F1 | VARCHAR(50) | Si | Campo ID para relacionar con la tabla destino. | ^ T2 | VARCHAR(50) | Si | Nombre de la tabla destino de la relación. | ^ F2 | VARCHAR(50) | Si | Campo ID de la tabla destino. | ^ T | VARCHAR(50) | ?? | ???? | ^ CND | VARCHAR(50) | ?? | ???? |