Typos et nouveau cours.
authorKim Nguyễn <kn@lri.fr>
Mon, 3 Feb 2014 09:20:40 +0000 (10:20 +0100)
committerKim Nguyễn <kn@lri.fr>
Mon, 3 Feb 2014 09:20:40 +0000 (10:20 +0100)
14 files changed:
bd/bd01.xhtml [new file with mode: 0644]
bd/bd02.xhtml [new file with mode: 0644]
bd/hdd.svg [new file with mode: 0644]
bd/page_comp.svg [new file with mode: 0644]
bd/page_ncomp.svg [new file with mode: 0644]
bd/page_var.svg [new file with mode: 0644]
bd/pdf/bd01.pdf [new file with mode: 0644]
bd/pdf/bd01_print.pdf [new file with mode: 0644]
bd/pdf/bd02.pdf [new file with mode: 0644]
bd/pdf/bd02_print.pdf [new file with mode: 0644]
prog_internet/pdf/prog_internet_09.pdf
prog_internet/pdf/prog_internet_09_print.pdf
prog_internet/prog_internet_09.xhtml
themes/uPsud.css

diff --git a/bd/bd01.xhtml b/bd/bd01.xhtml
new file mode 100644 (file)
index 0000000..3746faf
--- /dev/null
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+[
+         <!ENTITY in  "<small style='font-size:small'>∈</small>">
+         <!ENTITY notin  "<small style='font-size:small'>∉</small>">
+         <!ENTITY mapsto  "↦">
+]
+          >
+<html xmlns="http://www.w3.org/1999/xhtml" >
+  <head>
+    <title>Rappels</title>
+
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+    <meta name="copyright"
+          content="Copyright &#169; 2013 Kim Nguyễn" />
+
+    <!-- Load jQuery -->
+    <script src="../jquery-2.0.3.min.js" type="text/javascript" ></script>
+    <script src="../libs/raphael-min.js" type="text/javascript" ></script>
+    <!-- Load the library -->
+    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
+
+    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
+    <!-- Load a custom Theme, the class-element marks this style-sheet
+         a "theme" that can be swtiched dynamicaly -->
+    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
+
+    <!-- Customize some templates and initialize -->
+
+    <script type="text/javascript">
+      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
+      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
+      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
+
+      //Ensures that we load SWS at the very end, after MathJax has
+      //been initialized
+
+      $(window).load(SWS.Presentation.init);
+    </script>
+  </head>
+  <body>
+    <div class="sws-slide sws-cover sws-option-nofooter">
+      <h1>Bases de données</h1>
+      <h3>Polytech Paris-Sud</h3>
+      <h3>Apprentis 4<sup>ème</sup> année</h3>
+      <h1>Cours 1 : Généralités &amp; rappels</h1>
+      <a href="mailto:kn@lri.fr">kn@lri.fr</a><br/>
+      <a href="http://www.lri.fr/~kn/">http://www.lri.fr/~kn</a>
+    </div>
+
+    <h1>Avant-propos</h1>
+    <div class="sws-slide">
+      <h1>But du cours</h1>
+      <p>
+      Le but du cours est de donner une formation avancée sur un
+      aspects central des bases de données : <em>l'évaluation de
+      requêtes</em>. Le plan suivi par le cours est le suivant:
+      </p>
+      <ul>
+       <li>Rappels de l'algèbre relationnelle et d'SQL (rapide)</li>
+       <li>Propriétés physiques des disques (Rotatifs, SSD), notion
+       de page mémoire, hierarchie d'accès mémoire</li>
+       <li>Index: généralités, coût, structures de données (Arbres
+       B+, Hash Index, Bitmap Index)</li>
+       <li>Algorithmes de jointure</li>
+       <li>Plan de requête et optimisations algébriques</li>
+       <li>Bonus: ce que vous voulez (XML, Cloud, J2SE, …)</li>
+      </ul>
+    </div>
+    <div class="sws-slide">
+      <h1>Organisation du cours</h1>
+      <p>9 séances de <em>4h:</em></p>
+      <p>
+      <table class="btable" style="width:90%">
+       <tr><th >Date</th>
+           <th >Type</th>
+           <th >Heure</th>
+       </tr>
+       <tr>
+         <td>3/2</td><td>Cours/TD</td> <td>13h-17h</td></tr>
+       <tr><td>5/2</td><td> Cours/TD</td> <td>8h-12h</td></tr>
+       <tr><td>6/2</td><td> TP</td> <td>au PUIO, 13h-17h</td></tr>
+       <tr><td>10/2</td><td> Cours/TD</td> <td>13h-17h</td></tr>
+       <tr><td>12/2</td><td> TP</td> <td>au PUIO, 8h-12h</td></tr>
+       <tr><td>13/2</td><td> TP</td> <td>au PUIO, 13h-17h</td></tr>
+       <tr><td>31/3</td><td> Cours/TD</td> <td>13h-17h</td> </tr>
+       <tr><td>3/4</td><td> TP</td> <td>au PUIO, 13h-17h</td></tr>
+       <tr><td>9/4</td><td> Cours bonus/<em>exam</em></td> <td>8h-12h</td></tr>
+      </table>
+      </p>
+      <ul><li>Cours/TD : Kim Nguyen</li>
+      <li>TP: Andres Romero (certains TP seront <em>notés</em>)</li></ul>
+    </div>
+    <h1>Algèbre relationnelle</h1>
+    <div class="sws-slide">
+      <h1>Qu'est-ce que l'algèbre relationnelle?</h1>
+      <p class="sws-pause" >Une <em>algèbre</em> (ou <em>structure algébrique</em>) est un
+      <em>ensemble d'objets</em> (que l'on étudie) muni d'un ensemble
+      d'<em>opérations</em> (qui permettent de manipuler les objets)</p>
+
+      <p class="sws-pause" >Les objets manipulés par l'algèbre
+      relationnelle sont les <em>relations</em> <i>i.e.</i>
+      des <em>ensembles de n-uplets</em>.</p>
+      <p class="sws-pause" style="font-size:80%">(Rappel: une
+      relation n-aire est juste un ensemble de n-uplets. Par exemple,
+      la relation d'égalité sur les entiers est l'ensemble qui
+      contient tous les
+      couples <tt>(0,0)</tt>, <tt>(1,1)</tt>, <tt>(2,2)</tt>… )</p>
+      <p>On ne considère que des relations <em>finies</em>, sur des
+      n-uplets <em>fixes</em> dont les composantes ont un
+      type <em>simple</em></p>
+      <p><code>{ (1, "Kim", 32, T), (3,"Foo", 28, F), (2, "Bar", 77, T) }</code></p>
+      <ul class="sws-pause" style="background:white;">
+       <li>Les relations représentent des tables: ensemble
+       finis </li>
+       <li>Les relations contiennent des n-uplets de la même
+       taille</li>
+       <li>Un n-uplet ne peut pas contenir un ensemble (pas de table
+       dans une table)</li>
+       <li>(optionel) on ajoute un <em>schema</em> à la relation
+       (ex. <tt>(id, nom, age, prof)</tt>).</li>
+      </ul>
+    </div>
+    <div class="sws-slide">
+      <h1>Les opérateurs de l'algèbre relationnelle (1/2)</h1>
+      <p class="sws-pause" style="font-size:80%">(attention, plusieurs
+      présentations possibles)</p>
+      <p><tt>R</tt> et <tt>S</tt> sont deux relations, munies chacune
+      d'un schéma (<tt>ℝ=(a<sub>1</sub>,…,a<sub>m</sub>)</tt>
+      et <tt>𝕊=(b<sub>1</sub>,…,b<sub>n</sub>)</tt>) </p>
+      <p>Opérateurs ensemblistes:
+      <table>
+       <tr>
+         <td style="width:25%">Union :</td>
+         <td style="width:40%"><tt><em>R ∪ S</em> ≝ { r | r &notin; R ∨ r &in; S }</tt></td>
+         <td style="width:25%;text-align:right;">(requiert <tt>ℝ = 𝕊</tt>)</td>
+       </tr>
+       <tr>
+         <td style="width:25%">Différence :</td>
+         <td style="width:40%"><tt><em>R ∖ S</em> ≝ { r | r &in; R ∧ r &notin; S  }</tt></td>
+         <td style="width:25%;text-align:right;">(requiert <tt>ℝ = 𝕊</tt>)</td>
+       </tr>
+       <tr>
+         <td style="width:25%">Produit :</td>
+         <td style="width:40%;text-align:right;"><tt><em>R × S</em> ≝ {
+         (r<sub>1</sub>,…,r<sub>m</sub>,s<sub>1</sub>,…,s<sub>n</sub>)
+         | <br/>
+             (r<sub>1</sub>,…,r<sub>m</sub>) &in; R ∧
+             (s<sub>1</sub>,…,s<sub>n</sub>) &in; S  }</tt></td>
+         <td style="width:25%;text-align:right;"></td>
+       </tr>
+      </table>
+      </p>
+      <p class="sws-pause">Q1: A-t-on besoin de l'intersection ? (<tt>R ∩ S</tt>)
+      </p>
+      <p class="sws-pause">R1: Non car <tt>R ∩ S = (R ∪ S) ∖ ((S ∖ R)∪(R ∖ S))  </tt>
+      </p>
+    </div>
+    <div class="sws-slide">
+      <h1>Les opérateurs de l'algèbre relationnelle (2/2)</h1>
+      <p class="sws-pause" style="font-size:80%">(attention, plusieurs
+      présentations possibles)</p>
+      <p><tt>R</tt> est une  relation, munie
+      d'un schéma (<tt>ℝ=(a<sub>1</sub>,…,a<sub>m</sub>)</tt>) </p>
+      <p>Opérateurs relationnels:
+      <table>
+       <tr>
+         <td style="width:20%">Projection :</td>
+         <td style="width:54%"><tt><em>&pi;<sub>a<sub>1</sub>,…,a<sub>k</sub></sub></em>(R)
+         ≝ { (r.a<sub>1</sub>,…,r.a<sub>k</sub>) | r &in; R }</tt></td>
+         <td style="width:20%;text-align:right;"></td>
+       </tr>
+       <tr>
+         <td >Sélection :</td>
+         <td ><tt><em>&sigma;<sub>&phi;</sub></em>(R) ≝ { r &in; R | &sigma;(r)  }</tt></td>
+         <td style="text-align:right;">&sigma; est une formule
+         logique sur <tt>r</tt></td>
+       </tr>
+       <tr>
+         <td >Renommage :</td>
+         <td ><tt><em>&rho;<sub>a<sub>1</sub>&mapsto;b<sub>1</sub>,…</sub></em>(R)</tt>
+         associe R au schéma <tt>ℝ'=(b<sub>1</sub>,…)</tt></td>
+         <td style="text-align:right;"></td>
+       </tr>
+      </table>
+      </p>
+    </div>
+    <div class="sws-slide">
+      <h1>Opérateurs dérivés</h1>
+      <p><tt>R</tt> et <tt>S</tt> sont deux relations, munies chacune
+      d'un schéma (<tt>ℝ</tt> et  <tt>𝕊</tt>) </p>
+      <ul>
+       <li>Jointure: <tt>ℝ=(a<sub>1</sub>,…,a<sub>m</sub>,c<sub>1</sub>,…,c<sub>l</sub>)</tt>
+       et <tt>𝕊=(b<sub>1</sub>,…,b<sub>n</sub>,c<sub>1</sub>,…,c<sub>l</sub>)</tt><code>
+  R ⨝ S ≝ {
+          (r.a<sub>1</sub>,…,r.a<sub>m</sub>,r.c<sub>1</sub>,…,r.c<sub>l</sub>,s.b<sub>1</sub>,…,s.b<sub>n</sub>)
+          | r &in; R ∧ s &in; S ∧ ∀ 1 ≤ i ≤ l, r.c<sub>i</sub> = s.c<sub>i</sub> }   </code>
+       </li>
+       <li>Intersection : <tt>R ∩ S = { r | r &in; R ∧ r &in; S } </tt></li>
+       <li>Division : <tt>R ÷ S ≝ T</tt>, telle que <tt>T × S ⊆
+       R</tt> (les attributs de <tt>S</tt> sont un sous-ensemble des
+       attributs de <tt>T</tt></li>
+      </ul>
+    </div>
+    <div class="sws-slide">
+      <h1>Pourquoi utiliser l'algèbre relationnelle ?</h1>
+      <ul>
+       <li>Modèle abstrait qui permet de raisonner sur les requêtes
+         sans se soucier de la syntaxe</li>
+       <li>Permet de déduire des <em>optimisations
+           algébriques</em>
+         <p>Par exemple:<code>
+             &sigma;<sub>&phi;</sub>(R ∪ S) = &sigma;<sub>&phi;</sub>(R) ∪ &sigma;<sub>&phi;</sub>(S)
+           </code>
+           Avantageux si <tt>R</tt> et <tt>S</tt> ont beaucoup
+           d'éléments mais que       &sigma;<sub>&phi;</sub> en séléctionne peu.
+         </p>
+       </li>
+      </ul>
+    </div>
+    <h1>SQL</h1>
+    <div class="sws-slide">
+      <h1>SQL</h1>
+      <p>SQL (<i>Structured Query Language</i>) est un langage de
+      programmation dédié permettant de manipuler les données d'une BD
+      relationnelle. Il permet de:
+      </p>
+      <ul><li>Créer et détruire des tables</li>
+       <li>Insérer, supprimer, modifier des lignes d'une table</li>
+       <li>Interroger des tables</li>
+       <li>…</li>
+      </ul>
+
+    </div>
+    <div class="sws-slide">
+      <h1>SQL <tt>≠</tt> Algèbre relationnelle</h1>
+      <ul>
+       <li>Table  <tt>≠</tt> Relation : <span class="sws-pause">les tables peuvent
+       avoir plusieurs copies de la même ligne, alors que les
+       relations sont des ensembles</span></li>
+       <li>Opérations de comptage, d'agrégat, groupage, … </li>
+       <li>Les types sont finis et ont toujours une taille fixe
+         (<tt>INTEGER</tt>, <tt>VARCHAR[40]</tt>, <tt>DATE</tt>, …)</li>
+      </ul>
+    </div>
+    <div class="sws-slide">
+      <h1>Création/destruction de table</h1>
+<p><code>
+<em>CREATE TABLE</em> <i>MaTable</i> (
+     <i>att<sub>1</sub></i> <i>type<sub>1</sub></i> [<i>constr_col<sub>1</sub></i>], …, <i>att<sub>n</sub></i> <i>type<sub>n</sub></i> [<i>constr_col<sub>n</sub></i>]
+     [, <i>constr_table</i>]);</code></p>
+<ul>
+  <li><tt>MaTable</tt> : nom de la table </li>
+  <li><tt><i>att<sub>i</sub></i></tt> : nom de l'attribut <i>i</i></li>
+  <li><tt><i>att<sub>i</sub></i></tt> : type de
+  l'attribut <i>i</i>. Exemples de
+  types: <tt>INTEGER</tt>, <tt>VARCHAR[<i>n</i>]</tt>, … (<s>dépend du
+  système utlisé</s>)</li>
+  <li><tt><i>constr_col<sub>i</sub></i></tt> : contrainte sur la
+  colonne <i>i</i>. Exemple de contraintes: <tt>PRIMARY
+  KEY</tt>, <tt>NOT NULL</tt>, <tt>DEFAULT <i>n</i>, …</tt></li>
+  <li><tt><i>constr_table</i></tt> : contrainte de table. Exemple de
+  contrainte de table: <tt>CHECK <i>cond</i></tt>, <tt>UNIQUE
+  (<i>col1</i>, …, <i>coln</i>)</tt>, …</li>
+</ul>
+<p><code>
+<em>DROP TABLE</em> <i>Table<sub>1</sub></i>, …, <i>Table<sub>n</sub></i> [<em>CASCADE</em>];</code></p>
+<ul style="background:white;"><li><tt>CASCADE</tt> : détruit aussi les objets dépendants de la
+    table (vues, autres tables avec clés étrangères, …) (<s>dépend du
+    système utilisé</s>)</li>
+</ul>
+    </div>
+    <div class="sws-slide">
+      <h1>Insertion/suppression/mise à jour</h1>
+<code>   <em>INSERT INTO</em> <i>MaTable</i> [ <em>(</em><i>col<sub>1</sub></i>,…,<i>col<sub>n</sub></i><em>)</em> ] <em>VALUES</em> <em>(</em><i>val<sub>1</sub></i>,…,<i>val<sub>n</sub></i><em>);</em></code>
+<ul><li>Si la liste de colonnes est précisée les valeurs sont insérées
+    dans les colonnes correspondantes, sinon dans l'ordre du schéma</li></ul>
+
+<code>   <em>DELETE FROM</em> <i>MaTable</i> [ <em>WHERE</em> <i>condition</i> ];</code>
+<ul><li>Supprime les lignes pour lesquelles <i><tt>condition</tt></i>
+    est vraie (expression booléene sur les
+    colonnes). Si <tt>WHERE</tt> est absent, supprime toutes les lignes.</li></ul>
+
+<code>   <em>UPDATE</em> <i>MaTable</i> <em>SET</em> <i>col<sub>1</sub></i><em>=</em><i>val<sub>1</sub></i>,  …, <i>col<sub>n</sub></i><em>=</em><i>val<sub>n</sub></i> [ <em>WHERE</em> <i>condition</i> ];</code>
+<ul><li>Mise à jour de toutes les colonnes <i>i</i> des lignes pour lesquelles <i><tt>condition</tt></i>
+    est vraie (expression booléene sur les
+    colonnes). Si <tt>WHERE</tt> est absent, modifie toutes les lignes.</li></ul>
+
+</div>
+    <div class="sws-slide">
+      <h1>Requêtes SQL 1/3</h1>
+<code>
+ <em>SELECT</em> [<em>ALL</em>|<em>DISTINCT</em>] <i>res<sub>1</sub></i>, …,  <i>res<sub>n</sub></i>
+  <em>FROM</em> <i>tab_ref<sub>1</sub></i>, …,  <i>tab_ref<sub>m</sub></i>
+  [<em>WHERE</em> <i>condition_w</i>]
+  [<em>GROUP BY</em> <i>col<sub>1</sub></i>, …,  <i>col<sub>k</sub></i>]
+  [<em>HAVING </em> <i>condition_h</i>]
+  [<em>ORDER BY</em> <i>col<sub>1</sub></i>,  …,  <i>col<sub>;</sub></i> [<em>ASC</em>|<em>DESC</em>]]</code>
+<ul>
+  <li><tt>ALL</tt> force à garder tous les
+  résultats, <tt>DISTINCT</tt> retire les doublons</li>
+  <li><i>res<sub>i</sub></i> peut être un nom de colonne, <tt>*</tt>
+  (toutes les colones), un agrégat (<tt>SUM(price)</tt>,
+  éventuellement nommé : <tt>AS TotalPrice</tt>)</li>
+  <li><i>tab_ref<sub>i</sub></i> est soit un nom de table, soit une
+  sous-requête (<tt>(SELECT … )</tt>) éventuellement nommé (<tt>AS T1</tt>)</li>
+  <li><i>condition_w</i> est une condition booléenne sur les attributs
+  des <i>m</i> tables mentionnées</li>
+  <li><tt>GROUP BY</tt> et <tt>HAVING</tt> définissent des conditions
+  de groupage </li>
+  <li><tt>ORDER BY</tt> trie les résultats en ordre croissant (par
+  défaut ou <tt>ASC</tt>) ou décroissant (<tt>DESC</tt>)</li>
+</ul>
+</div>
+    <div class="sws-slide">
+      <h1>Requêtes SQL 2/3</h1>
+<code>
+          <em>(</em><i>req<sub>1</sub></i><em>)</em> <em>UNION</em> [<em>ALL</em>]  <em>(</em><i>req<sub>2</sub></i><em>)</em>
+          <em>(</em><i>req<sub>1</sub></i><em>)</em> <em>INTERSECT</em>  <em>(</em><i>req<sub>2</sub></i><em>)</em>
+          <em>(</em><i>req<sub>1</sub></i><em>)</em> <em>EXCEPT</em>  <em>(</em><i>req<sub>2</sub></i><em>)</em>
+</code>
+<p>Union, intersection et différence de deux requêtes. Par défaut,
+  retire les doublons des résultats des requêtes (comportement
+  ensembliste) sauf pour <tt>UNION ALL</tt> ou si <tt>SELECT ALL</tt>
+  a été utilisé dans les sous-requêtes</p>
+    </div>
+<div class="sws-slide">
+      <h1>Requêtes SQL 3/3</h1>
+<p>Exemple de conditions de groupage. On considère une table
+  d'employés (<tt>nom</tt>), appartenant chacun à un département
+  (<tt>num_dept</tt>) et ayant chacun un salaire (<tt>sal</tt>). On
+  souhaite avoir les salaires moyens, pour chaque département, pour
+  les départements ayant plus de 10 employés.</p>
+
+<code>
+    SELECT num_dept, AVERAGE(sal)
+    FROM TABLE_EMP
+    GROUP BY num_dept
+    HAVING COUNT(nom) >= 10;
+</code>
+<p><tt>HAVING</tt> est nécessaire car la clause <tt>WHERE</tt>
+  s'applique ligne à ligne, ici on veut groupe à groupe (i.e. pour
+  chaque département, i.e. pour toutes les lignes qui ont le même
+  departement).</p>
+</div>
+  </body>
+</html>
diff --git a/bd/bd02.xhtml b/bd/bd02.xhtml
new file mode 100644 (file)
index 0000000..5505555
--- /dev/null
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+[
+         <!ENTITY in  "<small style='font-size:small'>∈</small>">
+         <!ENTITY notin  "<small style='font-size:small'>∉</small>">
+         <!ENTITY mapsto  "↦">
+]
+          >
+<html xmlns="http://www.w3.org/1999/xhtml" >
+  <head>
+    <title>Stockage</title>
+
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+    <meta name="copyright"
+          content="Copyright &#169; 2013 Kim Nguyễn" />
+
+    <!-- Load jQuery -->
+    <script src="../jquery-2.0.3.min.js" type="text/javascript" ></script>
+    <script src="../libs/raphael-min.js" type="text/javascript" ></script>
+    <!-- Load the library -->
+    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
+
+    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
+    <!-- Load a custom Theme, the class-element marks this style-sheet
+         a "theme" that can be swtiched dynamicaly -->
+    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
+
+    <!-- Customize some templates and initialize -->
+
+    <script type="text/javascript">
+      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
+      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
+      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
+
+      //Ensures that we load SWS at the very end, after MathJax has
+      //been initialized
+
+      $(window).load(SWS.Presentation.init);
+    </script>
+  </head>
+  <body>
+    <a href="bd01.xhtml" class="sws-previous"/>
+    <div class="sws-slide sws-cover sws-option-nofooter">
+      <h1>Bases de données</h1>
+      <h3>Polytech Paris-Sud</h3>
+      <h3>Apprentis 4<sup>ème</sup> année</h3>
+      <h1>Cours 2 : Stockage</h1>
+      <a href="mailto:kn@lri.fr">kn@lri.fr</a><br/>
+      <a href="http://www.lri.fr/~kn/">http://www.lri.fr/~kn</a>
+    </div>
+
+    <h1>Introduction</h1>
+    <div class="sws-slide">
+      <h1>Où stocker les données ?</h1>
+      <p>Hierarchie mémoire :  </p>
+      <table style="width:100%">
+       <tr><td style="width:20%">Type</td>
+         <td style="width:20%">Accès</td>
+         <td style="width:20%">Taille max</td>
+         <td style="width:20%">Coût</td>
+         <td style="width:20%">durée de vie</td></tr>
+       <tr>
+         <td>Registre</td> <td> <tt>&lt;</tt> 1ns</td>
+         <td>128 bits</td>
+         <td>Très cher</td>
+         <td>alimenté</td>
+       </tr>
+
+       <tr>
+         <td>Cache L1/2/3</td> <td> ~ 10 ns</td>
+         <td>1ko ~ 1Mo</td>
+         <td>Très cher</td>
+         <td>alimenté</td>
+       </tr>
+       <tr>
+         <td>RAM</td> <td> ~ 50 ns</td>
+         <td>10 Go </td>
+         <td>Cher</td>
+         <td>alimenté</td>
+       </tr>
+       <tr>
+         <td>Disque SSD </td> <td> ~ 0.1ms</td>
+         <td>1 To </td>
+         <td>- Cher</td>
+         <td>Écritures limitées</td>
+       </tr>
+       <tr>
+         <td>Disque dur </td> <td> ~ 5ms</td>
+         <td>10 To </td>
+         <td>Peu cher</td>
+         <td>Fragiles</td>
+       </tr>
+
+       <tr>
+         <td>Bandes</td> <td> 10 s</td>
+         <td>1 Po/Eo </td>
+         <td>Donné</td>
+         <td>Bonne</td>
+       </tr>
+      </table>
+
+    <ul><li>RAM : mémoire primaire</li>
+      <li>Disques : mémoire secondaire</li>
+      <li>Bandes magnétiques/Disques optiques : mémoire tertiaire</li>
+    </ul>
+    </div>
+    <div class="sws-slide">
+      <h1>Quels types de mémoire pour une BD ?</h1>
+      <p>On attend en général d'une BD:</p>
+      <ul><li>Stockage d'un nombre important de données</li>
+       <li>Interrogation rapide (et si possible, mise à jour rapide
+       aussi)</li>
+       <li>Resistance aux pannes, aux corruptions</li>
+       <li>…</li>
+      </ul>
+      <p>Celà implique l'utilisation de mémoire primaire (comme toutes
+      les applications) <em>et secondaire</em></p>
+      <p>Pas <em>d'adressage direct du disque</em> par le processeur, nécessité de
+      « monter » les données en RAM</p>
+      <p>Goulet d'étranglement : facteur 10 000 (SSD) ~ 100 000 (HDD) entre
+      mémoire et disques</p>
+      <p><s>Priorité des SGBD</s> (ce qu'on présente dans ce cours) :
+      limiter <em>les accès disque</em></p>
+    </div>
+    <h1>Aspects bas-niveau</h1>
+    <div class="sws-slide">
+      <h1>Caractéristiques physiques de disques</h1>
+      <p>Disques rotatifs:</p>
+      <div>
+       <img src="hdd.svg" style="margin-left:10%;width:50%;" alt="hdd"/>
+      </div>
+      <ul style="background:white"><li>Chaque plateau a deux faces</li>
+       <li>Un plateau est composé de pistes concentriques</li>
+       <li>Les pistes sont décomposées en secteurs</li>
+       <li>Une tête de lecture/écriture travaille secteur par
+       secteur</li>
+       <li>Un secteur fait plusieurs octets (typiquement 512)</li>
+       <li>Un <i>cylindre</i> est l'ensemble des pistes situées à la
+       même positions sur tous les plateaux</li>
+      </ul>
+    </div>
+    <div class="sws-slide">
+      <h1>Temps d'accès à un disque</h1>
+      <p>Accès à un secteur arbitraire :</p>
+      <ul>
+       <li>Positionner la tête sur la bonne piste (recherche)</li>
+       <li>Attendre que le bon secteur soit sous la tête
+       (rotation)</li>
+       <li>Parcourir le secteur et renvoyer les données en mémoire
+       (transfert)</li>
+      </ul>
+      <p>Tout cela constitue la <em>latence</em> du disque</p>
+      <p>Une fois qu'on a payé le temps de latence, lire le secteur
+      suivant ne demande que le temps de transfert</p>
+      <p>On va donc essayer d'organiser les données de manière éviter
+      les déplacements arbitraires</p>
+    </div>
+    <div class="sws-slide">
+      <h1>Unité de transfert</h1>
+      <p>On appelle <em>page</em> (ou <em>bloc</em>) la quantité de
+      mémoire que le disque dur transfert de manière atomique en
+      mémoire. En pratique 512o ~ 4ko (dépendant des disques).
+      </p>
+      <p>On doit lire/écrire <s>au moins une page</s> même si on ne
+      désir lire/écrire qu'un octet</p>
+      <p>Exemple : on souhaite stocker 5 chaines de caractères de 200o
+      chacunes sur le disque</p>
+      <ul><li>Si placés sur blocs différents (arbitraires) : 5 pages
+      montées en mémoire, <tt>5 * temps de latence</tt></li>
+       <li>Si placés sur deux blocs consécutifs : <tt>temps de
+       latence + temps de transfert</tt> (on gagne un facteur presque 5)
+       </li></ul>
+    </div>
+    <div class="sws-slide">
+      <h1>Stratégies de placement</h1>
+      <p>On peut placer en priorité les données « reliées » (qu'on
+      veut utiliser en même temps):</p>
+      <ol>
+       <li>Dans le même bloc (T.A. à la deuxième donnée:
+       0)</li>
+       <li>Sur deux blocs contigus (T.A. à la deuxième donnée:
+       T. transfert)</li>
+       <li>Bloc à la même position sur un autre plateau (T.A. à la
+       deuxième donnée: T. transfert)</li>
+       <li>Sur la même piste (T.A. à la deuxième donnée:
+       T. rotation)</li>
+       <li>Sur des pistes proches</li>
+      </ol>
+    </div>
+    <div class="sws-slide">
+      <h1>Mise en place de la stratégies de placement</h1>
+      <p>Pour mettre en place les stratégies de placement il faut
+      connaître:</p>
+      <ul><li>La liste des blocs libres et occupés</li>
+       <li>La liste des blocs occupés par un « fichier » (i.e. qui
+       stocke des informations reliées à la même donnée logique)</li>
+       </ul>
+      <p>On ne travaille pas page à page : on alloue
+       un <em>buffer</em> de pages</p>
+      <p ><table class="withborder" style="margin-left:20%;">
+       <tr><td style="width:10pt;">
+       P1 </td><td style="width:10pt">P132 </td><td style="width:10pt">
+       P10 </td><td style="width:10pt">P99 </td></tr>
+       <tr><td style="width:10pt">
+       P2 </td><td style="width:10pt"> P1000  </td><td style="width:10pt">     P507 </td><td style="width:10pt">
+ </td></tr>
+       <tr><td style="width:10pt"> </td><td style="width:10pt"> </td><td style="width:10pt"> </td><td style="width:10pt">
+       </td></tr>
+       </table><br/>
+       On maintient pour chaque page : un <em>compteur
+       d'utilisation</em> et un <em>dirty-bit</em> qui indique si la
+       page a été modifiée (on doit donc l'écrire sur le disque à un
+       moment donné).<br/>
+       Lorsque le buffer est plein, il faut supprimer des pages (et
+       en monter d'autres en mémoire) suivant une stratégie:
+       LRU, MRU, Random, FIFO, LIFO, …
+      </p>
+    </div>
+    <div class="sws-slide">
+      <h1>Qui gère les accès disques bas-niveau, le buffer, … ?</h1>
+      <p>
+       <ul>
+         <li class="sws-pause">Dans le temps, le SGBD
+         directement </li>
+         <li class="sws-pause">De nos jours, le système
+         d'exploitation via ses systèmes de fichiers et gestion de la
+         mémoire virtuelle (<i>swap</i> ou fichier d'echange)</li>
+       </ul>
+      </p>
+      <p>Les systèmes d'exploitation ont <i>énormément</i> progressé
+      (les SGBD ne pouvaient pas reposer sur quelque chose d'aussi
+      primitif que FAT ou NTFS, mais les systèmes de fichier modernes
+      sont plus performant que le traitement natif du disque fais par
+      les SGBD, en particulier pour les SSD).<br/>
+       Pour prédire le bon comportement d'un SGBD il faut connaître
+      non seulement ce dernier, <s>mais aussi</s>, de manière
+      détaillée, les caractéristiques de l'OS et du système de
+      fichier.
+      </p>
+    </div>
+    <div class="sws-slide">
+      <h1>Un mot sur les SSD</h1>
+      <p><i>Solid State Disk</i> : « disque » dur composé entièrement
+      de mémoire flash. Avantages:</p>
+      <ul style="sws-pause">
+       <li>Pas de temps de recherche et de rotation, uniquement temps
+       de transfert. Accès arbitraires aussi rapides que les
+       séquentiels</li>
+       <li>Consomation électrique moindre, poid moindre, pas de
+       pièce mobile (resistance aux chocs)</li>
+      </ul>
+      <ul><li>Couteux</li>
+       <li>Écriture <s>très</s> complexe (écrire dans une cellule
+       impose de l'effacer avant, nombre de cycle d'effaçage limité,
+       etc)
+       </li>
+       <li>Nécessite une coopération à tous les niveaux, seul le
+       système d'exploitation peut bien le gérer (bibliothèque
+       système, gestion de la mémoire virtuelle, système de fichier,
+       pilote du disque et <i>firmware</i>).</li>
+      </ul>
+    </div>
+    <h1>Stockage pour les SGBD</h1>
+    <div class="sws-slide">
+      <h1>Utilisation du disque par les SGBD</h1>
+      <ul>
+       <li>n-uplet (ou ligne) : enregistrement, séquence contiguë
+       d'octets </li>
+       <li>table = ensemble de lignes = fichier </li>
+       <li>base = ensemble de tables = ensemble de fichiers</li>
+      </ul>
+      <p>Opérations de base sur les enregistrements</p>
+      <ul><li>recherche d'un enregistrement (<tt>SELECT</tt>)</li>
+       <li>ajout d'un enregistrement à une table
+       (<tt>INSERT</tt>)</li>
+       <li>mise à jour d'un enregistrement (<tt>UPDATE</tt>)</li>
+       <li>suppression d'un enregistrement (<tt>DELETE</tt>)</li>
+      </ul>
+      <p>Les fichiers (i.e. les tables) sont <em>paginées</em>
+      (découpées en pages)</p>
+    </div>
+    <div class="sws-slide">
+      <h1>Représentation des enregistrements fixes</h1>
+      <ul><li>Nombre fixe d'attributs (schéma de la table)
+       </li>
+       <li>Champs de taille fixe
+         (<tt>VARCHAR[50]</tt>, <tt>INTEGER</tt> (32 bits), …)
+       </li>
+      </ul>
+      <p>
+      <table style="margin-left:20pt;" class="withborder">
+       <tr><td>C<sub>1</sub></td> <td>C<sub>2</sub></td> <td>C<sub>3</sub></td> <td>C<sub>4</sub></td> <td>C<sub>5</sub></td></tr>
+      </table>
+      <table >
+       <tr><td>B</td><td>&nbsp;L<sub>1</sub></td> <td> &nbsp;L<sub>2</sub></td> <td>&nbsp;L<sub>3</sub></td> <td>&nbsp;L<sub>4</sub></td> <td>&nbsp;L<sub>5</sub></td></tr>
+      </table> <br/>
+Pour accéder au i<sup>ème</sup> champ d'un enregistrement en
+      connaissant l'addresse de base <tt>B</tt>, on ajout à <tt>B</tt>
+      les longueurs des champs 0, 1, …, i-1.<br/>
+      adresse de C<sub>4</sub> = B + L<sub>1</sub> + L<sub>2</sub> + L<sub>3</sub><br/>
+      </p>
+    </div>
+
+    <div class="sws-slide">
+      <h1>Représentation des enregistrements variables</h1>
+      <ul><li>Nombre fixe d'attributs (schéma de la table)
+       </li>
+       <li>Champs de taille variables (<i>blobs</i> de texte)
+       </li>
+      </ul>
+      <p>
+      <table style="margin-left:20pt;" class="withborder">
+       <tr><td>C<sub>1</sub></td> <td>$</td><td>C<sub>2</sub></td> <td>$</td> <td>C<sub>3</sub></td> <td>$</td><td>C<sub>4</sub></td><td>$</td> <td>C<sub>5</sub></td></tr>
+      </table>
+      On utilise un séparateur spécial entre les champs (scan linéaire
+      pour arriver au i<sup>ème</sup> champ.<br/>
+      <table style="margin-left:20pt;" class="withborder">
+       <tr><td>L<sub>1</sub></td> <td>L<sub>2</sub></td> <td>L<sub>3</sub></td> <td>L<sub>4</sub></td> <td>L<sub>5</sub></td><td>C<sub>1</sub></td> <td>C<sub>2</sub></td> <td>C<sub>3</sub></td> <td>C<sub>4</sub></td> <td>C<sub>5</sub></td></tr>
+      </table>
+      On stocke les longueurs dans l'enregistrement
+      </p>
+    </div>
+    <div class="sws-slide">
+      <h1>Méta-données</h1>
+      <p>Chaque enregistrement possède un en-tête stockant des données
+      auxiliaires</p>
+      <ul><li>taille totale de l'enregistrement (avec entête)</li>
+       <li>pointeur vers le schéma de la table (pour déterminer les
+       tailles des champs)</li>
+       <li>date de dernière mise à jour</li>
+       <li>information de gestion des valeurs nulles:
+         <ul class="sws-pause">
+           <li>Stockage d'une valeur spéciale (pas toujours
+           possible)</li>
+           <li>Stockage d'un bitmap (masque) : 26<sub>10</sub> =
+           11010<sub>2</sub> : valeur nulle dans les champ 0 et 2</li>
+         </ul>
+       </li>
+      </ul>
+    </div>
+    <div class="sws-slide">
+      <h1>Stockage des enregistrements dans une page </h1>
+      <p>Chaque enregistrement à une adresse (<i>rid</i> : record id)
+      constituée de l'adresse de la page et de la position de
+      l'enregistrement au sein de la page</p>
+      <p>Lors d'une insertion, on doit trouver un emplacement libre
+       dans la page</p>
+      <p>Lors d'une suppression, on doit « effacer » un emplacement
+      occupé et éventuellement compacter la page</p>
+    </div>
+    <div class="sws-slide">
+      <h1>Stockage compact vs non compact (taille fixe)</h1>
+      <p>
+      <img style="width:40%" src="page_comp.svg"/>
+      <img style="margin-left:10%;width:40%" src="page_ncomp.svg"/>
+      </p>
+    </div>
+    <div class="sws-slide">
+      <h1>Stockage compact (taille variable)</h1>
+      <p>
+      <img style="margin-left:10%;width:70%" src="page_var.svg"/>
+      </p>
+    </div>
+  </body>
+</html>
diff --git a/bd/hdd.svg b/bd/hdd.svg
new file mode 100644 (file)
index 0000000..2ffd7ce
--- /dev/null
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="285.04245"
+   height="150.4734"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="hdd.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="38.554678 : 93.786595 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="285.04245 : 75.236702 : 1"
+       inkscape:persp3d-origin="142.52122 : 50.157801 : 1"
+       id="perspective3968" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.7493421"
+     inkscape:cx="142.07474"
+     inkscape:cy="77.866463"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:snap-global="false"
+     inkscape:snap-bbox="true"
+     inkscape:window-width="1317"
+     inkscape:window-height="744"
+     inkscape:window-x="49"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     fit-margin-left="0.5"
+     fit-margin-top="0.5"
+     fit-margin-bottom="0.5"
+     fit-margin-right="0.5">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3766"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-74.783272px"
+       originy="-811.86314px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-74.783272,-90.025635)">
+    <path
+       sodipodi:type="arc"
+       style="fill:#e2e2e2;fill-opacity:0.54794521;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2985-31-6"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="95.283691"
+       sodipodi:ry="95.283691"
+       d="m 303.51532,176.69815 a 95.283691,95.283691 0 1 1 -190.56738,0 95.283691,95.283691 0 1 1 190.56738,0 z"
+       transform="matrix(1,0,0,0.44437131,30.041459,97.766365)" />
+    <g
+       transform="translate(0.23383006,17.945016)"
+       id="g4198-6-6">
+      <rect
+         ry="5.815764"
+         transform="matrix(0.9964609,0.08405759,-0.9289909,0.37010255,0,0)"
+         y="299.64157"
+         x="413.95447"
+         height="12.124386"
+         width="122.41846"
+         id="rect4014-9-3"
+         style="fill:#f0ff1f;fill-opacity:1;stroke:#000000;stroke-width:0.99473578;stroke-opacity:1" />
+      <rect
+         ry="6.0621929"
+         transform="matrix(0.9964609,0.08405759,-0.9289909,0.37010255,0,0)"
+         y="299.64157"
+         x="454.76065"
+         height="12.124386"
+         width="24.483698"
+         id="rect4018-09-0"
+         style="fill:#474747;fill-opacity:1;stroke:none" />
+    </g>
+    <g
+       transform="translate(0.5975533,13.216612)"
+       id="g4198-6">
+      <rect
+         ry="5.815764"
+         transform="matrix(0.9964609,0.08405759,-0.9289909,0.37010255,0,0)"
+         y="299.64157"
+         x="413.95447"
+         height="12.124386"
+         width="122.41846"
+         id="rect4014-9"
+         style="fill:#f0ff1f;fill-opacity:1;stroke:#000000;stroke-width:0.99473578;stroke-opacity:1" />
+      <rect
+         ry="6.0621929"
+         transform="matrix(0.9964609,0.08405759,-0.9289909,0.37010255,0,0)"
+         y="299.64157"
+         x="454.76065"
+         height="12.124386"
+         width="24.483698"
+         id="rect4018-09"
+         style="fill:#474747;fill-opacity:1;stroke:none" />
+    </g>
+    <path
+       sodipodi:type="arc"
+       style="fill:#e2e2e2;fill-opacity:0.54794521;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2985-31"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="95.283691"
+       sodipodi:ry="95.283691"
+       d="m 303.51532,176.69815 a 95.283691,95.283691 0 1 1 -190.56738,0 95.283691,95.283691 0 1 1 190.56738,0 z"
+       transform="matrix(1,0,0,0.44437131,30.041459,89.523324)" />
+    <g
+       transform="translate(0.59755324,4.4872507)"
+       id="g4198-7">
+      <rect
+         ry="5.815764"
+         transform="matrix(0.9964609,0.08405759,-0.9289909,0.37010255,0,0)"
+         y="299.64157"
+         x="413.95447"
+         height="12.124386"
+         width="122.41846"
+         id="rect4014-6"
+         style="fill:#f0ff1f;fill-opacity:1;stroke:#000000;stroke-width:0.99473578;stroke-opacity:1" />
+      <rect
+         ry="6.0621929"
+         transform="matrix(0.9964609,0.08405759,-0.9289909,0.37010255,0,0)"
+         y="299.64157"
+         x="454.76065"
+         height="12.124386"
+         width="24.483698"
+         id="rect4018-0"
+         style="fill:#474747;fill-opacity:1;stroke:none" />
+    </g>
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:0.54794521;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2985"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="95.283691"
+       sodipodi:ry="95.283691"
+       d="m 303.51532,176.69815 a 95.283691,95.283691 0 1 1 -190.56738,0 95.283691,95.283691 0 1 1 190.56738,0 z"
+       transform="matrix(1,0,0,0.44437131,30.041882,81.398852)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:0.54794521;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2985-3"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="78.238457"
+       sodipodi:ry="78.238457"
+       d="m 286.47009,176.69815 a 78.238457,78.238457 0 1 1 -156.47692,0 78.238457,78.238457 0 1 1 156.47692,0 z"
+       transform="matrix(1,0,0,0.44437131,30.041882,81.398852)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#68cbf3;fill-opacity:0.63013695;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2985-3-3"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="63.738457"
+       sodipodi:ry="63.738457"
+       d="m 271.97009,176.69815 a 63.738457,63.738457 0 1 1 -127.47692,0 63.738457,63.738457 0 1 1 127.47692,0 z"
+       transform="matrix(1,0,0,0.44437131,30.041882,81.398852)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#2ee42a;fill-opacity:0.54794521;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2985-3-3-4"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="63.738457"
+       sodipodi:ry="63.738457"
+       d="m 257.96604,136.8349 a 63.738457,63.738457 0 0 1 12.37115,25.52831 l -62.10556,14.33494 z"
+       transform="matrix(1,0,0,0.44437131,29.712255,81.358707)"
+       sodipodi:start="5.6075167"
+       sodipodi:end="6.0563423" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:0.54794521;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2985-3-3-8"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="49.238457"
+       sodipodi:ry="49.238457"
+       d="m 257.47009,176.69815 a 49.238457,49.238457 0 1 1 -98.47692,0 49.238457,49.238457 0 1 1 98.47692,0 z"
+       transform="matrix(1,0,0,0.44437131,30.041882,81.398852)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:0.54794521;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2985-3-3-8-7"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="35.283688"
+       sodipodi:ry="35.283688"
+       d="m 243.51532,176.69815 a 35.283688,35.283688 0 1 1 -70.56738,0 35.283688,35.283688 0 1 1 70.56738,0 z"
+       transform="matrix(1,0,0,0.44437131,30.041882,81.398852)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="path2985-3-3-8-7-4"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="20.783688"
+       sodipodi:ry="20.783688"
+       d="m 229.01532,176.69815 a 20.783688,20.783688 0 1 1 -41.56738,0 20.783688,20.783688 0 1 1 41.56738,0 z"
+       transform="matrix(1,0,0,0.44437131,30.041882,81.398852)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2985-32"
+       sodipodi:cx="208.23163"
+       sodipodi:cy="176.69815"
+       sodipodi:rx="95.283691"
+       sodipodi:ry="95.283691"
+       d="m 282.54834,117.06588 a 95.283691,95.283691 0 0 1 18.35178,37.46172 l -92.66849,22.17055 z"
+       transform="matrix(1,0,0,0.44437131,30.041881,81.398852)"
+       sodipodi:start="5.6069782"
+       sodipodi:end="6.0483535" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 290.52095,170.72166 c 24.00575,59.28691 24.00575,59.28691 24.00575,59.28691"
+       id="path3889"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="304.70618"
+       y="239.82912"
+       id="text3891"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3893"
+         x="304.70618"
+         y="239.82912">Piste</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 289.06606,147.44337 C 313.0718,102.70539 313.0718,102.70539 313.0718,102.70539"
+       id="path3895"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="313.07181"
+       y="99.431885"
+       id="text3897"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3899"
+         x="313.07181"
+         y="99.431885">Secteur</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 159.69479,176.13473 C 105.5,176.86218 105.5,176.86218 105.5,176.86218"
+       id="path3901"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="74.105537"
+       y="170.35794"
+       id="text3903"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3905"
+         x="74.105537"
+         y="170.35794">Plateau</tspan></text>
+    <g
+       id="g4198">
+      <rect
+         ry="5.815764"
+         transform="matrix(0.9964609,0.08405759,-0.9289909,0.37010255,0,0)"
+         y="299.64157"
+         x="413.95447"
+         height="12.124386"
+         width="122.41846"
+         id="rect4014"
+         style="fill:#f0ff1f;fill-opacity:1;stroke:#000000;stroke-width:0.99473577999999996;stroke-opacity:1" />
+      <rect
+         ry="6.0621929"
+         transform="matrix(0.9964609,0.08405759,-0.9289909,0.37010255,0,0)"
+         y="299.64157"
+         x="454.76065"
+         height="12.124386"
+         width="24.483698"
+         id="rect4018"
+         style="fill:#474747;fill-opacity:1;stroke:none" />
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 59.286911,57.360219 C 33.826274,28.262348 33.826274,28.262348 33.826274,28.262348"
+       id="path4283"
+       inkscape:connector-curvature="0"
+       transform="translate(74.783272,90.025635)" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="15.640105"
+       y="20.260433"
+       id="text4285"
+       sodipodi:linespacing="125%"
+       transform="translate(74.783272,90.025635)"><tspan
+         sodipodi:role="line"
+         id="tspan4287"
+         x="15.640105"
+         y="20.260433">Bras</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 103.29744,62.452346 C 93.840632,24.261391 93.840632,24.261391 93.840632,24.261391"
+       id="path4289"
+       inkscape:connector-curvature="0"
+       transform="translate(74.783272,90.025635)" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="140.25348"
+       y="108.46745"
+       id="text4291"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4293"
+         x="140.25348"
+         y="108.46745">Tête de lecture</tspan></text>
+  </g>
+</svg>
diff --git a/bd/page_comp.svg b/bd/page_comp.svg
new file mode 100644 (file)
index 0000000..a756f0b
--- /dev/null
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="186.37048"
+   height="181"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="New document 1">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         id="path3891"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-4"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3891-5"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.9095864"
+     inkscape:cx="175.07054"
+     inkscape:cy="99.648275"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1317"
+     inkscape:window-height="744"
+     inkscape:window-x="49"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-50.662109px"
+       originy="-799.07925px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-50.662109,-72.282928)">
+    <rect
+       style="fill:#bfbfbf;fill-opacity:0.97260275;stroke:none"
+       id="rect4360"
+       width="75"
+       height="60"
+       x="161"
+       y="172.36218" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-opacity:1"
+       id="rect2989"
+       width="75"
+       height="180"
+       x="161.21233"
+       y="72.782928"
+       ry="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 161.21233,93.054749 c 75,0 75,0 75,0"
+       id="path3759"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 161.23167,113.0693 c 75,0 75,0 75,0"
+       id="path3759-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 160.91619,133.0499 c 75,0 75,0 75,0"
+       id="path3759-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 160.93553,153.06445 c 75,0 75,0 75,0"
+       id="path3759-1-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 161.08121,172.76831 c 75,0 75,0 75,0"
+       id="path3759-2"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 161.5326,232.94795 c 74.99999,0 74.99999,0 74.99999,0"
+       id="path3759-1-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="60"
+       y="82.362183"
+       id="text3829"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3831"
+         x="60"
+         y="82.362183">emplacement 1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="60"
+       y="102.36218"
+       id="text3829-3"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3831-1"
+         x="60"
+         y="102.36218">emplacement 2</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="94.10672"
+       y="125.82151"
+       id="text3854"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3856"
+         x="94.10672"
+         y="125.82151">…</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="60"
+       y="162.36218"
+       id="text3829-1"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3831-9"
+         x="60"
+         y="162.36218">emplacement N</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="90"
+       y="192.36218"
+       id="text3876"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3878"
+         x="90"
+         y="192.36218">espace</tspan><tspan
+         sodipodi:role="line"
+         x="90"
+         y="207.36218"
+         id="tspan3880">libre</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 130,202.36218 c 60,0 60,0 60,0"
+       id="path3882"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="50"
+       y="242.36218"
+       id="text4328"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4330"
+         x="50"
+         y="242.36218">en-tête</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 107.78897,243.73078 c 60,0 60,0 60,0"
+       id="path3882-3"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="220.63159"
+       y="244.88853"
+       id="text4356"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4358"
+         x="220.63159"
+         y="244.88853">N</tspan></text>
+  </g>
+</svg>
diff --git a/bd/page_ncomp.svg b/bd/page_ncomp.svg
new file mode 100644 (file)
index 0000000..9a84ee4
--- /dev/null
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="186.37048"
+   height="181"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="page_comp.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         id="path3891"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-4"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3891-5"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.9748389"
+     inkscape:cx="264.13768"
+     inkscape:cy="73.257369"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1317"
+     inkscape:window-height="744"
+     inkscape:window-x="49"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-50.662109px"
+       originy="-799.07925px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-50.662109,-72.282928)">
+    <rect
+       style="fill:#bfbfbf;fill-opacity:0.97260275;stroke:none"
+       id="rect4360-4"
+       width="75"
+       height="20.000004"
+       x="161"
+       y="93.362175" />
+    <rect
+       style="fill:#bfbfbf;fill-opacity:0.97260275;stroke:none"
+       id="rect4360"
+       width="75"
+       height="60"
+       x="161"
+       y="172.36218" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-opacity:1"
+       id="rect2989"
+       width="75"
+       height="180"
+       x="161.21233"
+       y="72.782928"
+       ry="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 161.21233,93.054749 c 75,0 75,0 75,0"
+       id="path3759"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 161.23167,113.0693 c 75,0 75,0 75,0"
+       id="path3759-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 160.91619,133.0499 c 75,0 75,0 75,0"
+       id="path3759-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 160.93553,153.06445 c 75,0 75,0 75,0"
+       id="path3759-1-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 161.08121,172.76831 c 75,0 75,0 75,0"
+       id="path3759-2"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 161.5326,232.94795 c 74.99999,0 74.99999,0 74.99999,0"
+       id="path3759-1-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="60"
+       y="82.362183"
+       id="text3829"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3831"
+         x="60"
+         y="82.362183">emplacement 1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="60"
+       y="102.36218"
+       id="text3829-3"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3831-1"
+         x="60"
+         y="102.36218">emplacement 2</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="94.10672"
+       y="125.82151"
+       id="text3854"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3856"
+         x="94.10672"
+         y="125.82151">…</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="60"
+       y="162.36218"
+       id="text3829-1"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3831-9"
+         x="60"
+         y="162.36218">emplacement N</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="90"
+       y="192.36218"
+       id="text3876"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3878"
+         x="90"
+         y="192.36218">espace</tspan><tspan
+         sodipodi:role="line"
+         x="90"
+         y="207.36218"
+         id="tspan3880">libre</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 130,202.36218 c 60,0 60,0 60,0"
+       id="path3882"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="50"
+       y="242.36218"
+       id="text4328"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4330"
+         x="50"
+         y="242.36218">en-tête</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 107.78897,243.73078 c 60,0 60,0 60,0"
+       id="path3882-3"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="220.63159"
+       y="244.88853"
+       id="text4356"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4358"
+         x="220.63159"
+         y="244.88853">N</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 164.33789,160.07925 c 0,20 0,20 0,20"
+       id="path4381"
+       inkscape:connector-curvature="0"
+       transform="translate(50.662109,72.282928)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 195,232.36218 c 0,20 0,20 0,20"
+       id="path4381-5"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 175,232.36218 c 0,20 0,20 0,20"
+       id="path4381-9"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="160.91765"
+       y="243.04904"
+       id="text4408"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4410"
+         x="160.91765"
+         y="243.04904">…</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="200"
+       y="247.36218"
+       id="text4412"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4414"
+         x="200"
+         y="247.36218">1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="180"
+       y="247.36218"
+       id="text4416"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4418"
+         x="180"
+         y="247.36218">0</tspan></text>
+  </g>
+</svg>
diff --git a/bd/page_var.svg b/bd/page_var.svg
new file mode 100644 (file)
index 0000000..563fdc7
--- /dev/null
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="506"
+   height="352.99609"
+   id="svg4484"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="page_var.svg">
+  <defs
+     id="defs4486">
+    <inkscape:path-effect
+       effect="spiro"
+       id="path-effect5471"
+       is_visible="true" />
+    <inkscape:path-effect
+       effect="spiro"
+       id="path-effect5467"
+       is_visible="true" />
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         id="path3891"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotL"
+       style="overflow:visible">
+      <path
+         id="path3949"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.8,0,0,0.8,5.92,0.8)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotL-2"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3949-4"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.8,0,0,0.8,5.92,0.8)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-3"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3891-8"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotL-9"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3949-0"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.8,0,0,0.8,5.92,0.8)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-7"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3891-9"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.3083803"
+     inkscape:cx="255.6761"
+     inkscape:cy="210.56099"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1317"
+     inkscape:window-height="744"
+     inkscape:window-x="49"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid5012"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-89.5px"
+       originy="-647.50391px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-89.5,-51.862183)">
+    <rect
+       style="fill:none;stroke:#000000;stroke-opacity:1"
+       id="rect4492"
+       width="505"
+       height="330"
+       x="90"
+       y="52.362183" />
+    <rect
+       style="color:#000000;fill:#a1a1a1;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect5002"
+       width="130.4893"
+       height="28.522253"
+       x="127.63708"
+       y="80.466438" />
+    <rect
+       style="color:#000000;fill:#a1a1a1;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect5004"
+       width="146.8896"
+       height="32.087532"
+       x="338.70175"
+       y="118.25842" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect5008"
+       width="505"
+       height="140"
+       x="90"
+       y="242.36218" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect5010"
+       width="505"
+       height="30"
+       x="90"
+       y="352.36218" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 560,352.36218 c 0,30 0,30 0,30"
+       id="path5014"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 530,352.24775 c 0,30 0,30 0,30"
+       id="path5014-2"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 500.15905,352.23516 c 0,30 0,30 0,30"
+       id="path5014-5"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 470.15905,352.12073 c 0,30 0,30 0,30"
+       id="path5014-2-0"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 440.16013,352.87136 c 0,30 0,30 0,30"
+       id="path5014-4"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow1Lend)"
+       d="m 450,362.36218 c -20,-89.99999 -270,-210 -320,-220 -50,-10 -10,-40 -10,-40"
+       id="path5475-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="czc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 410.16013,352.75693 c 0,30 0,30 0,30"
+       id="path5014-2-4"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="538.45203"
+       y="370.98538"
+       id="text5085"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5087"
+         x="538.45203"
+         y="370.98538">N</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="105.09177"
+       y="263.40964"
+       id="text5089"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5091"
+         x="105.09177"
+         y="263.40964">Espace libre</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow1Lend)"
+       d="m 580,362.36218 c -60,-90 -420,-30 -450,-50 -30,-20 -20,-20 -20,-30"
+       id="path5093"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="czc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow1Lend)"
+       d="m 510,362.36218 c -20,-89.99999 -290,-130 -340,-140 -50,-10 -30,-50 -30,-50"
+       id="path5475"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="czc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#Arrow1Lend)"
+       d="m 480,362.36218 c -20,-89.99999 50,-260 0,-279.999997 -50,-20 -150,-10 -150,49.999997"
+       id="path5475-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="czc" />
+    <rect
+       style="fill:#a1a1a1;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect5006"
+       width="198.22966"
+       height="28.522253"
+       x="151.16794"
+       y="161.75485" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="100"
+       y="72.362183"
+       id="text5089-1"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5091-7"
+         x="100"
+         y="72.362183">Espace ocupé</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="350"
+       y="402.36218"
+       id="text5960"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5962"
+         x="350"
+         y="402.36218">Dictionaire d'emplacements (pointeurs)</tspan></text>
+  </g>
+</svg>
diff --git a/bd/pdf/bd01.pdf b/bd/pdf/bd01.pdf
new file mode 100644 (file)
index 0000000..196c732
Binary files /dev/null and b/bd/pdf/bd01.pdf differ
diff --git a/bd/pdf/bd01_print.pdf b/bd/pdf/bd01_print.pdf
new file mode 100644 (file)
index 0000000..70ddd36
Binary files /dev/null and b/bd/pdf/bd01_print.pdf differ
diff --git a/bd/pdf/bd02.pdf b/bd/pdf/bd02.pdf
new file mode 100644 (file)
index 0000000..34e532e
Binary files /dev/null and b/bd/pdf/bd02.pdf differ
diff --git a/bd/pdf/bd02_print.pdf b/bd/pdf/bd02_print.pdf
new file mode 100644 (file)
index 0000000..04edb59
Binary files /dev/null and b/bd/pdf/bd02_print.pdf differ
index 3bb6362..393ed86 100644 (file)
Binary files a/prog_internet/pdf/prog_internet_09.pdf and b/prog_internet/pdf/prog_internet_09.pdf differ
index 1334e7f..86df3a2 100644 (file)
Binary files a/prog_internet/pdf/prog_internet_09_print.pdf and b/prog_internet/pdf/prog_internet_09_print.pdf differ
index e1a3e3a..d2166a9 100644 (file)
        <li>Permet d'authentifier les correspondants et de protéger
        les données
        </li>
-       <li>Suppose l'existence de <em>tiers de confience</em> Alice
+       <li>Suppose l'existence de <em>tiers de confiance</em> Alice
        et Bob font confiance à Trent (<i>Trusted Third
        Party</i>)</li>
       </ol>
       </ol>
 </div>
     <div class="sws-slide">
-      <h1>Tiers de confience</h1>
-      <p>Les tiers de confience sont des entités (états, associations,
+      <h1>Tiers de confiance</h1>
+      <p>Les tiers de confiance sont des entités (états, associations,
       compagnies privées) qui se chargent de vérifier les clés
        publiques d'autres entitées. C'est une
       vérification <em>physique</em> (documents administratifs, …).
     </div>
 
     <div class="sws-slide">
-      <h1>Tiers de confience</h1>
+      <h1>Tiers de confiance</h1>
       <p>Attaques contre les <em>authorités de certifications</em>
-       (tiers de confience): difficiles, mais pas impossible. Certains
-       tiers de confience sont douteux (états voyous, compagnie
+       (tiers de confiance): difficiles, mais pas impossible. Certains
+       tiers de confiance sont douteux (états voyous, compagnie
        piratées dont les clées <s>privées</s> sont compromises,…)<br/>
        <s>Attaques d'implémentation</s> (plus probables) : on
        exploite un <s>bug</s> dans le code des serveurs web ou des
index e64202f..6d4777c 100644 (file)
@@ -270,4 +270,13 @@ div.twocol > div:last-child {
     vertical-align:text-top;
     right: 0pt;
     top:0pt;
+}
+table.withborder {
+    border-collapse: collapse;
+}
+table.withborder td {
+    border-style: solid;
+    border-width: 1pt;
+    min-width:20pt;
+    height: 20pt;
 }
\ No newline at end of file