Leçon 10
 
Tailles, compactage, anciennes versions

Dans cette leçon, nous allons préparer le terrain pour la leçon suivante, qui parlera de pièces jointes (voraces en taille).

Nous allons étudier les unités de grandeur informatiques, et nous allons voir comment réduire et optimiser la place de la base de données. Nous verrons comment l'envoyer par E-Mail, même à quelqu'un qui possède une ancienne version d'Access.

Et pour ceux que ça intéresse, nous détaillerons les anciens formats de base de données Access.

 
Sommaire

Unités de mesure informatiques

Avant de commencer, je vais vous ennuyer un petit peu avec un poil de théorie

voici un bref résumé des tailles en informatique : une lettre, ou un chiffre (un caractère) vaut 1 Octet (1o - o pour octet). Quand on a mille octets, on dit qu'on à un KiloOctet (1 Ko). Quand on a Mille Ko, on a un Méga Octet (On dit aussi Un Méga, ou un Mo). Donc Un MégaOctet, c'est un million d'octets. Et quand on a mille MégaOctets, on à un GigaOctet (Un Giga, ou Un Go). C'est donc Un milliard d'octets (Et quand on a Mille Gigas, on a un Téra, mais bon, là, c'est gros !).

En bref :

  • 1 Ko = 1000 Octets
  • 1000 Ko = 1'000'000 (un million d'octets) = 1 Mo (1 MégaOctet)
  • 1000 Mo = 1'000'000'000 (un milliard d'octets) = 1'000'000 de Ko = 1Go (1 GigaOctet)
  • 1000 Go = 1'000'000'000'000 (mille milliards d'octets) = 1'000 Go = 1To (1 TéraOctet)

Une clé USB, c'est environ 8, 16 ou 32 Go (32 milliards d'octets). Une petite vidéo pèse environ 2000Ko (2 millions d'octets, ou 2 mégas). Du coup, faites le calcul ! Combien de vidéos de cette taille pourriez-vous mettre sur une clé usb de 32 Go ? ... A peu près seize mille ! Oui, parce que 2 millions fois 16 mille32 milliards

Si vous avez un disque dur de 2 Téras, vous pourriez y stocker l'équivalent de 62 clés USB de 32 Go ! Oui oui : cinq cent mille vidéos de 2 Mégas , vous ne rêvez pas ! Bon maintenant, un film d'une heure et demi en bonne qualité, ça va chercher dans les 1 à 2 gigas...

Ca, c'est pour vous dire que les capacités de stockage actuelles sont énormes, et grossissent d'année en année ! Pour l'anecdote, dans les années 1990, on utilisait des disquettes en plastique, qu'on appelait des "Trois pouces et demi", dont la contenance était d'environ 1Mo !

Par contre, en ce qui concerne la transmission de données, c'est une autre histoire ! Stocker un film d'un giga sur son disque dur, OK, mais le télécharger depuis internet, il va falloir compter avec la vitesse de transmission ! Par exemple, vous avez une connection, disons, à 20 Mo (sous-entendu 20Mo par seconde). Donc, si vous téléchargez un fichier de 20 Mo, il devrait être chez vous en une seconde, c'est bien juste ?

Eh bien essayez ! Allez télécharger un tel gros fichier ! Vous mettrez bien plus de temps qu'une seconde, moi je vous le dis ! Si vous mettez, par exemple, 30 secondes pour télécharger un fichier de 20 Mo, en fait, votre vitesse de connexion est de .. Mmmmm... Laissez moi calculer... 20 divisé par 30 ... 0.6 Mo par seconde. Eh oui !

Donc, tant que vous travaillez en local, sur votre PC perso, vous n'avez quasiment aucune contraintes de tailles, mais dès que vous transitez par internet (par exemple, par e-mail, vous ne pouvez généralement jamais dépasser la taille de 5 ou 10 Mo par message), ou que vous travaillez sur le réseau de votre entreprise, alors, il devient nécessaire de s'intéresser de près aux tailles des fichiers ! Et je vous dis ça parce que dans cette leçon, nous allons beaucoup parler de fichiers attachés, et on aura vite fait d'avoir une base de données monstrueusement grosse si on ne reste pas attentif !

 

Prenez connaissance de la taille de votre base de données : Allez simplement voir dans l'explorateur (je suppose que vous savez faire) :

 

Dans mon cas, elle fait 504 Ko - Un demi Méga donc - (Dans le vôtre, elle devrait faire une taille approchante, mais pas forcément, nous verrons pourquoi).

Grossissement de la base de données

Maintenant, ouvrez votre base de données, et nous allons essayer de la faire grossir, en dupliquant simplement votre table T_Client. Vous vous rappelez comment on fait ? C'était dans la leçon 3.

Faites-en une copie, et retournez dans l'explorateur pour voir si la taille a changé. Ou alors, directement dans Access, vous pouvez cliquer sur Fichier/Ouvrir (même si vous ne voulez rien ouvrir, en fait) juste pour voir la taille de votre base de données.

Ou alors, quelque chose d'encore plus sympathique, ce serait d'afficher votre explorateur
dans une petite fenêtre, et Access dans une autre petite fenêtre, comme ceci :

Vous constatez que la base est passé de 504 Ko à 660Ko.
Attention
: il n'est pas évident que vous obteniez les mêmes chiffres que moi
si vous faites le test, il est même possible que la taille ne change pas, ne me demandez pas pourquoi !

Ne vous occupez pas du fichier
.LACCDB qui pèse 1Ko, c'est juste un fichier qui indique à Access que la base est ouverte, et il se supprimera de lui-même lors de la fermeture de la base de données. On y reviendra plus tard.

En principe, il paraît normal que la taille augmente. Attention aussi au temps de rafraîchissement ! Windows peut mettre quelques secondes avant de vous montrer la nouvelle taille de votre fichier ! Et si la taille ne change pas, afin d'assurer le coup, appuyez sur la touche de votre clavier pour lui "forcer la main".

Grossissement paradoxal

Ce qui est moins "logique", en revanche, c'est que sa taille ne diminue pas si on supprime la copie de la table ! Essayez ! Supprimez la copie, et regardez la taille de votre base après la suppression.

Non seulement, la taille n'est pas redescendue à 504 Ko, mais au contraire, elle a même augmenté, dans mon cas, à 672 Ko !

 

Compactage

Pour réduire la taille de la base de données à sa taille originale, il faut la compacter.

Cliquez sur Outils de bases de données, Compacter une base de données :

Et voilà ! Le fichier accdb est revenu à sa taille initiale : ... Ou presque ! 512 au lieu de 504...
je ne sais pas pourquoi !

En fait, Access se comporte comme un enfant dans une chambre : il sort ses jouets de son armoire le plus vite possible, jette ses vêtements n'importe où, et ne se soucie pas du rangement : ce qui intéresse le gamin, c'est jouer le plus rapidement possible ! mais, du coup, toutes ces choses qui traînent, prennent toute la place dans la chambre !

Access essaie donc aussi de vous laisser travailler le plus vite possible ! Mais de temps en temps, il faut ranger, compacter la base de données ! Et maman, lorsqu'elle va ranger la chambre (oui, parce que les enfants ne rangent jamais, c'est bien connu), elle va passer du temps à tout remettre à sa place, et, si elle trouve un jouet cassé, elle va même (tellement elle est gentille), le réparer ! Le compactage, c'est un peu la maman de votre base de données : prendre un peu de temps pour réduire la place, et réparer les éventuelles erreurs système qui pourraient se faufiler dans votre fichier Access.

Et la prochaine fois que l'enfant va jouer, il retrouvera ses jouets très vite, par miracle tous réparés, et recommencera à jeter ses vêtements dans sa chambre. Donc Maman-compactage doit faire son travail de temps en temps. Eh oui, la vie est un éternel recommencement.

Compactage automatique

Il est possible de demander à Access de compacter automatiquement votre base de données dès que vous la fermez. Cliquez sur Fichiers/Options/Base de données active/Compacter lors de la fermeture

Cette case n'est pas cochée par défaut : parce que si vous traitez de petites bases de données, finalement, on s'en fiche un peu de les compacter... Passer de 800Ko à 400Ko sur un disque dur de 3 Téras, qu'est ce que ça peut bien faire !

Et quand vous traitez de grosses bases de données qui pèsent 500 ou 600 Mégas, alors là, oui, c'est intéressant de les compacter pour les faire revenir à une taille de 80 ou 100 Mégas, par exemple ! ... MAIS compacter une petite base, ça prend 1 seconde, tandis que compacter une base énorme, ça prend 10 minutes ! C'est pourquoi cette case n'est pas cochée : Microsoft préfère que ce soit vous qui décidiez exactement quand vient l'heure du rangement.

Compression (Zip)

 

 

 

 

Il ne faut pas confondre Compactage et Compression. Le compactage, c'est juste de l'optimisation de rangement.

La compression, c'est un  peu comme si vous empaquetiez tous les jouets de votre enfant dans des valises très serrées dans le but d'un déménagement, par exemple.

Si vous devez envoyer votre base de données par E-Mail, je vous conseille de commencer par la Compacter, et, ensuite de la Zipper : c'est à dire d'en  faire un fichier compressé en .Zip, et vous allez gagner une place phénoménale.

Dans cet exemple de gauche, le compactage nous fait passer la base de 4'476Ko à 588Ko, et, ensuite, la transformation en Zip nous la réduit à 206 Ko !

Un sacré régime, n'est-ce pas ?  - Je ne vous cache pas que les réductions ne sont pas toujours aussi spectaculaires.

Evidemment, il faudra que le destinataire décompresse - dézippe - la base de données avant de pouvoir l'utiliser, mais c'est une opération fort simple.

Ancien format Access .mdb

Ce chapitre ne vous intéresse que si vous êtes confronté à d'anciennes versions d'Access, ou d'anciennes bases de données créées avec des versions précédentes d'Access. Il est donc facultatif.

Si vous envoyez une base de données par e-mail, il faut que vous vous assuriez que votre destinataire possède bien Access 2007 ou 2010. En effet, s'il possède l'ancienne version 2003, il ne pourra pas lire le format .accdb. Et s'il ne possède simplement pas Access, il ne pourra rien lire du tout !

(Si votre interlocuteur possède un Mac, il n'a forcément pas Access)

Faites très attention parce que le fait de transformer votre base de données en un ancien format va poser des problèmes si vous utilisez des spécificités propres à Access 2007 ou 2010, comme par exemple les Pièces Jointes que nous verrons prochainement.

 

 

Vous avez la possibilité de convertir votre base de données dans des formats antérieurs : Cliquez sur Fichier/Enregistrer et publier/Enregistrer la base de données sous, et choisissez Base de données 2002-2003, ou, carrément le format Access 2000. Si vous désirez "assurer le coup", choisissez Access 2000, car avec ce format, le destinataire pourra de toutes façons l'ouvrir (à moins qu'il possède une super-ancienne version d'Access, comme Access 97 ou 95, mais ce n'est pas très courant.

Incompatbilité MDB - Outlook

Avant la version 2007, les bases de données Access portaient l'extention .MDBAccess 2007 et 2010 utilisent l'extention .ACCDB. Il faut juste savoir qu'Outlook refuse de recevoir les pièces jointes avec l'extension .MDB, qu'il considère comme dangereuses (ne me demandez pas pourquoi). C'est une raison de plus pour compresser vos bases de données dans un .ZIP, car le .ZIP peut contenir ce qu'il veut, en plus d'être un format économique en place, il se reçoit sans problème par Outlook.

Versions d'Access et de formats

Comme nous l'avons souligné, Il y a plein de versions d'Access

Or, bien que l'extension soit identique, on peut bien se douter qu'un fichier Access trucmuche.mdb créé avec Access 97 risque bien d'être différent du format MDB d'une base créée avec Access 2003, mais alors là, nous n'allons pas (trop) rentrer dans le détail, parce qu'on en aurait pour des jours entiers à analyser les différentes versions d'Access, leurs formats de fichiers respectifs, et leurs interactions ! Nous allons rester dans les généralités.

D'ailleurs, comme on l'a vu un peu plus haut, dans Fichier/Publier, on a le choix entre l'enregistrement en :

Conversion impossible en Access 97

Et si on voulait enregistrer en format MDB pour Access 97 ? Eh bien on ne peut pas ! Il faudrait que vous disposiez d'une version d'Access 2000 qui, lui, permet de transformer une base de données en format MDB lisible par Access 97 (Je ne sais pas pourquoi Access 2010 ne possède pas cette option de conversion )

Dans un monde parfait, tout le monde aurait Access 2010, avec des bases de données créées avec Access 2010, mais ça, c'est dans les contes de fées.

Il se trouve que je possède une base de données en format Access 97. Voyez déjà la différence de l'aspect de l'icône entre un fichier MDB (Une petite clé) et ACCDB (la lettre A):

Ouverture d'un fichier Access 97

Que se passe-t-il si j'ouvre mon fichier en format Access 97 avec mon programme Access 2010 ?

Pour mieux vous en rendre compte, je vous invite à télécharger une vieille base de données :
Cliquez avec le bouton droit de la souris sur ce lien, (et choisissez Enregistrer Sous) en format Access 97 pour faire vos tests.

Cette fenêtre apparaît, avec 4 choix :

  • OUI : Si vous cliquez sur OuiAccess va vous créer une base de données du même nom que l'ancienne, mais en format Access 2010, avec l'extension .ACCDB. (Vous aurez donc les deux bases de données l'une en dessous de l'autre)
  • NON : Si vous cliquez sur Non, il va vous ouvrir la vieille base de données, vous pourrez faire de que vous voulez dans les données (Ajouter, modifier, supprimer des enregistrements), mais vous ne pourrez rien faire au niveau de la structure (pas question d'ajouter ou de modifier un champ, ni même de créer une nouvelle table)
  • ANNULER : il n'ouvre rien du tout, et ne convertit rien du tout
  • AIDE : vous arrivez sur des explications bien plus complètes que les miennes sur les versions d'Access et les formats de bases de données.

Dans cet exemple, je vais répondre Non (ouvrir la vieille base .mdb Access 97 telle quelle, donc). Assez bizarrement, je ne peux pas cliquer sur Affichage en mode création (c'est grisé), mais je peux utiliser le bouton droit de ma souris.

Bon, de toute façon, je ne pourrai rien faire en mode création !

 

 

Par contre, en mode saisie de données, vous pouvez faire ce que vous voulez (vous pouvez tester)

Maintenant, si vous désirez modifier la structure des tables, il vous faudra répondre OUI, et travailler dans la nouvelle base .ACCDB qu'Access viendra de vous créer.

Mais évidemment, si la personne qui vous a envoyé la base de données, utilise Access 97, vous ne pourrez plus lui renvoyer ! Son Access 97 ne pourra pas lire votre .ACCDB. Dura lex, sed lex !

Conversion en Access 2000-2002-2003

Par contre, depuis votre nouveau fichier .ACCDB, vous aurez la possibilité, comme on l'a expliqué plus haut (Fichier/Enregistrer et publier), de la rétro-convertir en format 2000 ou 2002-2003.

Vous aurez alors l'opportunité de travailler en mode création des tables.

Vous avez ainsi la preuve que les .MDB sont différents selon qu'il s'agisse d'un MDB pour la version 97, 2000 ou 2002-2003 ! J'ignore, par contre , si les .ACCDB Access 2007 sont identiques à la version 2010, mais il y a tout à parier que non, puisque Access 2010 amène son lot de nouveautés.

Du coup, vous pourriez vous dire :

"Je vais systématiquement travailler avec des fichiers MDB compatibles Access 2000 puisque je pourrai sans souci travailler en mode saisie de données ou création, que ce soit depuis une version d'Access 2000, 2002, 2003, 2007 ou 2010 !"

Non, je ne vous le conseille pas, parce que vous allez passer à côté de toutes les innovations bien sympathiques apportées par la version 2007 et 2010 ! Par exemple, je ne sais pas si vous vous souvenez des champs mémos, et de la possibilité de "journaliser les modifications" ? Comment ? Vous avez oublié ? Ouh, mais il faut réviser ! Dans une base en .MDB, cette option n'existe carrément pas.

Aussi, si vous avez exploité cette fonction, ou toute autre fonction implémentée dans Access 2007 ou 2010, et que vous désirez convertir la base de données en format Access 2000,2002 ou 2003, vous aurez ce message d'erreur :

Et il y a juste un bouton OK ! Pas question de répondre : "OK, ben tant pis, tu la convertis quand même, même si les nouvelles fonctions ne sont pas prises en charge".

Pour l'anecdote, regardez la liste des nouveautés de ce message d'erreur, il ne mentionne même pas la fonctionnalité de la journalisation des champs mémos, et pourtant c'est à cause de ça que je n'ai pas réussi à la convertir. ça pour vous dire que tout n'est jamais simple, absolu, évident ou exhaustif dans ce monde de (per)versions.

Disparition de la sécurité et de la synchronisation

Il y a donc plein de fonctionnalités en plus dans Access 2010, mais il y a deux fonctionnalités en moins, et il faut le savoir !

J'ai entendu dire que ces deux fonctionnalités se re-gérent différemment avec SharePoint, mais je n'ai aucune connaissance de SharePoint.

 

Toujours est-il que ces deux concepts (Sécurité et réplication) sont accessibles depuis Access 2007 ou 2010, mais seulement si vous êtes dans une base de données en format 2000, 2002 ou 2003, comme ceci :

 

 

Vous ne verrez pas ces options si vous êtes dans une base de données en format .ACCDB.

Dans cette leçon, nous avons pris conscience des tailles des fichiers.

Nous avons vu qu'Access optimise les performances au détriment de la taille de la base de données, et il est nécessaire de la compacter de temps à autre.

Nous avons vu la différence entre le compactage, qui est une fonctionnalité d'Access et la compression, qui s'effectue au niveau de l'explorateur Windows. Nous avons étudié les formats de bases de données, et nous avons regardé les précautions à prendre lors de l'envoi d'une base de données par e-mail.

Enfin, pour ceux que ça intéressait, nous avons un peu détaillé les formats des anciennes versions d'Access, et nous avons constaté qu'il y a 2 extensions : accdb et mdb, mais que selon les versions d'Access, une extension identique peut cacher plusieurs formats différents !

Exercice

Téléchargez cette base de données Access 97

  1. Ouvrez-là avec Access 2010
  2. Dites Oui au message qui vous demande si vous voulez la transformer en base Access 2010
  3. Nommez-La Access2010.accdb
  4. Compactez-là
  5. Transformez-là en base de données en format Access 2000, sous le nom Access2000.mdb
  6. Compressez-là en .zip sous le nom : Base20000.zip
  7. Envoyez-vous là à vous même par e-mail
  8. Ouvrez votre propre e-mail que vous vous êtes envoyé
  9. Dézippez-la base de données dans un autre dossier
  10. Convertissez-là en base de données de format Access 2010 sous le nom Base2010.accdb
Quizz
1. Combien pèse un fichier de 5400 Ko ?
5.4 Mo
54 Mo
540 Mo
5.4 Go
54 millions d'octets

Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 386

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 386

Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 387

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 387
2. Est-il possible de mettre 3 bases de données de 100 Mégas chacune dans une clé USB de 2 Giga ?
Oui, mais la clé sera pratiquement pleine
Oui, et on aurait même pu en mettre encore plusieurs autres de la même taille, facilement
Non, on aurait pu seulement en mettre 2
Non, on aurait même pas pu en mettre une

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 409

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 409

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 410

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 410
3. Je suis dans une table qui contient 50'000 enregistrements, et j'en supprime 49'000 :
La base de données va se réduire de presque 50 fois sa taille
La base de données va se réduire de 10% environ
La base de données ne va en tout cas pas réduire, et peut même augmenter

Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 431

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 431

Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 432

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 432
4. Compacter une base de données permet
De la rendre plus rapide, mais pas plus petite
De la rendre plus petite, et souvent plus rapide
De la transformer en fichier de type MDB
De la rendre plus grosse, mais largement plus rapide

Warning: Undefined variable $Q4 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 455

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 455

Warning: Undefined variable $Q4 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 456

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 456
5. Compresser une base de données est la même chose que compacter une base de données
Oui
Non
Oui, à part que l'extension de la base de données se transforme en .MDB.ZIP.

Warning: Undefined variable $Q5 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 477

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 477

Warning: Undefined variable $Q5 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 478

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 478
6. L'extension MDB désigne :
Les bases de données zippées
Les bases de données au format Access 2003 et 2007
Les bases de données au format Access 97, 2000, 2002 et 2003
Les bases de données compactées

Warning: Undefined variable $Q6 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 503

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 503

Warning: Undefined variable $Q6 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 504

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon010/index.php on line 504