Changeset 939
- Timestamp:
- 03/04/08 19:12:42 (10 months ago)
- Files:
-
- traduc/trunk/postgresql/external-projects.xml (modified) (7 diffs)
- traduc/trunk/postgresql/gettingstarted.xml (modified) (3 diffs)
- traduc/trunk/postgresql/gin.xml (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
traduc/trunk/postgresql/external-projects.xml
r888 r939 18 18 Pour aider la communauté à développer ses projets externes, 19 19 <ulink url="http://www.pgfoundry.org/">PgFoundry</ulink>, site web 20 qui héberge les projets en relation avec la distribution21 <productname>PostgreSQL</productname>a été créé. PgFoundry est construit à partir du20 qui héberge les projets liés à <productname>PostgreSQL</productname> 21 a été créé. PgFoundry est construit à partir du 22 22 projet GForge similaire à 23 23 <ulink url="http://sourceforge.net">SourceForge.net</ulink> dans ses 24 24 fonctionnalités, puisqu'il fournit des listes de diffusion, des forums, un outil 25 25 de gestion des bogues, un CVS et un site web. Tout développeur d'un projet 26 libre en relation avec <productname>PostgreSQL</productname> qui souhaite26 libre en relation avec <productname>PostgreSQL</productname>, qui souhaite 27 27 l'héberger sur PgFoundry, peut créer un nouveau projet. 28 28 </para> … … 37 37 38 38 <para> 39 Il n'existe que deux interfaces client dans la distribution39 Il n'existe que deux interfaces clients dans la distribution 40 40 de base de <productname>PostgreSQL</productname> : 41 41 <itemizedlist> … … 44 44 <link linkend="libpq">libpq</link>, car il s'agit de 45 45 l'interface principal pour le langage C et parce que de nombreux 46 interfaces clients sont construits à partir d'elle ;46 interfaces clients sont construits dessus ; 47 47 </para> 48 48 </listitem> … … 61 61 certains de ces projets. Ils peuvent ne pas être distribués sous la même 62 62 licence que <productname>PostgreSQL</productname>. 63 Pour plus d'informations sur chaque interface, avec les termes de la licence,64 se référerau site web et à la documentation.63 Pour obtenir plus d'informations sur chaque interface, avec les termes de la licence, 64 on se référera au site web et à la documentation. 65 65 </para> 66 66 67 67 <table id="language-interface-table"> 68 <title>Interfaces client maintenues en externe</title>68 <title>Interfaces clients maintenus en externe</title> 69 69 70 70 <tgroup cols="4"> … … 124 124 <entry>psqlODBC</entry> 125 125 <entry>ODBC</entry> 126 <entry>Pilote ODBC le plus communément utilisé</entry>126 <entry>Pilote ODBC le plus utilisé</entry> 127 127 <entry><ulink url="http://psqlodbc.projects.postgresql.org/">http://psqlodbc.projects.postgresql.org/</ulink></entry> 128 128 </row> … … 160 160 <xref linkend="pl-language-table"/> liste certains de ces langages. Ils 161 161 peuvent ne pas être distribués sous la même licence que 162 <productname>PostgreSQL</productname>. Pour plus d'informations sur163 chaque langage, avec les termes de la licence, se référerau site web et à162 <productname>PostgreSQL</productname>. Pour obtenir plus d'informations sur 163 chaque langage, avec les termes de la licence, on se référera au site web et à 164 164 la documentation. 165 165 </para> … … 245 245 Même les 246 246 solutions de réplication de <productname>PostgreSQL</productname> sont 247 développées en externe. Par exemple,247 développées en externe. Ainsi, 248 248 <application><ulink url="http://www.slony.info">Slony-I</ulink></application>, 249 249 solution populaire de réplication maître/esclave, est développée indépendamment du traduc/trunk/postgresql/gettingstarted.xml
r888 r939 4 4 par $Author$ 5 5 révision $Revision$ --> 6 <!-- SAS : 20080228, PG83 --> 6 7 7 8 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" … … 41 42 <para> 42 43 Cet ouvrage contient une édition spéciale de la documentation officielle de 43 <productname>PostgreSQL</productname>. Vous n'y trouverezque les informations44 minimales pour commencer à utiliser PostgreSQL.44 <productname>PostgreSQL</productname>. Il ne contient que les informations 45 minimales pour bien débuter avec <productname>PostgreSQL</productname>. 45 46 </para> 46 47 </preface> … … 167 168 168 169 <chapter id="reference-client"> 169 <title>Applications client de PostgreSQL</title>170 <title>Applications clientes de PostgreSQL</title> 170 171 171 172 &clusterdb; traduc/trunk/postgresql/gin.xml
r888 r939 4 4 par $Author$ 5 5 révision $Revision$ --> 6 <!-- SAS : 20080228, PG83 --> 6 7 7 8 <chapter id="GIN"> … … 16 17 <title>Introduction</title> 17 18 19 <!-- posting list ? 20 liste postée me semble malheureux. Je mets "liste" en attendant mieux --> 18 21 <para> 19 22 <acronym>GIN</acronym> est l'acronyme de <foreignphrase>Generalized Inverted 20 Index</foreignphrase>. C'est une structure d'index stockant des ensembles de 23 Index</foreignphrase> (ou index générique inverse). C'est une structure 24 d'index stockant des ensembles de 21 25 paires (clé, liste de lignes) où le terme <quote>liste de lignes</quote> 22 26 est un ensemble de lignes dans lesquelles la clé est valable. Chaque valeur 23 indexée peut contenir plusieurs clés, pour quele même identifiant de ligne24 apparaisse dans plusieurs listes postées.25 </para> 26 27 <para> 28 Il est généralisé dans le sens qu'un index <acronym>GIN</acronym> n'a pas29 besoin deconnaître l'opération qu'il accélère. À la place, il utilise30 les stratégies personnalisées définies pour des types de données particuliers.31 </para> 32 33 <para> 34 Un avantage de <acronym>GIN</acronym> est qu'il autorise le développement35 de types de données personnalisés avec des méthodes d'accès appropriées par36 un expert dans le domaine du type de données, plutôt que par un expert des37 bases de données. L'utilisation de <acronym>GiST</acronym> fournitle27 indexée peut contenir plusieurs clés, le même identifiant de ligne 28 peut ainsi apparaître dans plusieurs listes. 29 </para> 30 31 <para> 32 Il est généralisé dans le sens où un index <acronym>GIN</acronym> n'a pas 33 à connaître l'opération qu'il accélère. À la place, il utilise 34 des stratégies adaptées définies pour des types de données particuliers. 35 </para> 36 37 <para> 38 Un des avantages de <acronym>GIN</acronym> est la possibilité qu'il offre que 39 des types de données personnalisés et les méthodes d'accès appropriées soient 40 développés par un expert du domaine du type de données, plutôt que par un 41 expert en bases de données. L'utilisation de <acronym>GiST</acronym> offre le 38 42 même avantage. 39 43 </para> 40 44 41 45 <para> 42 L'impl émentation de <acronym>GIN</acronym> dans46 L'implantation de <acronym>GIN</acronym> dans 43 47 <productname>PostgreSQL</productname> est principalement l'oeuvre de 44 48 Teodor Sigaev et Oleg Bartunov. Plus d'informations sur <acronym>GIN</acronym> … … 52 56 53 57 <para> 54 L'interface <acronym>GIN</acronym> a un haut niveau d'abstraction , nécessitant55 à la personne implémentant la méthode d'accès d'implémenter seulementles56 sémantiques du type de données en cours d'accès. La couche57 <acronym>GIN</acronym> elle-même s'occupede la concurrence, des traces58 L'interface <acronym>GIN</acronym> a un haut niveau d'abstraction. De ce 59 fait, la personne qui code la méthode d'accès n'a besoin d'implanter que les 60 sémantiques du type de données accédé. La couche 61 <acronym>GIN</acronym> prend en charge la gestion de la concurrence, des traces 58 62 et des recherches dans la structure de l'arbre. 59 63 </para> 60 64 61 65 <para> 62 Ce qui est nécessaire pour qu'une méthode d'accès <acronym>GIN</acronym>63 fonctionne est d'implémenter quatre méthodes définies par l'utilisateur,64 méthodes quidéfinissent le comportement des clés dans l'arbre65 et les relations entre les clés, les valeurs indexées et lesrequêtes66 indexables. En bref, <acronym>GIN</acronym> combine une extensibilité67 avec une généralisation, uneré-utilisation du code et une interface66 Pour obtenir une méthode d'accès <acronym>GIN</acronym> 67 fonctionnelle, il suffit d'implanter quatre méthodes utilisateur. Celles-ci 68 définissent le comportement des clés dans l'arbre 69 et les relations entre clés, valeurs indexées et requêtes 70 indexables. En résumé, <acronym>GIN</acronym> combine extensibilité, 71 généralisation, ré-utilisation du code et une interface 68 72 claire. 69 73 </para> … … 79 83 <listitem> 80 84 <para> 81 Compare les clés ( valeurs nonindexées !) et renvoie un entier82 plus ptit que zéro, zéro ou plus grand que zéro, indiquant quela83 première clé est plus petite, égale à, plus grande quela seconde.85 Compare les clés (et non les valeurs indexées !) et renvoie un entier 86 négatif, zéro ou un entier positif, qui indique si la 87 première clé est inférieure, égale à ou supérieure à la seconde. 84 88 </para> 85 89 </listitem> … … 90 94 <listitem> 91 95 <para> 92 Renvoie un tableau de clés à partir d e valeursà indexer. Le nombre96 Renvoie un tableau de clés à partir d'une valeur à indexer. Le nombre 93 97 de clés renvoyées doit être stocké dans <literal>*nkeys</literal>. 94 98 </para> … … 101 105 <listitem> 102 106 <para> 103 Renvoie un tableau de clés suivant une valeur indiquée ; c'est-à-dire107 Renvoie un tableau de clés en fonction de la valeur à requêter ; c'est-à-dire 104 108 que <literal>query</literal> est la valeur du côté droit d'un opérateur 105 109 indexable dont le côté gauche est la colonne indexée. 106 110 <literal>n</literal> est le numéro de stratégie de l'opérateur dans la 107 111 classe d'opérateur (voir <xref linkend="xindex-strategies"/>). Souvent, 108 <function>extractQuery</function> aura besoin deconsulter112 <function>extractQuery</function> doit consulter 109 113 <literal>n</literal> pour déterminer le type de données de 110 <literal>query</literal> et les valeurs de clés qui doivent être111 extraites.Le nombre de clés renvoyées doit être stocké dans114 <literal>query</literal> et les valeurs de clés à extraire. 115 Le nombre de clés renvoyées doit être stocké dans 112 116 <literal>*nkeys</literal>. 113 117 Si le nombre de clés est égal à zéro, alors <function>extractQuery</function> … … 116 120 parcours séquentiel doit être lancé. -1 signifie que rien ne satisfait 117 121 la requête (<literal>query</literal>). Le choix de la valeur est basé 118 sur la signification sémantique de l'opération avec lenuméro de122 sur la signification sémantique de l'opération correspondant au numéro de 119 123 stratégie indiqué. 120 124 </para> … … 127 131 <para> 128 132 Renvoie TRUE si la valeur indexée satisfait l'opérateur de la requête 129 avec un numéro de stratégie <literal>n</literal> (ou pourrait satisfaire133 pour le numéro de stratégie <literal>n</literal> (ou peut satisfaire 130 134 si l'opérateur est marqué RECHECK dans la classe d'opérateur). 131 135 Le tableau <literal>check</literal> a la même longueur que le nombre de … … 133 137 cette requête. Chaque élément du tableau <literal>check</literal> est 134 138 TRUE si la valeur indexée contient la clé correspondante de la requête, 135 c'est-à-dire si check[i] == TRUE, la i-ième clé du tableau résultant136 d'<function>extractQuery</function> est présent dans la valeur indexée.137 Le datum original <literal>query</literal> (pas le tableau de laclé138 extrait e !) est passé au cas où la méthode139 c'est-à-dire que si (check[i] == TRUE), la i-ème clé du tableau résultant 140 d'<function>extractQuery</function> est présente dans la valeur indexée. 141 Le datum <literal>query</literal> d'origine (pas le tableau de clé 142 extrait !) est passé au cas où la méthode 139 143 <function>consistent</function> a besoin de le consulter. 140 144 </para> … … 147 151 148 152 <sect1 id="gin-implementation"> 149 <title>Impl émentation</title>153 <title>Implantation</title> 150 154 151 155 <para> 152 156 En interne, un index <acronym>GIN</acronym> contient un index B-tree construit 153 sur des clés, où chaque clé est un élément de la valeur indexé (un membre d'un154 tableau par exemple) et où chaque ligne d'une page enfantest soit un pointeur157 sur des clés, où chaque clé est un élément de la valeur indexée (un membre d'un 158 tableau par exemple) et où chaque ligne d'une page feuille est soit un pointeur 155 159 vers un B-tree sur des pointeurs heap (PT, posting tree) soit une liste de 156 160 pointeurs heap (PL, posting list) si la liste est suffisamment petite. … … 160 164 161 165 <sect1 id="gin-tips"> 162 <title>Conseils et astuces surGIN</title>166 <title>Conseils et astuces GIN</title> 163 167 164 168 <variablelist> 165 169 <varlistentry> 166 <term>Cr eate vs insert</term>170 <term>Création vs insertion</term> 167 171 <listitem> 168 172 <para> 169 173 Dans la plupart des cas, l'insertion dans un index <acronym>GIN</acronym> 170 est lent à causede la probabilité d'insertion de nombreuses clés pour171 chaque valeur. Donc, en cas de nombreuses insertions dans une table, il174 est lente du fait de la probabilité d'insertion de nombreuses clés pour 175 chaque valeur. C'est pourquoi, pour les chargements massifs dans une table, il 172 176 est conseillé de supprimer l'index GIN et de le re-créer après 173 l'opération d'insertion. 174 </para> 175 </listitem> 176 </varlistentry> 177 177 le chargement. 178 </para> 179 </listitem> 180 </varlistentry> 181 182 <!-- to skimp ? --> 178 183 <varlistentry> 179 184 <term><xref linkend="guc-maintenance-work-mem"/></term> … … 182 187 Le temps de construction d'un index <acronym>GIN</acronym> dépend 183 188 grandement du paramètre <varname>maintenance_work_mem</varname> ; 184 faites bien attention à ce paramètrelors de la création d'un index.189 la mesquinerie au regard de la mémoire de travail ne paie pas lors de la création d'un index. 185 190 </para> 186 191 </listitem> … … 192 197 <para> 193 198 La raison principale qui a poussé le développement des index 194 <acronym>GIN</acronym> a été la création du support des recherches de texte195 completdans <productname>PostgreSQL</productname> et il arrive196 fréquemment qu'une recherche renvoie un gros ensemblede résultats.197 De plus, ceci arrive souvent quandla requête contient des mots très198 fréquents, de telle façon qu'un grosensemble de résultats n'est même pas199 utile. La lecture des lignes dudisque et leur tri prend beaucoup de temps,200 ce qui est une situation inacceptable en production. (Notez que la201 recherche dans l'index est en soitrès rapide.)199 <acronym>GIN</acronym> a été la volonté de supporter les recherches 200 plein-texte dans <productname>PostgreSQL</productname> et il arrive 201 fréquemment qu'une recherche renvoie un ensemble volumineux de résultats. 202 Cela arrive d'autant plus fréquemment que la requête contient des mots très 203 fréquents, auquel cas l'ensemble de résultats n'est même pas 204 utile. Puisque la lecture des lignes sur disque et leur tri prend beaucoup de temps, 205 cette situation est inacceptable en production. (La 206 recherche dans l'index est, elle, très rapide.) 202 207 </para> 203 208 <para> 204 209 Pour faciliter l'exécution contrôlée de telles requêtes, 205 <acronym>GIN</acronym> a une limite supérieure souple configurable surle206 nombre de lignes renvoyées, le paramètre de configuration207 <varname>gin_fuzzy_search_limit</varname>. Par défaut, il est configuré à208 0 (c'est-à-dire sans limite). Si une limite différente de 0 est renvoyée,209 alors l'ensemble renvoyé est un sous-ensemble du résultat complet, choisi210 a u hasard.211 </para> 212 <para> 213 <quote> Douce</quote> (<foreignphrase>Soft</foreignphrase>)signifie214 que le nombre réel des résultats renvoyés p ourrait êtrelégèrement215 d ifférent de la limite spécifiée, suivant la requête etla qualité du210 <acronym>GIN</acronym> dispose d'une limite supérieure souple 211 configurable du nombre de lignes renvoyées, le paramètre de configuration 212 <varname>gin_fuzzy_search_limit</varname>. Par défaut, il est 213 positionné à 0 (c'est-à-dire sans limite). Si une limite différente de 214 0 est choisie, alors l'ensemble renvoyé est un sous-ensemble du résultat complet, choisi 215 aléatoirement. 216 </para> 217 <para> 218 <quote>Souple</quote> signifie 219 que le nombre réel des résultats renvoyés peut différer légèrement 220 de la limite indiquée, en fonction de la requête et de la qualité du 216 221 générateur de nombres aléatoires du système. 217 222 </para> … … 226 231 227 232 <para> 228 <acronym>GIN</acronym> n 'a pas de support duparcours d'index complets :233 <acronym>GIN</acronym> ne supporte pas les parcours d'index complets : 229 234 comme il y a souvent de nombreuses clés par valeur, chaque pointeur de pile 230 serait renvoyé plusieurs fois etil n'existe pas de moyen simple d'empêcher235 serait renvoyé plusieurs fois, or il n'existe pas de moyen simple d'empêcher 231 236 cela. 232 237 </para> 233 238 234 239 <para> 235 Quand <function>extractQuery</function> ne renvoi taucune clé,236 <acronym>GIN</acronym> émet tra une erreur. Suivantl'opérateur, une requête237 vide p ourrait correspondre à touteou aucune des valeurs indexées (par238 exemple, chaque tableau contient le tableau vide mais ne surcharge pas le239 tableau vide) et <acronym>GIN</acronym> ne peutpas déterminer la bonne240 réponse ou produire un résultat de parcours d'un index complet s'il pouvait241 déterminer si c'était correct.242 </para> 243 244 <para> 245 Ne renvoyer aucune clé n'est pas une erreur de <function>extractValue</function> mais246 dans ce cas, la valeur indexée ne serapas représentée dans l'index. C'est une247 autre raison pour laquelle le parcours d'index complet n'est pasutile —240 Quand <function>extractQuery</function> ne renvoie aucune clé, 241 <acronym>GIN</acronym> émet une erreur. En fonction de l'opérateur, une requête 242 vide peut correspondre à toutes, quelques, ou aucune des valeurs indexées (par 243 exemple, tout tableau contient le tableau vide mais ne recouvre pas le 244 tableau vide). <acronym>GIN</acronym> ne peut alors pas déterminer la bonne 245 réponse, pas plus qu'il ne peut fournir un résultat de parcours d'index 246 complet en déterminant la justesse de cette opération. 247 </para> 248 249 <para> 250 Qu'<function>extractValue</function> ne retourne aucune clé n'est pas une 251 erreur, mais dans ce cas, la valeur indexée n'est pas représentée dans l'index. C'est une 252 autre raison pour laquelle le parcours d'index complet est inutile — 248 253 il manquerait ce type de lignes. 249 254 </para> 250 255 251 256 <para> 252 <acronym>GIN</acronym> recherche les clés par une égalité seule. Ceci pourra253 être amélioré dans le futur.257 <acronym>GIN</acronym> ne recherche les clés que par égalité. Cela doit être 258 amélioré. 254 259 </para> 255 260 </sect1> … … 259 264 260 265 <para> 261 L a distribution des sources de <productname>PostgreSQL</productname> inclut266 Les sources de <productname>PostgreSQL</productname> incluent 262 267 des classes d'opérateur <acronym>GIN</acronym> pour <type>tsvector</type> et 263 pour les tableaux à une dimensionde tous268 pour les tableaux unidimensionnel de tous 264 269 les types internes. Les modules <filename>contrib</filename> suivants 265 270 contiennent aussi des classes d'opérateurs <acronym>GIN</acronym> : … … 284 289 <term>pg_trgm</term> 285 290 <listitem> 286 <para>Similarité de texte en utilisant lacorrespondance de trigramme</para>291 <para>Similarité de texte par correspondance de trigramme</para> 287 292 </listitem> 288 293 </varlistentry>

