Les concepts de base de données sont transférables d'un écosystème à l'autre, mais il est important de se familiariser avec leur implémentation spécifique dans la plateforme utilisée. Vous aurez l'occasion d'expérimenter les mécaniques de quelques enjeux de base de données dans l'écosystème Rails/MariaDB. À partir du projet fourni, vous devez:
Assurez-vous de respecter les configurations du projet pour mettre en place votre environnement de développement
Par défaut, Rails affiche les requêtes SQL dans la console du serveur
Il existe également un utilitaire s'intégrant directement à la page web (attention! entre en conflit avec prettifier)
Un utilitaire Ruby permet de mesurer les performances lors de l'exécution
Une autre approche consiste à analyser le code via un outil qui repère certains patterns d'implémentation
ou de rédaction
👉 Expérimentez!
Ces outils sont pratiques pour vous donner de la visibilité sur le comportement de votre application et constater l'impact des changements effectués.
Comparez différents mécanismes permettant de constater la structure de la base de données
ar_internal_metadata et schema_migrationsÉlaborez le schéma sommaire des entités applicatives en combinant les informations de la base de données et des modèles.
âś… Livrable
La base de données est le dernier rempart de l'intégrité(relationnelle ET données), toutefois, les mécanismes logiciels facilitent grandement l'implémentation des fonctionnalités applicatives. Pour offrir une rétroaction pertinente, il faut implémenter les mécanismes dans la couche applicative de façon exhaustive.
âś… Livrable
Lorsqu'on accepte des données externes(url, formulaire, etc.), on doit faire preuve d'une grande prudence en les traitant dans le code applicatif, et ce peut-importe la technologie.
Les traitements en lien avec la base de données représentent une porte d'entrée permettant aux acteurs malicieux de récupérer des données qu'il ne devrait pas voir ou d'introduire des valeurs indésirables dans le système.
Rails offre des mécanismes permettant de prévenir ces vulnérabilités, mais ils doivent être utilisé de façon délibérée.
âś… Livrable
Articles et corriger les vulnérabilités de type
fetch/cURL/wget qui permet de constater de façon significative chaque faille dans le rapportPour permettre une analyse exhaustive des interactions d'une application avec la base de données, il est judicieux de reproduire un environnement de test représentatif des données réelles, ou à tout le moins du même ordre de grandeur.
âś… Livrable
Élaborez un rapport présentant des statistiques pertinentes des données de l'application en explorant l'implémentation en SQL brut via les méthodes
âś… Livrable
Les requêtes N + 1 peuvent être une source de ralentissement majeur dans la récupération des données. Rails offre plusieurs mécanismes pour résoudre cette problématique
On peut appliquer des notions de dénormalisation pour accélérer certaines récupérations de données, Rails fourni un raccourci pour les compteurs
âś… Livrable
Avant vendredi 30 janvier @ 17h30
Nom
| Rapport | |
| 0 -0.5 -1 | |
| Mise en page, présentation, clarté | 0 -0.5 -1 |
| Schéma sommaire | |
| Schemas: ruby, sql | 1 0.5 0 |
| mariadb-dump: structure, sans bd, sans données | 1 0.5 0 |
| Diagramme: tables applicatives, multiplicités, polymorphisme | 2 1.5 1 0 |
| Intégrité | |
| Implémentation | 4 3.5 3 2 1 0 |
| Failles | |
| Correctifs SQLi, IDOR, Mass Assign | 3 2.5 2 1 0 |
| Documentation SQLi, IDOR, Mass Assign | 2 1.5 1 0 |
| Données de test | |
| Implémentation | 1 0.5 0 |
| Documentation | 2 1.5 1 0 |
| SQL Brut | |
| Implémentation, pertinence des statistiques | 2 1.5 1 0 |
| Documentation | 1 0.5 0 |
| N + 1 | |
| Implémentation, n + 1, counter cache | 3 2.5 2 1 0 |
| Documentation itérative | 2 1.5 1 0 |