memoire-master/chapters/etat-de-l_art.typ
2024-07-20 18:48:50 +02:00

110 lines
11 KiB
Plaintext

#import "../template.typ": *
#pagebreak(weak: true)
= Etat de l'art
== PostgreSQL, un système open source
=== Présentation de PostgreSQL
PostgreSQL est un système de gestion de base de données relationnelle (SGBDR#footnote("Système de gestion de base de données relationnelle")<SGBDR_def>). Le projet est initié en 1986 par Michael Stonebraker et Andrew Yu à l'Université de Californie à Berkley.
L'une des force majeur de ce système est d'être OpenSource, ce qui signifie qu'il est développé et maintenu par la communauté en plus des développements apportés par la société mère PostgreSQL.
PostgreSQL tient sa réputation de sa fiabilité, sa robustesse et sa richesse fonctionnelle que je détaillerais juste après.
=== Les principes de base
Comme dit précédement, PostgreSQL est un SGBDR@SGBDR_def. Il utilise le language SQL#footnote("Structured Query Language")<SQL_def> pour chercher ou manipuler les données stockées. Le système met à disposition une serie de fonctions pour permettre ces interactions, à savoir:
- Les transactions: un ensemble d'une ou de plusieures opérations regroupées en une seule opération atomique.
- Les vues: table virtuelle qui sélectionne et affiche des données à partir d'une ou plusieurs tables réelles.
- Les contraintes d'inrégrité: règles qui garantissent la validité et la cohérence des données dans une base de données.
- Les procédures stockées: programme écrit en SQL qui est stocké dans une base de données et peut être exécuté à la demande.
- Les triggers: procédure stockée qui est automatiquement exécutée en réponse à un événement spécifique sur une table.
- Les fonctions utilisateurs: procédure stockée qui renvoie une valeur et peut être utilisée dans une requête SQL comme une fonction intégrée.
PostgreSQL à également l'avantage d'être multiplateforme. Il peut ainsi fonctionner sur des environnements variés avec des systèmes d'exploitations différents, comme par exemple Windows, Linux, Mac,... L'une des forces de ce système de gestion de base de données réside dans sa capacité à gérer des volumes importants de données allant jusqu'à plusieurs Terraoctets. Cette gestion passe par différents points clefs, à savoir:
- L'indexation
- Le partitionnement
- La gestion du cache
- Des notions de concurrence et d'isolation
- De la réplication et du sharding#footnote("Alié à la réplication il permet de répartir la charge sur plusieures instances d'un même serveur.").
=== Les avantages de PostgreSQL
PostgreSQL est un SGBDR@SGBDR_def très populaire pour plusieurs raisons:
- Il est open source, ce qui signifie qu'il est gratuit et que son code source est disponible pour tous. Cela permet à la communauté de développeurs de contribuer à son amélioration et de créer des extensions pour ajouter des fonctionnalités supplémentaires.
- Il est très fiable et robuste, ce qui en fait un choix idéal pour les applications critiques et les environnements de production.
- Comme vu précédement il est très performance, grâce à son moteur de stockage et son optimiseur de requêtes. Il est capable de gérer de gros volumes de données et de supporter des charges de travail élevées.
- Le système au complet est très flexible, grâce à son architecture modulaire et à son support des extensions. Il peut s'adapter à de nombreux types d'applications et de besoins, notement pour des applications géographiques avec des besoins plus complets.
- De pars sa nature open source, il est compatible avec de nombreux langages de programmation, tels que Python, Java, C++, Ruby, PHP, etc.
Il est également important de noter que PostgreSQL tient sa popularité, au delà de ses performances et fonctionnalités déjà complètes, de par sa capacité à gérer des types de données bien plus complexes. Il propose la gestion de modèles de données complexes tel que des données géographiques et des données attributaires, mais permet surtout de gérer les relations entre ces données.\
Cette gestions de données complexe permet une ouverture sur d'autre système, notamment QGIS, un système d'informations géographiques, et ainsi d'étendre les fonctionnalités proposées par ce système.\
En type de fichiers volumineux, on peut par exemple citer les fichiers MAJICS, RPG, référetiels vecteurs, ...
=== Les inconvénients de PostgreSQL
PostgreSQL présente également quelques inconvénients qu'il faut prendre en compte:
- Il peut être plus complexe à installer et à configurer que d'autres SGBDR@SGBDR_def, tels que MySQL ou SQLite.
- Il peut nécessiter plus de ressources matérielles (mémoire, CPU, espace disque) que d'autres SGBDR@SGBDR_def pour fonctionner de manière optimale.
- Il peut être moins performant que d'autres SGBDR@SGBDR_def pour certaines tâches spécifiques, telles que les requêtes de type OLAP (Online Analytical Processing).
"PostgreSQL 12 - Guide de l'administrateur" de Guillaume Lelarge et Stéphane Schildknecht, éditions Eyrolles, 2020.
"PostgreSQL - Maîtrisez les fondamentaux du SGBD open source" de Régis Montoya, éditions ENI, 2019.
"PostgreSQL - Le guide complet de l'administrateur et du développeur" de Joshua D. Drake et Peter Eisentraut, éditions Pearson, 2018.
=== Conclusion
PostgreSQL est un SGBDR@SGBDR_def open source très populaire, grâce à sa fiabilité, sa robustesse, sa richesse fonctionnelle et sa flexibilité. Il est utilisé dans de nombreux domaines, tels que la finance, la santé, l'éducation, le gouvernement, etc. Il est également compatible avec de nombreux langages de programmation et de nombreux systèmes d'exploitation. Cependant, il peut être plus complexe à installer et à configurer que d'autres SGBDR@SGBDR_def et nécessiter plus de ressources matérielles. Malgré ces inconvénients, PostgreSQL reste un choix idéal pour de nombreuses applications critiques et environnements complexes.
== Des outils pour simplifier les migrations
=== Le but d'une telle migration
=== Les points clefs
=== Les avantages
=== Les inconvenients
=== En conclusion
== Une étape trop couteuse ?
Effectuer une migration de base de données n'est pas une tâche anodine. Cela demande du travail en amont, il faut analyser les différents scénarios possibles, estimer un budget pour une telle tâche, réaliser de potentiels développements, s'assurer de la fiabilités avant de mettre tout ça en pratique et enfin la réalisation de l'étape cruciale sur les environnements sensibles.
Pour faire une migration de base de données il existes de nombreuses solutions, certaines plus couteuse, d'autre plus fiables, encore d'autres des plus spécialisées, ... Il faut donc dans un premier temps trouvers différents outils pour comparer les avantages et leur faiblesses.\
=== Les outils
On peut dans un premier temps penser à effectuer cette migration grâce à des outils spécialisés qui se chargent de faire la migration automatiquement et de s'assurer de la pérennité entre les données de l'ancienne base et les données insérée dans la nouvelle.\
En prenant pour exemple l'outil Oracle Data Dump fournit par l'entreprise Oracle, ce logiciel permet de sauvegarder et restaurer des données et des métadonnées pour les bases Oracle.\
Il est rapide et fiable, on peut ainsi lui fournir un fichier #ref-glossary(term: "Dump")[dump] de la base source et l'outil va se charger, grâce à ce fichier, d'intégrer les données dans la base cible.\
Microsoft propose sa solution alternative SSMA pour importer les types de bases Access, DB2, MySQL, Oracle, SAP ASE vers leurs différents SGBDR@SGBDR_def propriétaires (à savoir les suites SQL Server).\
Sur le même principe les outils MySQL workbench, AWS Database Migration Service (DMS) et PgAdmin permettent de réaliser le même type de migration vers leurs systèmes propriétaires à savoir respectivement MySQL, AWS et PostgreSQL.
Les principaux désavantages de ce genre de solutions sont:
- L'import des données reste assez stricte et ne permet pas de flexibilité, si les données ne sont pas compatiblé, il faut passer du temps à travailler le modèle de données pour essayer de palier aux incompatibilités.
- Ils peuvent également rendre les migrations onnéreuses avec certaines solutions qui coutent jusqu'à plusieures centaines d'euros pour les entreprises.
- Les logiciels proposés peuvent parfois être complexes et demander un certain temps d'adaptation avant de réellement pouvoir effectuer la tâche de migration.
=== Les types de migrations
Il est possible, comme vu précédement, d'effectuer une migration *à partir d'outils automatiques*. L'avantage est de déléguer la majorité de la complexité à une application qui va se charger d'effectuer la tâche cruciale, de réduire les risques d'erreurs pour de grosses applications mais peut être couteuses, insuffisement flexible si le besoin se présente et necessite une expertise pour la configuration des outils.
Une alternative à prendre en compte est la migration *manuelle*. Cette solution est interessante pour les petites bases de données sans trop de complexité. Le but est d'exporter un fichier #ref-glossary(term: "Dump")[dump] de la base source et de l'importer dans la base cible si possible, ou d'exporter les données sous un autre format pour l'importer simplement. Les couts de cette techniques sont faibles voir nuls et permet une flexibilité lors de la migration.
Pour palier au problème de prix, une autre solution envisageable est l'export d'un fichier de backup importé par la suite sur la nouvelle base. De la sorte, pas de cout supplémentaire, pas de temps dépensé pour effectuer la migration en elle même et cette méthode rentre dans le cas des bonnes pratiques de posséder un backup régulier d'une base de données pour s'assurer de ne pas perdre les données en cas de problème.\
Un problème majeur de cette solution est qu'elle ne pas de garantir que les données soient compatibles, ne permet pas de résoudre les erreurs si il y'en à, il n'y à aucune garantie de succèes.
Une solutions possible intermédiaire permettant de mitiger problèmes de coûts et problèmes de pérennité, serait de développer en interne de l'entreprise une application de migration de base de données. Même si les coûts ne sont pas moindre, la solution s'adapte au besoin précis à l'instant de la migration, il permet de gérer l'intégralité des actions réalisées et permet également de gérer les cas spéciaux si il y'en a.\
En prenant pour exemple une ancienne version de PostgreSQL qui ne supportait pas les identifiants uniques universels (GUID) et il est maintenant question de faire une migration vers une version qui supporte ce type de données. En dévveloppant un logiciel de migration on peut par exemple
=== Les ressources disponibles
=== La philosophie de l'entreprise
== La solution parfaite