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 :
ou
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 :
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.
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 :
ou
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 :
Langue:FR
Couleur:#FF0000
Et voici un second example où chaque ligne (chaque enregistrement) contient 3 champs séparés par des point-virgules :
Annie;Gagnon;2005-10-13
Toto;Lacasse;2004-02-17
Johathan;Lemieux;2002-07-15
Une autre technique consiste à forcer l'utilisation d'un nombre fixe de caractères pour chacun des champs (fixed-width column format).
Ex :
Annie Gagnon 2005-10-13
Toto Lacasse 2004-02-17
Johathan Lemieux 2002-07-15
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.
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 |
1. « base de données ». Grand dictionnaire terminologique du Québec. http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8355656
« 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é