| 8 | | <title>Introduction to &slony1;</title> |
|---|
| 9 | | |
|---|
| 10 | | <indexterm><primary> introduction to &slony1; </primary></indexterm> |
|---|
| 11 | | |
|---|
| 12 | | <sect2> <title>What &slony1; is</title> |
|---|
| 13 | | |
|---|
| 14 | | <para>&slony1; is a <quote>master to multiple slaves</quote> |
|---|
| 15 | | replication system supporting cascading and slave promotion. The big |
|---|
| 16 | | picture for the development of &slony1; is as a master-slave system |
|---|
| 17 | | that includes the sorts of capabilities needed to replicate large |
|---|
| 18 | | databases to a reasonably limited number of slave systems. |
|---|
| 19 | | <quote>Reasonable,</quote> in this context, is on the order of a dozen |
|---|
| 20 | | servers. If the number of servers grows beyond that, the cost of |
|---|
| 21 | | communications increases prohibitively, and the incremental benefits |
|---|
| 22 | | of having multiple servers will be falling off at that point.</para> |
|---|
| 23 | | |
|---|
| 24 | | <para> See also <xref linkend="slonylistenercosts"/> for a further |
|---|
| 25 | | analysis of costs associated with having many nodes.</para> |
|---|
| 26 | | |
|---|
| 27 | | <para> &slony1; is a system intended for data centers and backup |
|---|
| 28 | | sites, where the normal mode of operation is that all nodes are |
|---|
| 29 | | available all the time, and where all nodes can be secured. If you |
|---|
| 30 | | have nodes that are likely to regularly drop onto and off of the |
|---|
| 31 | | network, or have nodes that cannot be kept secure, &slony1; is |
|---|
| 32 | | probably not the ideal replication solution for you.</para> |
|---|
| 33 | | |
|---|
| 34 | | <para> Thus, examples of cases where &slony1; probably won't work out |
|---|
| 35 | | well would include: |
|---|
| | 8 | <title>Introduction à &slony1;</title> |
|---|
| | 9 | |
|---|
| | 10 | <indexterm><primary> introduction à &slony1; </primary></indexterm> |
|---|
| | 11 | |
|---|
| | 12 | <sect2> <title>Qu'est ce que &slony1; ?</title> |
|---|
| | 13 | |
|---|
| | 14 | <para>&slony1; est systÚme de réplication entre <quote>un maître et de multiple esclaves</quote> |
|---|
| | 15 | qui supporte les cascades et la promotion d'un esclave en maître. |
|---|
| | 16 | Le schéma directeur du développement de &slony1; est la création |
|---|
| | 17 | d'un systÚme maître-esclave qui inclue les fonctionnalités nécessaire |
|---|
| | 18 | pour répliquer de grandes bases de données avec un nombre raisonnable |
|---|
| | 19 | d'esclaves. <quote>Raisonnable,</quote> dans ce contexte, signifie |
|---|
| | 20 | une douzaine de serveurs. Si le nombre de serveurs évolue au-delà de |
|---|
| | 21 | cette limite, le coût des communications augmentent de maniÚre prohibitive, |
|---|
| | 22 | et le bénéfice d'avoir de multiple serveurs s'amenuise.</para> |
|---|
| | 23 | |
|---|
| | 24 | <para> Voir la section <xref linkend="slonylistenercosts"/> pour une |
|---|
| | 25 | analyse plus détaillées des coûts associés à l'augmentation du |
|---|
| | 26 | nombre de noeuds.</para> |
|---|
| | 27 | |
|---|
| | 28 | <para> &slony1; est un systÚme conçu pour les datacenters et sites de |
|---|
| | 29 | sauvegardes, où le fonctionnement des opérations est que tous les |
|---|
| | 30 | noeuds sont disponibles en permanence, et où tous les noeuds peuvent |
|---|
| | 31 | être sécurisés. Si vous avez des noeuds qui risquent réguliÚrement d'être |
|---|
| | 32 | coupés du réseau, ou si la sécurité de vos noeuds ne peut pas |
|---|
| | 33 | être garantie, &slony1; n'est probablement pas la solution de réplication |
|---|
| | 34 | idéale pour vous.</para> |
|---|
| | 35 | |
|---|
| | 36 | <para> Voici notamment quelques exemples de cas où &slony1; ne sera probablement |
|---|
| | 37 | pas adapté : |
|---|
| 54 | | <para> There is also a <link linkend="logshipping">file-based log |
|---|
| 55 | | shipping</link> extension where updates would be serialized into |
|---|
| 56 | | files. Given that, log files could be distributed by any means |
|---|
| 57 | | desired without any need of feedback between the provider node and |
|---|
| 58 | | those nodes subscribing via <quote>log shipping.</quote> <quote>Log |
|---|
| 59 | | shipped</quote> nodes do not add to the costs of communicating events |
|---|
| 60 | | between &slony1; nodes.</para> |
|---|
| 61 | | |
|---|
| 62 | | <para> But &slony1;, by only having a single origin for each set, is |
|---|
| 63 | | quite unsuitable for <emphasis>really</emphasis> asynchronous multiway |
|---|
| 64 | | replication. For those that could use some sort of |
|---|
| 65 | | <quote>asynchronous multimaster replication with conflict |
|---|
| 66 | | resolution</quote> akin to what is provided by <productname>Lotus |
|---|
| 67 | | <trademark>Notes</trademark></productname> or the |
|---|
| 68 | | <quote>syncing</quote> protocols found on PalmOS systems, you will |
|---|
| 69 | | really need to look elsewhere. </para> |
|---|
| 70 | | |
|---|
| 71 | | <para> These other sorts of replication models are not without merit, |
|---|
| 72 | | but they represent <emphasis>different</emphasis> replication |
|---|
| 73 | | scenarios that &slony1; does not attempt to address.</para> |
|---|
| | 56 | <para> Il existe une extension de <link linkend="logshipping"> log shipping par fichier</link> |
|---|
| | 57 | qui permet de regrouper les mises à jour dans des fichiers. |
|---|
| | 58 | Ainsi, les fichiers de mises à jours peuvent être distribués |
|---|
| | 59 | par différents moyens sans avoir à attendre d'accusé de réception |
|---|
| | 60 | entre les noeud fournisseur et les noeuds qui sont abonnés au |
|---|
| | 61 | <quote>log shipping</quote>. Le noeuds abonnés au <quote>Log |
|---|
| | 62 | shipping</quote> n'augmente pas les coûts de communication être |
|---|
| | 63 | les noeuds &slony1;.</para> |
|---|
| | 64 | |
|---|
| | 65 | <para> Mais &slony1;, ayant une seule origine par ensemble de données répliqué, |
|---|
| | 66 | n'est pas adapté pour effectuer de la réplication <emphasis>réellement</emphasis> asynchrone |
|---|
| | 67 | et multi-directionnelle. Pour celles et ceux qui recherche une |
|---|
| | 68 | <quote>réplication asynchrone multi-maîtres avec résolution des conflits</quote> |
|---|
| | 69 | telle que ce que fournit <productname>Lotus |
|---|
| | 70 | <trademark>Notes</trademark></productname> ou les protocoles de <quote>synchronisation</quote> |
|---|
| | 71 | présents sur les systÚmes PalmOS, il est nécessaire de se tourner vers d'autres logiciels. |
|---|
| | 72 | </para> |
|---|
| | 73 | |
|---|
| | 74 | <para> Il existe également d'autres modÚles de réplication qui ne sont pas sans avantages, |
|---|
| | 75 | mais qui permettent des scénarios de réplication <emphasis>différents</emphasis> |
|---|
| | 76 | de ce que &slony1; propose.</para> |
|---|
| 120 | | <para>Determining whether a node has <quote>failed</quote> is properly |
|---|
| 121 | | the responsibility of network management software, not &slony1;. The |
|---|
| 122 | | configuration, fail-over paths, and preferred policies will be |
|---|
| 123 | | different for each site. For example, keep-alive monitoring with |
|---|
| 124 | | redundant NIC's and intelligent HA switches that guarantee |
|---|
| 125 | | race-condition-free takeover of a network address and disconnecting |
|---|
| 126 | | the <quote>failed</quote> node will vary based on network |
|---|
| 127 | | configuration, vendor choices, and the combinations of hardware and |
|---|
| 128 | | software in use. This is clearly in the realm of network management |
|---|
| 129 | | and not &slony1;.</para> |
|---|
| 130 | | |
|---|
| 131 | | <para> Furthermore, choosing what to do based on the |
|---|
| 132 | | <quote>shape</quote> of the cluster represents local business policy, |
|---|
| 133 | | particularly in view of the fact that <link |
|---|
| 134 | | linkend="stmtfailover"><command>FAIL OVER</command></link> requires |
|---|
| 135 | | discarding the failed node. If &slony1; imposed failover policy on |
|---|
| 136 | | you, that might conflict with business requirements, thereby making |
|---|
| 137 | | &slony1; an unacceptable choice.</para> |
|---|
| 138 | | |
|---|
| 139 | | <para>As a result, let &slony1; do what it does best: provide database |
|---|
| 140 | | replication services.</para></sect2> |
|---|
| 141 | | |
|---|
| 142 | | <sect2><title> Current Limitations</title> |
|---|
| 143 | | |
|---|
| 144 | | <indexterm><primary>limitations to &slony1;</primary></indexterm> |
|---|
| 145 | | |
|---|
| 146 | | <para>&slony1; does not automatically propagate schema changes, nor |
|---|
| 147 | | does it have any ability to replicate large objects. There is a |
|---|
| 148 | | single common reason for these limitations, namely that &slony1; |
|---|
| 149 | | collects updates using triggers, and neither schema changes, large |
|---|
| 150 | | object operations, nor <command>TRUNCATE</command> requests are able |
|---|
| 151 | | to have triggers suitable to inform &slony1; when those sorts of |
|---|
| 152 | | changes take place. As a result, the only database objects where |
|---|
| 153 | | &slony1; can replicate updates are tables and sequences. </para> |
|---|
| 154 | | |
|---|
| 155 | | <para> Note that with the <emphasis>use</emphasis> of triggers comes |
|---|
| 156 | | some additional <emphasis>fiddling around with triggers</emphasis>. |
|---|
| 157 | | On the <quote>origin</quote> for each replicated table, an additional |
|---|
| 158 | | trigger is added which runs the stored procedure <xref |
|---|
| 159 | | linkend="function.logtrigger"/>. On each subscriber, tables are |
|---|
| 160 | | augmented with a trigger that runs the <xref |
|---|
| 161 | | linkend="function.denyaccess"/> function; this function prevents |
|---|
| 162 | | anything other than the <xref linkend="slon"/> process from updating |
|---|
| 163 | | data in replicated tables. In addition, any |
|---|
| 164 | | <emphasis>other</emphasis> triggers and rules on replicated tables are |
|---|
| 165 | | <emphasis>suppressed</emphasis> on the subscribers: This is done by |
|---|
| 166 | | pointing them, in the system table, to the primary key index instead |
|---|
| 167 | | of to the table itself. This represents something of a |
|---|
| 168 | | <quote>corruption</quote> of the data dictionary, and is why you |
|---|
| 169 | | should not directly use <application>pg_dump</application> to dump |
|---|
| 170 | | schemas on subscribers. </para> |
|---|
| 171 | | |
|---|
| 172 | | <para>There is a capability for &slony1; to propagate other kinds of |
|---|
| 173 | | database modifications, notably DDL changes, if you submit them as |
|---|
| 174 | | scripts via the <application>slonik</application> <xref |
|---|
| 175 | | linkend="stmtddlscript"/> operation. That is not handled |
|---|
| 176 | | <quote>automatically;</quote> you, as a database administrator, will |
|---|
| 177 | | have to construct an SQL DDL script and submit it, via <xref |
|---|
| 178 | | linkend="stmtddlscript"/> and there are a number of further <link |
|---|
| 179 | | linkend="ddlchanges"> caveats.</link> </para> |
|---|
| 180 | | |
|---|
| 181 | | <para>If you have those sorts of requirements, it may be worth |
|---|
| 182 | | exploring the use of &postgres; 8.X <acronym>PITR</acronym> (Point In |
|---|
| 183 | | Time Recovery), where <acronym>WAL</acronym> logs are replicated to |
|---|
| 184 | | remote nodes. Unfortunately, that has two attendant limitations: |
|---|
| | 122 | <para>Déterminer si un noeud est en <quote>échec</quote> est de la responsabilité |
|---|
| | 123 | d'un logiciel de surveillance de réseau, pas de &slony1;. La configuration, |
|---|
| | 124 | les mécanismes de bascule et les politiques de reprise sur panne sont |
|---|
| | 125 | différent selon les sites. Par exemple, la surveillance avec des NICs redondants |
|---|
| | 126 | et les mécanismes de haute-disponibilité intelligents qui garantissent |
|---|
| | 127 | un changement d'adresse réseau à la volée sans conflit et une isolation |
|---|
| | 128 | du noeud <quote>en échec</quote>, dépendent de la configuration du réseau, |
|---|
| | 129 | des choix matériels et de la combinaison entre les logiciels et les appareils |
|---|
| | 130 | utilisés. Tout cela appartient clairement au domaine de la gestion de réseau, |
|---|
| | 131 | pas à celui de &slony1;.</para> |
|---|
| | 132 | |
|---|
| | 133 | <para> De plus, choisir comment se comporter selon |
|---|
| | 134 | <quote>l'état</quote> du cluster concerne la politique commerciale locale, |
|---|
| | 135 | en particulier si on considÚre qu'une <link |
|---|
| | 136 | linkend="stmtfailover"><command>bascule en cas de panne</command></link> ( « fail over » ) nécessite |
|---|
| | 137 | d'isoler le noeud en échec. Si &slony1; imposait une politique de bascule en cas de panne |
|---|
| | 138 | aux utilisateurs, cela entrerait parfois en conflit avec des |
|---|
| | 139 | intérêts commerciaux et &slony1; serait parfois une solution inadaptée.</para> |
|---|
| | 140 | |
|---|
| | 141 | <para>En conséquence, laissons &slony1; faire ce qu'il fait de mieux : fournir un service de |
|---|
| | 142 | réplication de bases de données.</para></sect2> |
|---|
| | 143 | |
|---|
| | 144 | <sect2><title> Limitations actuelles</title> |
|---|
| | 145 | |
|---|
| | 146 | <indexterm><primary>limitations de &slony1;</primary></indexterm> |
|---|
| | 147 | |
|---|
| | 148 | <para>&slony1; ne propage pas les changements du schéma de données, |
|---|
| | 149 | et ne réplique non plus les objets volumineux ( «large objects» ) |
|---|
| | 150 | Il y a une raison unique et commune à ces limitations : |
|---|
| | 151 | &slony1; collecte les mises à jours en utilisant des triggers, et |
|---|
| | 152 | ni les changements de schéma, ni les opérations sur les objets volumineux, |
|---|
| | 153 | ni les requêtes <command>TRUNCATE</command> ne sont capables de |
|---|
| | 154 | déclencher des triggers pour informer &slony1; lorsque ce genre |
|---|
| | 155 | de modification a lieu. Ainsi les seuls objets que &slony1; peut répliquer |
|---|
| | 156 | sont les tables et les séquences. </para> |
|---|
| | 157 | |
|---|
| | 158 | <para> Notons que <emphasis>l'utilisation</emphasis> de triggers implique |
|---|
| | 159 | quelques <emphasis>retoucher</emphasis> supplémentaires sur ces triggers. |
|---|
| | 160 | Sur le noeud <quote>origine</quote> pour chaque table répliquée, on ajoute un trigger |
|---|
| | 161 | supplémentaire qui lance la procédure stockée <xref |
|---|
| | 162 | linkend="function.logtrigger"/>. |
|---|
| | 163 | Sur chaque noeud abonné, les tables sont complétées avec un trigger qui lance |
|---|
| | 164 | la fonction <xref |
|---|
| | 165 | linkend="function.denyaccess"/>; cette fonction empêche toute mise à jour |
|---|
| | 166 | sur les tables répliquées à l'exception de celles effectuées par |
|---|
| | 167 | le processus <xref linkend="slon"/>. |
|---|
| | 168 | De plus, toutes les <emphasis>autres</emphasis> triggers et rÚgles |
|---|
| | 169 | sur les tables répliquées sont <emphasis>supprimés</emphasis> sur |
|---|
| | 170 | les noeuds abonnés; Ceci est réalisé en faisant pointant ces tables, |
|---|
| | 171 | dans le catalogue systÚme, vers les index des clefs primaires |
|---|
| | 172 | plutÎt que sur la table elle-même. |
|---|
| | 173 | Cela s'apparente à une <quote>corruption</quote> du dictionnaire de données, |
|---|
| | 174 | et cela explique pourquoi on ne peut pas utiliser directement |
|---|
| | 175 | <application>pg_dump</application> pour exporter le schéma sur les |
|---|
| | 176 | noeuds abonnés. </para> |
|---|
| | 177 | |
|---|
| | 178 | <para>Il est possible de propager d'autres types de modifications des bases |
|---|
| | 179 | avec &slony1;, notamment les ordres DDL, si vous les effectuer via la fonction |
|---|
| | 180 | de <application>slonik</application> nommée <xref |
|---|
| | 181 | linkend="stmtddlscript"/>. Ceci ne peut pas se faire |
|---|
| | 182 | <quote>automatiquement</quote>; en tant qu'administrateur de base de données, |
|---|
| | 183 | vous devez superviser les scripts SQL DDL et les soumettre via <xref |
|---|
| | 184 | linkend="stmtddlscript"/> car il existe un certain nombre de |
|---|
| | 185 | piÚges à éviter concernant les <link |
|---|
| | 186 | linkend="ddlchanges">.</link> </para> |
|---|
| | 187 | |
|---|
| | 188 | <para>Si vous ne pouvez pas superviser ces modifications, vous devrez peut-être |
|---|
| | 189 | envisager l'utilisation du mécanisme <acronym>PITR</acronym> (Point In |
|---|
| | 190 | Time Recovery) de &postgres; (version 8.x), avec lequel les journaux |
|---|
| | 191 | <acronym>WAL</acronym> sont répliqués sur des noeuds distants. |
|---|
| | 192 | Malheureusement cette solution à deux limitations majeures : |
|---|
| 201 | | <sect2><title>Replication Models</title> |
|---|
| 202 | | |
|---|
| 203 | | <indexterm><primary>replication models</primary></indexterm> |
|---|
| 204 | | |
|---|
| 205 | | <para>There are a number of distinct models for database replication; |
|---|
| 206 | | it is impossible for one replication system to be all things to all |
|---|
| 207 | | people.</para> |
|---|
| 208 | | |
|---|
| 209 | | <para> &slony1; implements a particular model, namely that of |
|---|
| 210 | | asynchronous replication, using triggers to collect table updates, |
|---|
| 211 | | where a single <quote>origin</quote> may be replicated to multiple |
|---|
| 212 | | <quote>subscribers</quote> including cascaded subscribers.</para> |
|---|
| 213 | | |
|---|
| 214 | | <para> There are a number of other replication models which are |
|---|
| 215 | | <emphasis> different </emphasis>; it is worth pointing out other |
|---|
| 216 | | approaches that exist. &slony1; is certainly not the only approach, |
|---|
| 217 | | and for some applications, it is <emphasis> not </emphasis> the |
|---|
| 218 | | optimal approach. </para> |
|---|
| | 209 | <sect2><title>ModÚles de réplication</title> |
|---|
| | 210 | |
|---|
| | 211 | <indexterm><primary>modÚles de réplication</primary></indexterm> |
|---|
| | 212 | |
|---|
| | 213 | <para>%Il beaucoup de modÚles de réplication différents; il est |
|---|
| | 214 | qu'un systÚme de réplication puisse répondre à toutes les attentes |
|---|
| | 215 | de tous les utilisateurs.</para> |
|---|
| | 216 | |
|---|
| | 217 | <para> &slony1; implémente un modÚle particulier, la réplication asynchrone, |
|---|
| | 218 | en utilisant des triggers pour collecter les mises à jour sur les tables, |
|---|
| | 219 | sur une <quote>origine</quote> unique, puis réplique ces mises à jour |
|---|
| | 220 | sur de multiple <quote>abonnés</quote>, y compris les abonnés en cascade.</para> |
|---|
| | 221 | |
|---|
| | 222 | <para> Il existe de de nombreaux autres modÚles de réplication |
|---|
| | 223 | qui sont <emphasis> différent </emphasis> de celui-ci; il est |
|---|
| | 224 | important de souligner que d'autres approches sont possibles. |
|---|
| | 225 | &slony1; n'est certainement pas la seule approche, et pour certaines |
|---|
| | 226 | applications, ce n'est <emphasis> pas </emphasis> la meilleur approche. </para> |
|---|
| 246 | | <listitem><para> Asynchronous multimaster replication with conflict |
|---|
| 247 | | avoidance/resolution</para> |
|---|
| 248 | | |
|---|
| 249 | | <para> Perhaps the most widely used replication system of this sort is |
|---|
| 250 | | the <productname>PalmOS HotSync</productname> system. |
|---|
| 251 | | <trademark>Lotus Notes</trademark> also provides a replication system |
|---|
| 252 | | that functions in much this manner.</para> |
|---|
| 253 | | |
|---|
| 254 | | <para> The characteristic <quote>troublesome problem</quote> with this |
|---|
| 255 | | style of replication is that it is possible for conflicts to arise |
|---|
| 256 | | because users update the same record in different ways on different |
|---|
| 257 | | nodes. </para> |
|---|
| 258 | | |
|---|
| 259 | | <para> In the case of <productname>HotSync</productname>, if conflicts |
|---|
| 260 | | arise due to records being updated on multiple nodes, the |
|---|
| 261 | | <quote>resolution</quote> is to simply create a duplicate record to |
|---|
| 262 | | reflect the two changes, and have the user resolve the conflict |
|---|
| 263 | | manually. </para> |
|---|
| 264 | | |
|---|
| 265 | | <para> Some async multimaster systems try to resolve conflicts by |
|---|
| 266 | | finding ways to apply partial record updates. For instance, with an |
|---|
| 267 | | address update, one user, on one node, might update the phone number |
|---|
| 268 | | for an address, and another user might update the street address, and |
|---|
| 269 | | the conflict resolution system might try to apply these updates in a |
|---|
| 270 | | non-conflicting order. This can also be considered a form of |
|---|
| 271 | | <quote>table partitioning</quote> where a database table is treated as |
|---|
| 272 | | consisting of several <quote>sub-tables.</quote> </para> |
|---|
| 273 | | |
|---|
| 274 | | <para> Conflict resolution systems almost always require some domain |
|---|
| 275 | | knowledge of the application being used, which means that they can |
|---|
| 276 | | only deal automatically with those conflicts where you have assigned a |
|---|
| 277 | | policy. If they run into conflicts for which no policy is available, |
|---|
| 278 | | replication stops until someone applies some manual |
|---|
| 279 | | intervention. </para> |
|---|
| | 253 | <listitem><para> Réplication asynchrone multi-maîtres avec résolution/prévention des conflits</para> |
|---|
| | 254 | |
|---|
| | 255 | <para> Le systÚme de réplication le plus répandu utilisant ce modÚle est probablement |
|---|
| | 256 | le systÚme <productname>PalmOS HotSync</productname>. |
|---|
| | 257 | <trademark>Lotus Notes</trademark> fournit également un systÚme de réplication |
|---|
| | 258 | qui fonctionne de la même maniÚre.</para> |
|---|
| | 259 | |
|---|
| | 260 | <para> Le <quote>problÚme</quote> caractéristique avec ce |
|---|
| | 261 | style de réplication est que des conflits peuvent apparaître |
|---|
| | 262 | lorsque des utilisateurs mettent à jour le même enregistrement |
|---|
| | 263 | de différente maniÚre sur différents noeuds.</para> |
|---|
| | 264 | |
|---|
| | 265 | <para> Dans le cas de <productname>HotSync</productname>, si un conflit |
|---|
| | 266 | est provoqué par la mise à jour simultanée d'un même enregistrement, |
|---|
| | 267 | la <quote>résolution</quote> se résume à créer un deuxiÚme enregistrement |
|---|
| | 268 | pour témoigner des deux mises à jours, puis laisser l'utilisateur résoudre |
|---|
| | 269 | le conflit à la main. </para> |
|---|
| | 270 | |
|---|
| | 271 | <para> Certains systÚmes de réplication multi-maîtres asynchrones essaient |
|---|
| | 272 | de résoudre les conflits en trouvant de moyens pour appliquer partiellement |
|---|
| | 273 | les mises à jour. Par exemple, dans le cas de la mise à jour d'un adresse, |
|---|
| | 274 | si un autre utilisateur tente de mettre à jour le nom de la rue, alors le |
|---|
| | 275 | systÚme de résolution des conflits essaie d'appliquer les mises à jour |
|---|
| | 276 | dans un ordre non-conflictuel. On peut considérer cette méthode comme |
|---|
| | 277 | une forme de <quote>partitionnement de table</quote> où l'on considÚre la |
|---|
| | 278 | base de données comme une table constituée de plusieurs <quote>sous-tables</quote>. </para> |
|---|
| | 279 | |
|---|
| | 280 | <para> Les systÚmes de résolution de conflit nécessaire presque toujours |
|---|
| | 281 | une bonne connaissance du domaine de l'application, ce qui implique |
|---|
| | 282 | qu'ils ne peuvent résoudre des conflits automatiquement uniquement si |
|---|
| | 283 | vous leur indiquez une politique de résolution. S'ils rencontrent |
|---|
| | 284 | un conflit et qu'il n'existe pas de politique définie, la réplication |
|---|
| | 285 | s'arrête jusqu'à ce que quelqu'un résolve le conflit à la main.</para> |
|---|