Changeset 939

Show
Ignore:
Timestamp:
03/04/08 19:12:42 (10 months ago)
Author:
sas
Message:

Relecture gin OK.
close #182

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • traduc/trunk/postgresql/external-projects.xml

    r888 r939  
    1818   Pour aider la communauté à développer ses projets externes,  
    1919   <ulink url="http://www.pgfoundry.org/">PgFoundry</ulink>, site web 
    20    qui héberge les projets en relation avec la distribution 
    21    <productname>PostgreSQL</productname> a été créé. PgFoundry est construit à partir du 
     20   qui héberge les projets liés à <productname>PostgreSQL</productname> 
     21   a été créé. PgFoundry est construit à partir du 
    2222   projet GForge similaire à 
    2323   <ulink url="http://sourceforge.net">SourceForge.net</ulink> dans ses 
    2424   fonctionnalités, puisqu'il fournit des listes de diffusion, des forums, un outil 
    2525   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 souhaite 
     26   libre en relation avec <productname>PostgreSQL</productname>, qui souhaite 
    2727   l'héberger sur PgFoundry, peut créer un nouveau projet. 
    2828  </para> 
     
    3737 
    3838  <para> 
    39    Il n'existe que deux interfaces client dans la distribution 
     39   Il n'existe que deux interfaces clients dans la distribution 
    4040   de base de <productname>PostgreSQL</productname>&nbsp;: 
    4141   <itemizedlist> 
     
    4444      <link linkend="libpq">libpq</link>, car il s'agit de 
    4545      l'interface principal pour le langage C et parce que de nombreux 
    46       interfaces clients sont construits à partir d'elle&nbsp;; 
     46      interfaces clients sont construits dessus&nbsp;; 
    4747     </para> 
    4848    </listitem> 
     
    6161   certains de ces projets. Ils peuvent ne pas être distribués sous la même 
    6262   licence que <productname>PostgreSQL</productname>. 
    63    Pour plus d'informations sur chaque interface, avec les termes de la licence, 
    64    se référer au 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. 
    6565  </para> 
    6666 
    6767  <table id="language-interface-table"> 
    68    <title>Interfaces client maintenues en externe</title> 
     68   <title>Interfaces clients maintenus en externe</title> 
    6969 
    7070   <tgroup cols="4"> 
     
    124124      <entry>psqlODBC</entry> 
    125125      <entry>ODBC</entry> 
    126       <entry>Pilote ODBC le plus communément utilisé </entry> 
     126      <entry>Pilote ODBC le plus utilisé</entry> 
    127127      <entry><ulink url="http://psqlodbc.projects.postgresql.org/">http://psqlodbc.projects.postgresql.org/</ulink></entry> 
    128128     </row> 
     
    160160   <xref linkend="pl-language-table"/> liste certains de ces langages. Ils 
    161161   peuvent ne pas être distribués sous la même licence que  
    162    <productname>PostgreSQL</productname>. Pour plus d'informations sur 
    163    chaque langage, avec les termes de la licence, se référer au 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 à 
    164164   la documentation. 
    165165  </para> 
     
    245245   Même les 
    246246   solutions de réplication de <productname>PostgreSQL</productname> sont 
    247    développées en externe. Par exemple
     247   développées en externe. Ainsi
    248248   <application><ulink url="http://www.slony.info">Slony-I</ulink></application>, 
    249249   solution populaire de réplication maître/esclave, est développée indépendamment du 
  • traduc/trunk/postgresql/gettingstarted.xml

    r888 r939  
    44     par      $Author$ 
    55     révision $Revision$ --> 
     6<!-- SAS : 20080228, PG83 --> 
    67 
    78<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" 
     
    4142 <para> 
    4243  Cet ouvrage contient une édition spéciale de la documentation officielle de 
    43   <productname>PostgreSQL</productname>. Vous n'y trouverez que les informations 
    44   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>
    4546 </para> 
    4647</preface> 
     
    167168 
    168169 <chapter id="reference-client"> 
    169   <title>Applications client de PostgreSQL</title> 
     170  <title>Applications clientes de PostgreSQL</title> 
    170171 
    171172   &clusterdb; 
  • traduc/trunk/postgresql/gin.xml

    r888 r939  
    44     par      $Author$ 
    55     révision $Revision$ --> 
     6<!-- SAS : 20080228, PG83 --> 
    67 
    78<chapter id="GIN"> 
     
    1617 <title>Introduction</title> 
    1718 
     19<!-- posting list ?  
     20     liste postée me semble malheureux. Je mets "liste" en attendant mieux --> 
    1821 <para> 
    1922   <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 
    2125   paires (clé, liste de lignes) où le terme <quote>liste de lignes</quote> 
    2226   est un ensemble de lignes dans lesquelles la clé est valable. Chaque valeur 
    23    indexée peut contenir plusieurs clés, pour que le même identifiant de ligne 
    24    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 pas 
    29    besoin de connaître l'opération qu'il accélère. À la place, il utilise 
    30    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éveloppement 
    35   de types de données personnalisés avec des méthodes d'accès appropriées par 
    36   un expert dans le domaine du type de données, plutôt que par un expert des 
    37   bases de données. L'utilisation de <acronym>GiST</acronym> fournit le 
     27   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 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 
    3842  même avantage. 
    3943 </para> 
    4044 
    4145  <para> 
    42    L'implémentation de <acronym>GIN</acronym> dans 
     46   L'implantation de <acronym>GIN</acronym> dans 
    4347   <productname>PostgreSQL</productname> est principalement l'oeuvre de 
    4448   Teodor Sigaev et Oleg Bartunov. Plus d'informations sur <acronym>GIN</acronym> 
     
    5256 
    5357 <para> 
    54    L'interface <acronym>GIN</acronym> a un haut niveau d'abstraction, nécessitant 
    55    à la personne implémentant la méthode d'accès d'implémenter seulement les 
    56    sémantiques du type de données en cours d'accès. La couche  
    57    <acronym>GIN</acronym> elle-même s'occupe de la concurrence, des traces 
     58   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 
    5862   et des recherches dans la structure de l'arbre. 
    5963 </para> 
    6064 
    6165 <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 qui définissent le comportement des clés dans l'arbre 
    65    et les relations entre les clés, les valeurs indexées et les requêtes 
    66    indexables. En bref, <acronym>GIN</acronym> combine une extensibilité 
    67    avec une généralisation, une ré-utilisation du code et une interface 
     66   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 
    6872   claire. 
    6973 </para> 
     
    7983     <listitem> 
    8084      <para> 
    81            Compare les clés (valeurs non indexées&nbsp;!) et renvoie un entier 
    82            plus ptit que zéro, zéro ou plus grand que zéro, indiquant que la 
    83            première clé est plus petite, égale à, plus grande que la seconde. 
     85           Compare les clés (et non les valeurs indexées&nbsp;!) 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. 
    8488      </para> 
    8589     </listitem> 
     
    9094     <listitem> 
    9195      <para> 
    92            Renvoie un tableau de clés à partir de valeurs à indexer. Le nombre 
     96           Renvoie un tableau de clés à partir d'une valeur à indexer. Le nombre 
    9397           de clés renvoyées doit être stocké dans <literal>*nkeys</literal>. 
    9498      </para> 
     
    101105     <listitem> 
    102106      <para> 
    103        Renvoie un tableau de clés suivant une valeur indiquée&nbsp;; c'est-à-dire 
     107       Renvoie un tableau de clés en fonction de la valeur à requêter&nbsp;; c'est-à-dire 
    104108       que <literal>query</literal> est la valeur du côté droit d'un opérateur 
    105109       indexable dont le côté gauche est la colonne indexée. 
    106110       <literal>n</literal> est le numéro de stratégie de l'opérateur dans la 
    107111       classe d'opérateur (voir <xref linkend="xindex-strategies"/>). Souvent, 
    108        <function>extractQuery</function> aura besoin de consulter 
     112       <function>extractQuery</function> doit consulter 
    109113       <literal>n</literal> pour déterminer le type de données de 
    110        <literal>query</literal> et les valeurs de clés qui doivent être 
    111        extraites. Le nombre de clés renvoyées doit être stocké dans 
     114       <literal>query</literal> et les valeurs de clés à extraire. 
     115       Le nombre de clés renvoyées doit être stocké dans 
    112116       <literal>*nkeys</literal>. 
    113117       Si le nombre de clés est égal à zéro, alors <function>extractQuery</function> 
     
    116120       parcours séquentiel doit être lancé. -1 signifie que rien ne satisfait 
    117121       la requête (<literal>query</literal>). Le choix de la valeur est basé 
    118        sur la signification sémantique de l'opération avec le numéro de 
     122       sur la signification sémantique de l'opération correspondant au numéro de 
    119123       stratégie indiqué. 
    120124      </para> 
     
    127131      <para> 
    128132       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 satisfaire 
     133       pour le numéro de stratégie <literal>n</literal> (ou peut satisfaire 
    130134       si l'opérateur est marqué RECHECK dans la classe d'opérateur). 
    131135       Le tableau <literal>check</literal> a la même longueur que le nombre de 
     
    133137       cette requête. Chaque élément du tableau <literal>check</literal> est 
    134138       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ésultant 
    136        d'<function>extractQuery</function> est présent dans la valeur indexée. 
    137        Le datum original <literal>query</literal> (pas le tableau de la clé 
    138        extraite&nbsp;!) est passé au cas où la méthode 
     139       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&nbsp;!) est passé au cas où la méthode 
    139143       <function>consistent</function> a besoin de le consulter. 
    140144      </para> 
     
    147151 
    148152<sect1 id="gin-implementation"> 
    149  <title>Implémentation</title> 
     153 <title>Implantation</title> 
    150154 
    151155 <para> 
    152156  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'un 
    154   tableau par exemple) et où chaque ligne d'une page enfant est soit un pointeur 
     157  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 
    155159  vers un B-tree sur des pointeurs heap (PT, posting tree) soit une liste de 
    156160  pointeurs heap (PL, posting list) si la liste est suffisamment petite. 
     
    160164 
    161165<sect1 id="gin-tips"> 
    162 <title>Conseils et astuces sur GIN</title> 
     166<title>Conseils et astuces GIN</title> 
    163167 
    164168 <variablelist> 
    165169  <varlistentry> 
    166    <term>Create vs insert</term> 
     170   <term>Création vs insertion</term> 
    167171   <listitem> 
    168172        <para> 
    169173         Dans la plupart des cas, l'insertion dans un index <acronym>GIN</acronym> 
    170          est lent à cause de la probabilité d'insertion de nombreuses clés pour 
    171          chaque valeur. Donc, en cas de nombreuses insertions dans une table, il 
     174         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 
    172176         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 ? --> 
    178183  <varlistentry> 
    179184   <term><xref linkend="guc-maintenance-work-mem"/></term> 
     
    182187     Le temps de construction d'un index <acronym>GIN</acronym> dépend 
    183188     grandement du paramètre <varname>maintenance_work_mem</varname>&nbsp;; 
    184      faites bien attention à ce paramètre lors 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. 
    185190    </para> 
    186191   </listitem> 
     
    192197        <para> 
    193198         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 texte 
    195          complet dans <productname>PostgreSQL</productname> et il arrive 
    196          fréquemment qu'une recherche renvoie un gros ensemble de résultats. 
    197          De plus, ceci arrive souvent quand la requête contient des mots très 
    198          fréquents, de telle façon qu'un gros ensemble de résultats n'est même pas 
    199          utile. La lecture des lignes du disque et leur tri prend beaucoup de temps, 
    200          ce qui est une situation inacceptable en production. (Notez que l
    201          recherche dans l'index est en soi trè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. (L
     206         recherche dans l'index est, elle, très rapide.) 
    202207        </para> 
    203208        <para> 
    204209         Pour faciliter l'exécution contrôlée de telles requêtes, 
    205          <acronym>GIN</acronym> a une limite supérieure souple configurable sur le 
    206          nombre de lignes renvoyées, le paramètre de configuration 
    207          <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, choisi 
    210          au hasard
    211         </para> 
    212         <para> 
    213          <quote>Douce</quote> (<foreignphrase>Soft</foreignphrase>) signifie 
    214          que le nombre réel des résultats renvoyés pourrait être légèrement 
    215          différent de la limite spécifiée, suivant la requête et la qualité du 
     210         <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 
    216221         générateur de nombres aléatoires du système. 
    217222        </para> 
     
    226231 
    227232 <para> 
    228   <acronym>GIN</acronym> n'a pas de support du parcours d'index complets&nbsp;: 
     233  <acronym>GIN</acronym> ne supporte pas les parcours d'index complets&nbsp;: 
    229234  comme il y a souvent de nombreuses clés par valeur, chaque pointeur de pile 
    230   serait renvoyé plusieurs fois et il n'existe pas de moyen simple d'empêcher 
     235  serait renvoyé plusieurs fois, or il n'existe pas de moyen simple d'empêcher 
    231236  cela. 
    232237 </para> 
    233238 
    234239 <para> 
    235   Quand <function>extractQuery</function> ne renvoit aucune clé, 
    236   <acronym>GIN</acronym> émettra une erreur. Suivant l'opérateur, une requête 
    237   vide pourrait correspondre à toute ou aucune des valeurs indexées (par 
    238   exemple, chaque tableau contient le tableau vide mais ne surcharge pas le 
    239   tableau vide) et <acronym>GIN</acronym> ne peut pas déterminer la bonne 
    240   réponse ou produire un résultat de parcours d'un index complet s'il pouvait 
    241   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> mais 
    246   dans ce cas, la valeur indexée ne sera pas représentée dans l'index. C'est une 
    247   autre raison pour laquelle le parcours d'index complet n'est pas utile &mdash; 
     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 &mdash; 
    248253  il manquerait ce type de lignes. 
    249254 </para> 
    250255 
    251256 <para> 
    252   <acronym>GIN</acronym> recherche les clés par une égalité seule. Ceci pourra 
    253   être amélioré dans le futur
     257  <acronym>GIN</acronym> ne recherche les clés que par égalité. Cela doit être 
     258  amélioré
    254259 </para> 
    255260</sect1> 
     
    259264 
    260265 <para> 
    261   La distribution des sources de <productname>PostgreSQL</productname> inclu
     266  Les sources de <productname>PostgreSQL</productname> incluen
    262267  des classes d'opérateur <acronym>GIN</acronym> pour <type>tsvector</type> et 
    263   pour les tableaux à une dimension de tous 
     268  pour les tableaux unidimensionnel de tous 
    264269  les types internes. Les modules <filename>contrib</filename> suivants 
    265270  contiennent aussi des classes d'opérateurs <acronym>GIN</acronym>&nbsp;: 
     
    284289   <term>pg_trgm</term> 
    285290   <listitem> 
    286     <para>Similarité de texte en utilisant la correspondance de trigramme</para> 
     291    <para>Similarité de texte par correspondance de trigramme</para> 
    287292   </listitem> 
    288293  </varlistentry>