SQL comprend également la notion de transaction : toutes les requêtes d'une transaction
donnée doivent être exécutées, sinon aucune ne le sera. Ce mécanisme permet de
garantir la cohérence d'une base de données : une transaction n'est jamais effectuée à
moitié. Notamment, en cas d'erreur lors de l'exécution d'une commande SQL, toute la
transaction est automatiquement arrêtée.
Il s'agit d'ailleurs du concept de base pour l'API LocalStorage, qui démarre et arrête les
transactions automatiquement.
1.7. Aller plus loin
Cette petite introduction à SQL est très parcellaire et ne donne que les bases
nécessaires à l'écriture de petites requêtes : elle ne rentre même pas dans les détails
relationnels, essentiels à la conception d'une base de données viable. En outre, pour la
simplicité du développement et du déploiement, nous avons fait le choix d'utiliser un
moteur de base de données très léger : SQLite. Il a l'avantage d'être toujours inclus
avec PyQt (et est le seul accessible directement depuis Qt Quick).
Parmi ses limitations, ce dernier ne gère que très peu de types de données. Des moteurs
plus complets (plus lourds), comme MariaDB, Oracle Database, Microsoft SQL
Server, PostgreSQL, disposent d'une liste de types bien plus exhaustive, ce qui leur
permet d'optimiser le stockage des données : par exemple, pour du texte, SQLite ne
dispose que de TEXT, soit un texte de longueur arbitraire ; à peu près tous les moteurs
implémentent cependant VARCHAR, qui est une chaîne de caractères avec une longueur
maximale.
SQL n'est pas non plus l'unique manière de voir les bases de données : le paradigme
non relationnel (NoSQL) commence à prendre de l'importance. La grande différence
est que ces bases de données ne traitent plus de la notion de relation (qui existe, par
exemple, entre la table des livres et celle des genres : un livre possède un genre) : elles
peuvent être remplacées par des arêtes comme dans un graphe (Neo4j, OrientDB,
OpenLink Virtuoso, etc.)… ou rien du tout (base de données orientée colonne à la
Cassandra, clé-valeur à la Redis). Parfois, la notion de base est le document, comme
une page web ou un produit dans un catalogue : chaque entrée peut alors se structurer
(un prix est la combinaison d'un nombre et d'une monnaie, un produit peut avoir une
liste de mots clés), voire avoir un schéma adapté (CouchDB, MongoDB) ; les bases de
données orientées objets stockent directement des objets, sans autre forme de procès
(ZODB, VelocityDB, etc.). Certaines bases de données se spécialisent dans le stockage
d'informations géographiques (PostGIS) ou XML (MarkLogic, Sedna, etc.).
359
Précédent

- 360/494

Suivant