| 894 | | entry causes a node (receiver) to query an |
|---|
| 895 | | event provider for events that originate from a specific node, as |
|---|
| 896 | | well as confirmations from every existing node. It requires a |
|---|
| 897 | | <quote>path</quote> to exist so that the receiver (as client) can connect |
|---|
| 898 | | to the provider (as server).</para> |
|---|
| 899 | | |
|---|
| 900 | | <para> Every node in the system must listen for events from every |
|---|
| | 894 | ainsi que les confirmations en provenance des tous les autres noeuds existants. |
|---|
| | 895 | Cela nécessite qu'un <quote>chemin</quote> doit exister pour |
|---|
| | 896 | que le recepteur (le client) puisse se connecter au fournisseur (le serveur).</para> |
|---|
| | 897 | |
|---|
| | 898 | <para> Chaque noeud du systÚme doit écouter les événements |
|---|
| | 899 | de tous les autres noeuds. En rÚgle générale, un abonné |
|---|
| 902 | | (see <xref linkend="stmtsubscribeset"/>) should listen for events |
|---|
| 903 | | of the set's origin on the same provider, where it receives the |
|---|
| 904 | | data from. In turn, the origin of the data set should listen for |
|---|
| 905 | | events from the origin in the opposite direction. A node can |
|---|
| 906 | | listen for events from one and the same origin on different |
|---|
| 907 | | providers at the same time. However, to process |
|---|
| 908 | | <command>SYNC</command> events from that origin, all data |
|---|
| 909 | | providers must have the same or higher sync status, so this will |
|---|
| 910 | | not result in any faster replication behaviour. |
|---|
| | 901 | (voir <xref linkend="stmtsubscribeset"/>) doit écouter les événements |
|---|
| | 902 | d'un ensemble origine sur un fournisseur unique, qui lui envoie |
|---|
| | 903 | les données. En retour, l'origine de l'ensemble de réplication |
|---|
| | 904 | doit écouter les événements dans la direction opposée. |
|---|
| | 905 | Un noeud peut écouter simultanément les événéments d'un même ensemble d'origine |
|---|
| | 906 | en provenance de différents fournisseurs. Cependant pour traiter les |
|---|
| | 907 | événements <command>SYNC</command> de cette ensemble d'origine tous les |
|---|
| | 908 | fournisseurs de données doivent avoir un niveau de synchronisation égal |
|---|
| | 909 | ou supérieur, afin d'éviter des comportements de réplication trop |
|---|
| | 910 | rapide. |
|---|
| 940 | | <refsect1> <title> Note de version </title> <para> This command |
|---|
| 941 | | was introduced in &slony1; 1.0. As of version 1.1, you <emphasis>should</emphasis> no |
|---|
| 942 | | longer need to use this command, as listen paths are generated automatically. </para> |
|---|
| | 940 | <refsect1> <title> Note de version </title> <para> Cette commande fut introduite |
|---|
| | 941 | dans &slony1; 1.0. Ã partir de la version 1.1, vous ne <emphasis>devriez</emphasis> |
|---|
| | 942 | pas avoir besoin de cette commande, car les voies d'écoute sont générées automatiquement. |
|---|
| | 943 | </para> |
|---|
| 1020 | | In the &slony1; replication system, |
|---|
| 1021 | | every replicated table is required to have at least one |
|---|
| 1022 | | <command>UNIQUE</command> constraint whose columns are |
|---|
| 1023 | | declared <command>NOT NULL.</command> Any primary key |
|---|
| 1024 | | satisfies this requirement. |
|---|
| 1025 | | </para> |
|---|
| 1026 | | |
|---|
| 1027 | | <para> |
|---|
| 1028 | | As a last resort, <emphasis>in versions of &slony1; prior to |
|---|
| 1029 | | 2.0</emphasis>, this command can be used to add such an attribute |
|---|
| 1030 | | to a table that does not have a primary key. Since this |
|---|
| 1031 | | modification can have unwanted side effects, <emphasis>it is |
|---|
| 1032 | | strongly recommended that users add a unique and not null |
|---|
| 1033 | | attribute by other means.</emphasis> |
|---|
| 1034 | | </para> |
|---|
| 1035 | | |
|---|
| 1036 | | <para> If you intend to use &slony1; version 2.0, you |
|---|
| 1037 | | <emphasis>must</emphasis> arrange for a more proper primary key. |
|---|
| 1038 | | &slony1; will not provide one for you, and if you have cases of |
|---|
| 1039 | | keys created via <command>TABLE ADD KEY</command>, you cannot |
|---|
| 1040 | | expect &slony1; to function properly. </para> |
|---|
| | 1022 | Dans un systÚme de réplication &slony1;, chaque table répliquée |
|---|
| | 1023 | doit avoir au moins une contrainte |
|---|
| | 1024 | <command>UNIQUE</command> dont les colonnes sont déclarées |
|---|
| | 1025 | <command>NOT NULL</command>. N'importe quelle clef primaire |
|---|
| | 1026 | respecte ces pré-requis. |
|---|
| | 1027 | </para> |
|---|
| | 1028 | |
|---|
| | 1029 | <para> |
|---|
| | 1030 | En dernier recours, <emphasis>dans les versions de &slony1; antérieures |
|---|
| | 1031 | à la 2.0</emphasis>, cette commande peut être utilisée pour ajouter |
|---|
| | 1032 | un attribut à une table qui ne possÚde par de clef primaire. |
|---|
| | 1033 | Sachant que cette modification pour avoir des effets secondaires |
|---|
| | 1034 | indésirables, <emphasis>il est trÚs fortement recommandé que les |
|---|
| | 1035 | utilisateurs ajoute les attributs unique et not null par |
|---|
| | 1036 | leurs propres moyens.</emphasis> |
|---|
| | 1037 | </para> |
|---|
| | 1038 | |
|---|
| | 1039 | <para> Si vous comptez utilisez &slony1; version 2.0, vous |
|---|
| | 1040 | <emphasis>devez</emphasis> vous débrouiller pour définir |
|---|
| | 1041 | une clef primaire plus adéquate. |
|---|
| | 1042 | &slony1; ne vous en fournira pas une, et si vous |
|---|
| | 1043 | avez des clefs créées via <command>TABLE ADD KEY</command>, |
|---|
| | 1044 | ne vous attendez pas à ce que &slony1; fonctionne correctement. </para> |
|---|
| 1047 | | <listitem><para> The full name of the table consisting of the schema |
|---|
| 1048 | | and table name as the SQL expression <command>quote_ident(nspname) |
|---|
| 1049 | | || '.' || quote_ident(relname)</command> |
|---|
| 1050 | | would return it.</para></listitem> |
|---|
| | 1051 | <listitem><para> Le nom complet de la table composé du nom du schéma |
|---|
| | 1052 | et du nom de la table, au format SQL suivant |
|---|
| | 1053 | <command>quote_ident(nspname) |
|---|
| | 1054 | || '.' || quote_ident(relname)</command>.</para></listitem> |
|---|
| 1054 | | <note><para> There is a limitation at present; you can create a |
|---|
| 1055 | | &postgres; table with no columns, as with <command> create table |
|---|
| 1056 | | real_short (); </command>. &slony1; will refuse to handle such a |
|---|
| 1057 | | table. This isn't presently regarded as a serious limitation, as |
|---|
| 1058 | | we can't see there being terribly much interest in replicating |
|---|
| 1059 | | tables that contain no application data.</para> </note> |
|---|
| 1060 | | |
|---|
| 1061 | | <caution><para> <command>TABLE ADD KEY</command> <emphasis>should |
|---|
| 1062 | | not be used</emphasis> if you can possibly avoid it. It is |
|---|
| 1063 | | emphatically <emphasis>not</emphasis> a &bestpracticelink;. </para> |
|---|
| 1064 | | |
|---|
| 1065 | | <para> The absence of a proper primary key should be a big red |
|---|
| 1066 | | flag that the database schema is <emphasis>broken.</emphasis> The |
|---|
| 1067 | | <emphasis>right</emphasis> way to repair this is to introduce a |
|---|
| 1068 | | proper primary key, not to have &slony1; <quote>fake</quote> one |
|---|
| 1069 | | up.</para> |
|---|
| 1070 | | |
|---|
| 1071 | | <para>It is <emphasis>not</emphasis> supported in &logshiplink;, |
|---|
| 1072 | | and we do not intend to add support.</para> </caution> |
|---|
| 1073 | | |
|---|
| 1074 | | <para> This uses &funtableaddkey;. </para> |
|---|
| | 1058 | <note><para> Pour le moment il existe des limitations; vous pouvez |
|---|
| | 1059 | créer une table &postgres; avec aucune colonne, par exemple |
|---|
| | 1060 | <command> create table table_vide (); </command>. |
|---|
| | 1061 | &slony1; refusera de manipuler une telle table. |
|---|
| | 1062 | Ce n'est pas vraiment une limitation génante, car il est |
|---|
| | 1063 | n'est pas trÚs intéressant de répliquer des tables qui ne contiennent |
|---|
| | 1064 | aucune information.</para> </note> |
|---|
| | 1065 | |
|---|
| | 1066 | <caution><para> <command>TABLE ADD KEY</command> <emphasis>ne doit |
|---|
| | 1067 | pas être utilisée</emphasis> si vous pouvez vous en passer. |
|---|
| | 1068 | C'est le <emphasis></emphasis> d'une &bestpracticelink;. </para> |
|---|
| | 1069 | |
|---|
| | 1070 | <para> L'absence d'une clef primaire adéquate est |
|---|
| | 1071 | une indication trÚs sérieuse que le schéma est |
|---|
| | 1072 | <emphasis>défectueux</emphasis>. La |
|---|
| | 1073 | <emphasis>bonne</emphasis> méthode pour le réparer est d'introduire |
|---|
| | 1074 | un clef primaire adéquate, pas demander à &slony1; d'en <quote>bricoler</quote> une.</para> |
|---|
| | 1075 | |
|---|
| | 1076 | <para>Cette commande n'est <emphasis>pas</emphasis> supportée par le &logshiplink;, |
|---|
| | 1077 | et nous n'avons pas l'intention de développer ce support.</para> </caution> |
|---|
| | 1078 | |
|---|
| | 1079 | <para> Cette commande utilise &funtableaddkey;. </para> |
|---|
| 1087 | | <listitem><para> Alter the table, adding the column;</para></listitem> |
|---|
| 1088 | | <listitem><para> Alter each row in the table, attaching the sequence value;</para></listitem> |
|---|
| 1089 | | <listitem><para> Adding the new unique index to the table.</para></listitem> |
|---|
| | 1093 | <listitem><para> Modifier la table, ajouter la colonne;</para></listitem> |
|---|
| | 1094 | <listitem><para> Modifier chaque ligne de la table, attacher la valeur de la séquence;</para></listitem> |
|---|
| | 1095 | <listitem><para> Ajouter un nouvel index unique à la table.</para></listitem> |
|---|
| 1092 | | <para> On subscriber nodes, these alterations take place on the |
|---|
| 1093 | | table when it is empty, and do not add any particular additional |
|---|
| 1094 | | burden to subscription time where the table will be locked on the |
|---|
| 1095 | | subscriber node.</para> |
|---|
| 1096 | | |
|---|
| 1097 | | <para> If the table is large and frequently updated, by your |
|---|
| 1098 | | applications, this will impose a not-insignificant application |
|---|
| 1099 | | outage for the duration of the time it takes to modify the table |
|---|
| 1100 | | on the origin node. That is why it is recommended that this |
|---|
| 1101 | | command should not be used if you can possibly avoid it.</para> |
|---|
| 1102 | | |
|---|
| | 1098 | <para> Sur les noeus abonnés, ces modifications sont |
|---|
| | 1099 | réalisée sur la table losqu'elle est vode, et perturbe |
|---|
| | 1100 | pas particuliÚrement l'abonnement au cours du verrouillage |
|---|
| | 1101 | sur le noeud abonné.</para> |
|---|
| | 1102 | |
|---|
| | 1103 | <para> Si la table est volumineuse et fréquemment mise à jour |
|---|
| | 1104 | par vos applications, cela imposera un coupure de service |
|---|
| | 1105 | significative qui correspond au tems de modification de la |
|---|
| | 1106 | table sur le noeud d'origine. C'est pourquoi il est recommandé |
|---|
| | 1107 | que cette commande ne sit pas utilisée quand c'est possible. |
|---|
| 1106 | | <warning> <para> This command is <emphasis> no longer supported </emphasis> |
|---|
| 1107 | | as of &slony1; version 2.0. In version 2, the various |
|---|
| 1108 | | <quote>catalogue breakages</quote> done in &postgres; versions |
|---|
| 1109 | | prior to 8.3 are being eliminated so that schema dumps may be |
|---|
| 1110 | | taken from any node. That leaves the <quote>kludgy</quote> |
|---|
| 1111 | | columns created via <command>TABLE ADD KEY</command> as the only |
|---|
| 1112 | | thing that prevents <xref linkend="stmtuninstallnode"/> from being |
|---|
| 1113 | | comprised of the SQL statement <command>drop schema _ClusterName |
|---|
| | 1111 | <warning> <para> Cette commande n'est <emphasis> plus supportée</emphasis> |
|---|
| | 1112 | à partir de &slony1; version 2.0. Dans la version 2, les différents |
|---|
| | 1113 | <quote>modifications du catalogue</quote> réalisée sur les |
|---|
| | 1114 | versions de &postgres; antérieures à la 8.3 sont éliminées |
|---|
| | 1115 | afin que les exports de schéma puissent être utilisés sur n'importe |
|---|
| | 1116 | quel noeud. Ainsi les colonnes <quote>bricolées</quote> par |
|---|
| | 1117 | <command>TABLE ADD KEY</command> sont la chose qui empêche la commande |
|---|
| | 1118 | <xref linkend="stmtuninstallnode"/> d'être équivalente à |
|---|
| | 1119 | la commande SQL <command>drop schema _nom_du_cluster |
|---|
| 1138 | | In the &slony1; replication system, |
|---|
| 1139 | | replicated tables are organized in sets. As a general rule of |
|---|
| 1140 | | thumb, a set should contain all the tables of one application, |
|---|
| 1141 | | that have relationships. In a well designed application, this is |
|---|
| 1142 | | equal to all the tables in one schema. |
|---|
| 1143 | | </para> |
|---|
| 1144 | | <para> |
|---|
| 1145 | | The smallest unit one node can subscribe for replication from |
|---|
| 1146 | | another node is a set. A set always has an origin. In |
|---|
| 1147 | | classical replication terms, that would be the <quote>master.</quote> |
|---|
| 1148 | | Since in &slony1; a node can be the <quote>master</quote> over one set, |
|---|
| 1149 | | while receiving replication data in the <quote>slave</quote> role for |
|---|
| 1150 | | another at the same time, this terminology may easily become |
|---|
| 1151 | | misleading and should therefore be replaced with <quote>set |
|---|
| 1152 | | origin</quote> and <quote>subscriber</quote>. |
|---|
| | 1144 | Dans le systÚme de réplication &slony1;, les tables répliquées sont |
|---|
| | 1145 | regroupées en ensembles. En rÚgle générale, un ensemble contient |
|---|
| | 1146 | des tables reliées pour une application donnée. Dans application |
|---|
| | 1147 | correctement conçue, toutes ces tables sont regroupées dans un |
|---|
| | 1148 | schéma. |
|---|
| | 1149 | </para> |
|---|
| | 1150 | <para> |
|---|
| | 1151 | L'ensemble de réplication est la plus petite unité qu'un noeud peut répliquer vers un autre noeud. |
|---|
| | 1152 | Un ensemble de réplication a toujours une origine. En terme classique, |
|---|
| | 1153 | c'est ce qu'on appele le <quote>maître</quote>. |
|---|
| | 1154 | Puisqu'avec &slony1; un noeud peut être simultanément <quote>maître</quote> pour un ensemble, |
|---|
| | 1155 | et tenir le rÃŽle d'<quote>esclave</quote> pour un autre, cette terminologie peut |
|---|
| | 1156 | rapidement prêter à confusion et doit par conséquent être remplacée par |
|---|
| | 1157 | <quote>ensemble d'origine</quote> et <quote>abonné</quote>. |
|---|
| 1163 | | <varlistentry><term><literal> COMMENT = 'string' </literal></term> |
|---|
| 1164 | | <listitem><para> A descriptive text added to the set entry.</para> |
|---|
| 1165 | | <para> If none is provided, a default value is set; <command>A replication set so boring no one thought to give it a name</command>. </para> |
|---|
| | 1168 | <varlistentry><term><literal> COMMENT = 'chaîne' </literal></term> |
|---|
| | 1169 | <listitem><para> Un text descriptif peut être ajoutée pour l'ensemble de réplication.</para> |
|---|
| | 1170 | <para> Si aucune commentaire n'est fourni, la valeur par défaut est <command>A replication set so boring no one thought to give it a name</command> (NdT : <quote>Un ensemble de réplication tellement |
|---|
| | 1171 | ennuyeux qui personne n'a pensé à lui donner un nom</quote>) |
|---|
| 1261 | | <para> Merge a set of tables and sequences into another one. This |
|---|
| 1262 | | function is a workaround for the problem that it is not possible |
|---|
| 1263 | | to add tables/sequences to already-subscribed sets. One may create |
|---|
| 1264 | | a temporary set, add the new objects to that, subscribe all nodes |
|---|
| 1265 | | currently subscribed to the other set to this new one, and then |
|---|
| 1266 | | merge the two together, eliminating the set ID that was being |
|---|
| 1267 | | added. |
|---|
| 1268 | | </para> |
|---|
| 1269 | | |
|---|
| 1270 | | <para> |
|---|
| 1271 | | This operation will refuse to be run if the two sets do not have |
|---|
| 1272 | | <emphasis>exactly</emphasis> the same set of subscribers. |
|---|
| | 1267 | <para> Fusionne un ensemble de tables et de séquences dans un autre. |
|---|
| | 1268 | Cette fonction est un contournement face à l'impossibilité |
|---|
| | 1269 | d'ajouter des tables/séquences à des ensembles en cours de |
|---|
| | 1270 | réplication. On peut alors créer un ensemble temporaire, y ajouter |
|---|
| | 1271 | les nouveaux objects, abonner tous les noeuds à ce nouvel ensemble, |
|---|
| | 1272 | puis fusionner l'ensemble courant et l'ensemble temporaire, et ce qui supprime |
|---|
| | 1273 | l'identifiant de l'ensemble temporaire. |
|---|
| | 1274 | |
|---|
| | 1275 | </para> |
|---|
| | 1276 | |
|---|
| | 1277 | <para> |
|---|
| | 1278 | Cette opération ne fonctionnera si les deux ensembles ne sont pas |
|---|
| | 1279 | répliqués <emphasis>exactement</emphasis> sur les mêmes noeuds abonnés. |
|---|
| 1305 | | <refsect1><title> Dangerous/Unintuitive Behaviour </title> |
|---|
| 1306 | | |
|---|
| 1307 | | <para> Merging takes place based on the configuration on the origin |
|---|
| 1308 | | node. If a merge is requested while subscriptions are still being |
|---|
| 1309 | | processed, this can cause in-progress subscribers' replication to |
|---|
| 1310 | | break, as they'll be looking for configuration for this set which |
|---|
| 1311 | | the merge request deletes. Do not be too quick to merge sets. |
|---|
| | 1312 | <refsect1><title> Comportement dangereux ou non-intuitif </title> |
|---|
| | 1313 | |
|---|
| | 1314 | <para> La fusion se déroule suivant la configuration sur le noeud origine. |
|---|
| | 1315 | Si une fusion est demandée alors que les abonnements sont toujours |
|---|
| | 1316 | en cours de traitement, cela peut briser les réplications en cours |
|---|
| | 1317 | sur les noeuds abonnés, car ils chercheront la configuration de cet |
|---|
| | 1318 | ensemble alors qu'il vient d'être supprimé. Ne soyez pas trop |
|---|
| | 1319 | rapides lorsque vous fusionner des ensembles. |
|---|
| 1315 | | <refsect1> <title> Note de version </title> <para> This command |
|---|
| 1316 | | was introduced in &slony1; 1.0.5. In 1.2.1, a race condition was |
|---|
| 1317 | | rectified where the merge request would be submitted while |
|---|
| 1318 | | subscriptions were still in process on subscribers; it refuses to |
|---|
| 1319 | | merge before subscriptions are complete. </para> |
|---|
| | 1323 | <refsect1> <title> Note de version </title> <para> Cette commande |
|---|
| | 1324 | fut introduite dans &slony1; 1.0.5. Dans la version 1.2.1, |
|---|
| | 1325 | une condition de compétition ("race condition") a été corrigée. |
|---|
| | 1326 | Elle apparaissait lorsque la requête de fusion était soumise |
|---|
| | 1327 | alors que les demande d'abonnement étaient traités. |
|---|
| | 1328 | Cela empêche les fusion avant que les abonnements soient |
|---|
| | 1329 | complÚtement réalisés. </para> |
|---|