Table de consignation des événements. Novell Pilote DirXML pour JDBC
Novell Confidential Manual (FRA) 28 October 2003
Événements d’interrogation
Les événements d’interrogation sont assignés à une instruction de sélection pour la table ou la vue parent et zéro ou une instruction de sélection pour chaque table enfant.
Événements de déplacement et de réassignation de nom
Les événements de déplacement et de réassignation de nom sont NOOP (« No Operation »). Ils ne sont jamais assignés à des instructions.
Table de consignation des événements
C’est dans la table de consignation des événements que les événements du canal Éditeur sont stockés. Cette section décrit la structure et les limites de cette table.
Vous pouvez personnaliser le nom de la table de consignation des événements et ses colonnes, afin d’éviter des conflits avec les mots de base de données réservés. L’ordre, le nombre et les types de données de ses colonnes doivent cependant rester constants. Dans les bases de données dans lesquelles la position n’a aucune importance, l’ordre est déterminé par comparaison lexicographique.
Colonnes de la table de consignation des événements
record_id
La colonne record_id
sert à identifier de façon unique les lignes de la table de consignation des événements. Cette colonne doit contenir des valeurs entières uniques séquentielles, croissantes et positives.
status
:
La colonne status
indique l’état d’une ligne donnée. Ses valeurs possibles sont les suivantes
'N' = nouveau
'U' = inconnu
'S' = réussi
'W' = avertissement
'F' = fatal
'E' = erreur
Toutes les lignes insérées dans la table de consignation des événements doivent avoir la valeur status
'N' pour être traitées. Les autres caractères d’état sont utilisés uniquement par le canal
Éditeur. Tous les autres caractères sont réservés à un usage ultérieur.
Remarque :
ces valeurs d’état respectent la casse.
58
DirXML Driver for JDBC Implementation Guide (Guide d’implémentation du pilote DirXML pour JDBC)
Novell Confidential Manual (FRA) 28 October 2003
event_type
Les valeurs de cette colonne doivent être comprises entre 1 et 8. Les types d’événements appartiennent à deux catégories principales : par champ (1 à 3, 7 et 8) et par ligne (4 à 6). Les
événements par champ présentent une plus grande granularité que les événements par ligne, mais prennent davantage de place dans la table de consignation. Les événements par ligne présentent une granularité plus fine et exigent moins d’espace. Les types d’événements par champ peuvent être considérés comme par attribut. Les types d’événements par ligne peuvent
être considérés comme par objet.
Les types d’événements peuvent également être regroupés en deux autres catégories : avec retour d’interrogation (5 à 8) et sans retour d’interrogation (1 à 4). Les événements avec retour d’interrogation sont utiles lors de la synchronisation de données de type binaire et chaîne en grande quantité.
En général, une combinaison de types d’événements de chaque catégorie permet d’obtenir les meilleurs résultats en termes de temps, d’espace et de complexité.
Les valeurs suivantes permettent une classification des types d’événements. Tous les autres nombres sont réservés à un usage ultérieur.
1 = insertion de champ
2 = mise à jour de champ
3 = mise à jour de champ (avec suppression de toutes les valeurs)
4 = suppression de ligne
5 = insertion de ligne (avec retour d’interrogation)
6 = mise à jour de ligne (avec retour d’interrogation)
7 = insertion de champ (avec retour d’interrogation)
8 = mise à jour de champ (avec retour d’interrogation)
event_time
Réservé à un usage ultérieur. Cette valeur ne doit pas être vide.
perpetrator
L’utilisateur qui est à l’origine de l’événement. Une valeur vide est interprétée comme désignant un autre utilisateur que l’utilisateur du pilote. À ce titre, les enregistrements avec perpetrator
= NULL ou !nomutilisateur du pilote sont publiés. Les enregistrements avec perpetrator
= nomutilisateur du pilote ne sont pas publiés, sauf si le paramètre du canal
Éditeur Autoriser le retour en boucle ? a la valeur oui.
table_name
Le nom de la table ou de la vue dans laquelle l’événement s’est produit.
table_key
Les valeurs de cette colonne doivent être formatées exactement de la même façon dans tous les déclencheurs d’une classe de base de données logique. Par exemple,
nom de colonne de clé primaire = valeur + nom de colonne de clé primaire = valeur . . .
Pour des pilotes préconfigurés indirects, par exemple, la valeur de cette colonne serait empno=1
.
Pour des pilotes préconfigurés directs, par exemple, la valeur de cette colonne serait pk_empno=1
.
Configuration avancée du pilote
59
Novell Confidential Manual (FRA) 28 October 2003
Remarque :
les valeurs de clé primaire placées dans le champ table_key
doivent être délimitées
(c’est-à-dire, mises entre guillemets) si elles contiennent les caractères suivants : , ; ' + = \ " < >
Des différences de remplissage ou de formatage peuvent entraîner un traitement des
événements dans le désordre. Dans un souci de performance, il convient de supprimer tout espace inutile dans les valeurs numériques. (Par exemple, « empno=1 » est préférable à
« empno= 1 ».)
column_name
Le nom de la colonne qui a été modifiée. Cette colonne n’est utilisée que par les types d’événements par champ (1 à 3, 7 et 8). Bien que cette colonne soit utilisée uniquement pour les types d’événements par champ, elle doit toujours figurer dans la table de consignation des
événements. Dans le cas contraire, l’objet Éditeur provoquera l’arrêt du pilote.
old_value
Le nom de colonne de l’ancienne valeur n’est utilisé que par les types d’événements par champ, sans retour d’interrogation (1 à 3). Bien que cette colonne soit utilisée uniquement pour ces types d’événements, elle doit toujours figurer dans la table de consignation des
événements. Dans le cas contraire, l’objet Éditeur provoquera l’arrêt du pilote.
new_value
La nouvelle valeur du champ. Le nom de colonne de la nouvelle valeur n’est utilisé que par les types d’événements par champ, sans retour d’interrogation (1 à 3). Bien que cette colonne soit utilisée uniquement pour ces types d’événements, elle doit toujours figurer dans la table de consignation des événements. Dans le cas contraire, l’objet Éditeur provoquera l’arrêt du pilote.
Types d’événement
Cette section décrit de façon plus détaillée les différents types d’événements et leur interprétation par l’objet Éditeur.
Le tableau ci-dessous présente la corrélation de base entre les types d’événements du canal Éditeur et le code XML généré par l’objet Éditeur.
Type d’événement
insert update delete
XML résultant
<add>
<modify>
<delete>
L’exemple ci-dessous illustre le code XML généré par l’objet Éditeur pour chaque type possible des événements consignés dans la table emp
.
CREATE TABLE dirxml.emp
(
empno NUMERIC(8) NOT NULL,
fname VARCHAR2(64),
photo LONGRAW,
CONSTRAINT pk_emp_empno PRIMARY KEY(empno)
);
60
DirXML Driver for JDBC Implementation Guide (Guide d’implémentation du pilote DirXML pour JDBC)
Novell Confidential Manual (FRA) 28 October 2003
1
1
event_type
1
2
2
event_type
2
Le tableau ci-dessous montre le contenu initial de emp
après l’insertion d’une nouvelle ligne :
empno
1
fname
Jacques
lname
Frost
photo
0xAAAA
Le tableau ci-dessous montre le contenu actuel de emp
après la mise à jour de la ligne :
empno
1
fname
Jean
lname
Untel
photo
0xBBBB
table
emp emp emp
1. Insertion de champ
Le tableau ci-dessous montre le contenu de la table de consignation des événements après l’insertion d’une nouvelle ligne dans la table emp
. La valeur de la colonne photo
a été chiffrée au format Base64. L’équivalent codé au format Base64 de 0xAAAA est qqo=.
table_key
empno=1 empno=1 empno=1
column_name
fname lname photo
old_value
NULL
NULL
NULL
new_value
Jacques
Frost qqo=
table
emp emp emp
Le XML généré par l’Éditeur serait :
<add class-name="emp">
<association>empno=1,table=emp,schema=dirxml
</association>
<add-attr attr-name="fname">
<value type="string">Jack</value>
</add-attr>
<add-attr attr-name="lname">
<value type="string">Frost</value>
</add-attr>
<add-attr attr-name="photo">
<value type="octet">qqo=</value>
</add-attr>
</add>
2. Mise à jour de champ
Le tableau ci-dessous montre le contenu de la table de consignation des événements après la mise à jour de la ligne dans la table emp
: Les valeurs de la colonne photo
ont été chiffrées au format Base64. L’équivalent codé au format Base64 de 0xBBBB est u7s=.
table_key
empno=1 empno=1 empno=1
column_name
fname lname photo
old_value
Jacques
Frost qqo=
new_value
Jean
Untel u7s=
Configuration avancée du pilote
61
Novell Confidential Manual (FRA) 28 October 2003
Le XML généré par l’Éditeur serait :
<modify class-name="emp">
<association>empno=1,table=emp,schema=dirxml
</association>
<modify-attr attr-name="fname">
<remove-value>
<value type="string">Jack</value>
</remove-value>
<add-value>
<value type="string">John</value>
</add-value>
</modify-attr>
<modify-attr attr-name="lname">
<remove-value>
<value type="string">Frost</value>
</remove-value>
<add-value>
<value type="string">Doe</value>
</add-value>
</modify-attr>
<modify-attr attr-name="photo">
<remove-value>
<value type="octet">qqo=</value>
</remove-value>
<add-value>
<value type="octet">u7s=</value>
</add-value>
</modify-attr>
</modify>
3. Mise à jour de champ (avec suppression de toutes les valeurs)
Le tableau ci-dessous montre le contenu de la table de consignation des événements après la mise à jour de la ligne dans la table emp
: La valeur de la colonne photo
a été chiffrée au format Base64.
event_type
3
3
3
table
emp emp emp
table_key
empno=1 empno=1 empno=1
column_name
fname lname photo
old_value
Jacques
Frost qqo=
new_value
Jean
Untel u7s=
Le XML généré par l’Éditeur serait :
<modify class-name="emp">
<association>empno=1,table=emp,schema=dirxml
</association>
<modify-attr attr-name="fname">
<remove-all-values/>
<add-value>
<value type="string">John</value>
</add-value>
</modify-attr>
<modify-attr attr-name="lname">
<remove-all-values/>
<add-value>
<value type="string">Doe</value>
62
DirXML Driver for JDBC Implementation Guide (Guide d’implémentation du pilote DirXML pour JDBC)
Novell Confidential Manual (FRA) 28 October 2003
</add-value>
</modify-attr>
<modify-attr attr-name="photo">
<remove-all-values/>
<add-value>
<value type="octet">u7s=</value>
</add-value>
</modify-attr>
</modify>
4. Suppression de ligne
Le tableau ci-dessous montre le contenu de la table de consignation des événements après la suppression de la ligne dans la table emp
:
event_type
4
table
emp
table_key
empno=1
column_name
NULL
old_value
NULL
new_value
NULL
Le XML généré par l’Éditeur serait :
<delete class-name="emp">
<association>empno=1,table=emp,schema=dirxml
</association>
</delete>
5. Insertion de ligne (avec retour d’interrogation)
Le tableau ci-dessous montre le contenu de la table de consignation des événements après l’insertion d’une nouvelle ligne dans la table emp
.
event_type table
5 emp
table_key
empno=1
column_name
NULL
old_value
NULL
new_value
NULL
Le XML généré par l’Éditeur figure ci-dessous. Notez que les valeurs reflètent le contenu actuel de la table emp
et pas son contenu initial.
<add class-name="emp">
<association>empno=1,table=emp,schema=dirxml
</association>
<add-attr attr-name="fname">
<value type="string">John</value>
</add-attr>
<add-attr attr-name="lname">
<value type="string">Doe</value>
</add-attr>
<add-attr attr-name="photo">
<value type="octet">u7s=</value>
</add-attr>
</add>
6. Mise à jour de ligne (avec retour d’interrogation)
Le tableau ci-dessous montre le contenu de la table de consignation des événements après la mise à jour de la ligne dans la table emp
:
event_type table
6 emp
table_key
empno=1
column_name
NULL
old_value
NULL
new_value
NULL
Configuration avancée du pilote
63
Novell Confidential Manual (FRA) 28 October 2003
Le XML généré par l’Éditeur figure ci-dessous. Notez que les valeurs reflètent le contenu actuel de la table emp
et pas son contenu initial.
<modify class-name="emp">
<association>empno=1,table=emp,schema=dirxml
</association>
<modify-attr attr-name="fname">
<remove-all-values/>
<add-value>
<value type="string">John</value>
</add-value>
</modify-attr>
<modify-attr attr-name="lname">
<remove-all-values/>
<add-value>
<value type="string">Doe</value>
</add-value>
</modify-attr>
<modify-attr attr-name="photo">
<remove-all-values/>
<add-value>
<value type="octet">u7s=</value>
</add-value>
</modify-attr>
</modify>
7. Insertion de champ (avec retour d’interrogation)
Le tableau ci-dessous montre le contenu de la table de consignation des événements après l’insertion d’une nouvelle ligne dans la table emp
. Les valeurs anciennes et nouvelles sont omises car elles ne sont pas utilisées.
7
7
event_type table
7 emp emp emp
table_key
empno=1 empno=1 empno=1
column_name
fname lname photo
old_value
NULL
NULL
NULL
new_value
NULL
NULL
NULL
Le XML généré par l’Éditeur figure ci-dessous. Notez que les valeurs reflètent le contenu actuel de la table emp
et pas son contenu initial.
<add class-name="emp">
<association>empno=1,table=emp,schema=dirxml
</association>
<add-attr attr-name="fname">
<value type="string">John</value>
</add-attr>
<add-attr attr-name="lname">
<value type="string">Doe</value>
</add-attr>
<add-attr attr-name="photo">
<value type="octet">u7s=</value>
</add-attr>
</add>
64
DirXML Driver for JDBC Implementation Guide (Guide d’implémentation du pilote DirXML pour JDBC)

Öffentlicher Link aktualisiert
Der öffentliche Link zu Ihrem Chat wurde aktualisiert.