Formation PUB210 : SQLite, 2018 Initiation aux bases de données

1.2 Utiliser une base de données ou un fichier plat pour le stockage local de données ?


Presque toutes les applications, que ce soient des applications Web ou des applications natives (de bureau, mobiles, embarquées ou autres), ont besoin de stocker des données. Le stockage peut être fait :

  • localement (sur la même machine que l'application qui est exécutée ou, dans le cas d'une application Web, sur la même machine que le navigateur)

    ou

  • sur un serveur distant.

Concentrons-nous sur le cas où nous souhaitons stocker des données locales.

Les données à stocker peuvent prendre différentes formes plus ou moins complexes, allant des simples préférences utilisateur (langue, couleurs, etc.) jusqu'à une série de données interreliées sur lesquelles l'application fera des manipulations d'ajout, de modification, de suppression et de consultation (on parlera d'opérations CRUD : Create, Read, Update, Delete).

Plusieurs formats de stockage de données sont disponibles et sont regroupés dans deux grandes familles :

  • les fichiers plats
  • les données organisées de façon plus structurée

Dans un cas comme dans l'autre, on peut parler de base de données puisque les données sont organisées selon certains critères en vue de permettre leur exploitation.1 Cependant, dans la pratique, on réservera le terme base de données pour les données organisées de façon plus structurée.

Les fichiers plats

Un fichier plat est un simple fichier texte, non compilé, dans lequel on enregistre des données. L'extension du fichier a peu d'importance. On retrouve souvent l'extension .txt.

Dans un fichier plat, il y a généralement un enregistrement par ligne. Les enregistrements n'ont aucun lien structuré entre eux.

L'utilisation d'un fichier plat est intéressante lorsque la quantité de données n'est pas appelée à varier énormément et que les relations entre les données sont faibles ou nulles.

L'enregistrement des préférences d'un utilisateur est un exemple-type pour lequel les fichiers plats peuvent être intéressants.

Lorsque les informations sont stockées dans un fichier plat, il faut qu'un système permette de délimiter les différentes informations (les champs).

Pour séparer les champs, on pourra :

  • utiliser un délimiteur

    ou

  • fixer la largeur de chacune des colonnes

Délimiteur

Un délimiteur est un caractère précis qui permet de séparer des informations. On utilisera souvent la virgule, le point-virgule, les deux points, etc.

Un fichier qui utilise un délimiteur, quel qu'il soit, s'appelle fichier CSV (Comma-Separated Values).

Voici un exemple dans lequel les informations sont enregistrées sous le format clé:valeur :

Fichier plat CSV

Langue:FR

Couleur:#FF0000

Et voici un second example où chaque ligne (chaque enregistrement) contient 3 champs séparés par des point-virgules :

Fichier plat CSV

Annie;Gagnon;2005-10-13

Toto;Lacasse;2004-02-17

Johathan;Lemieux;2002-07-15

Colonnes à largeur fixe

Une autre technique consiste à forcer l'utilisation d'un nombre fixe de caractères pour chacun des champs (fixed-width column format).

Ex :

Fichier plat à colonnes fixes

Annie                    Gagnon                   2005-10-13

Toto                     Lacasse                  2004-02-17

Johathan                 Lemieux                  2002-07-15

Web vs système de fichiers

Attention : dans le cas d'une application Web, il n'est pas possible d'effectuer des opérations de lecture et d'écriture directement dans le système de fichiers. Il faudra plutôt passer par un API (Application programming Interface) que le navigateur met à notre disposition.

Voici quelques solutions qui peuvent être utilisées pour faire l'équivalent d'un fichier plat pour une application Web.

  • cookies (Attention : plusieurs navigateurs utilisent SQLite, donc une base de données, pour stocker les cookies mais les données demeurent néanmoins peu ou pas structurées)
  • WebStorage (le sous-ensemble localStorage - dont il est question quand on parle de Stockage des données locales ou de local storage - permet le stockage permanent alors que le sous-ensemble sessionStorage offre un stockage temporaire)

Les données organisées de façon plus stucturée (bases de données)

Les données d'une base de données peuvent être stockées dans un ou plusieurs fichiers et ces fichiers peuvent être compilés ou non. C'est l'organisation des données qui fait qu'on parlera de fichier plat ou de base de données et non le nombre ou le type de fichiers impliqués.

Par exemple, une base de données XML est composée d'un ou plusieurs fichiers non compilés. Une base de données SQLite est composée d'un seul fichier compilé.

Puisque cet article se concentre sur le stockage local, les solutions qui requierent l'installation d'un serveur ne sont pas présentées.

Voici quelques choix qui s'offrent à vous.

Base de données Navigateurs (applications Web) Langages de programmation (applications natives)
 SQLite

Pour faire du SQLite, le navigateur utilisera la spécification Web SQL Database.

Cette spécification est supportée par quelques navigateurs dont Google Chrome, Safari, navigateur d'Android.

Beaucoup de langages supportent SQLite, dont Python, Java, Ruby, C# (également plusieurs langages Web mais ce n'est pas le propos ici).

IndexedDB

Supporté par la majorité des navigateurs : Google Chrome, Firefox, Safari, navigateur d'Android. Support partiel par IE et Edge.

Non supporté
Fichiers XML ou JSON

Le Web n'a pas accès au système de fichiers.

Tous les langages peuvent travailler avec du XML ou du JSON

Source

1. « base de données ». Grand dictionnaire terminologique du Québec. http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8355656

Pour plus d'information

« Deciding what client-side storage system to use ». Raymond Camden. https://www.raymondcamden.com/2016/07/08/deciding-what-client-side-storage-system-to-use/

« Client-Side Storage ». HTML5 Rocks. https://www.html5rocks.com/en/tutorials/offline/storage/

« Please Stop Using Local Storage ». Randall Degges. https://www.rdegges.com/2018/please-stop-using-local-storage/

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre