0% ont trouvé ce document utile (0 vote)
18 vues12 pages

Optimisation des bases de données SQL

Ce document présente une analyse approfondie des besoins et des solutions pour améliorer la performance d'une base de données relationnelle dégradée. Il aborde les méthodes d'optimisation, le théorème de CAP, et les bases de données NoSQL comme alternatives adaptées aux exigences modernes de gestion des données. Enfin, il souligne les avantages et inconvénients des bases de données NoSQL tout en proposant un plan d'action pour la refonte du système.

Transféré par

Nwantou Tchouameni
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
18 vues12 pages

Optimisation des bases de données SQL

Ce document présente une analyse approfondie des besoins et des solutions pour améliorer la performance d'une base de données relationnelle dégradée. Il aborde les méthodes d'optimisation, le théorème de CAP, et les bases de données NoSQL comme alternatives adaptées aux exigences modernes de gestion des données. Enfin, il souligne les avantages et inconvénients des bases de données NoSQL tout en proposant un plan d'action pour la refonte du système.

Transféré par

Nwantou Tchouameni
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Prosit

:
Seme
Statistiques

Créé par : Nwantou Tchouameni Joy Patricia


Pilote : Humphrey Mbeng Nkongho Ojong
Promotion : X2026
Table des matières

I. Analyse du contexte

II. Analyse des besoins

III. Définition des contraintes


IV. Définition de la problématique
V. Plan d’action

VI. Réalisation du plan d’action


VII. Validation des hypothèses

VIII. Conclusion

IX. Bilan critique du travail effectué


X. Références des méthodes et outils utilisés

I. Analyse du contexte

Après notre intégration en stage de 5e année dans une jeune SS2L, un des
plus gros clients de la société se plaint des lenteurs de sa base relationnelle

1
en plus d’une structure de BD dégradée. Conséquemment, il nous ait demandé
d’améliorer le temps de présence de la base et proposer une solution de refonte complète du
système.

II. Analyse des besoins


 Améliorer le temps de présence de la base
 Refondre le système de BD vers une solution adapté
 Proposer une étude conforme au théorème de CAP

III. Définition de la problématique

Comment améliorer la performance et la fiabilité du système de BD ?

IV. Définition des contraintes

 La solution doit être sous forme d’un POC

V. Plan d’action
 Définition des mots clés
 Etude des méthodes d’optimisation de BD
 Etude sur le théorème de CAP
 Etudier les BD NoSQL et faire la comparaison
 Faire le POC du système

VI. Réalisation du plan d’action

1. Définition des mots clés

a. Théorème CAP: Un théorème en informatique qui stipule qu'il est impossible


pour un système de stockage de données distribué de garantir simultanément la
cohérence, la disponibilité et la tolérance aux partitions.

b. Le POC(Proof of Concept) : Une démonstration limitée visant à vérifier


la faisabilité d'un concept ou d'une idée avant un déploiement plus large.

c. Les bases de données NoSQL : Une catégorie de systèmes de gestion de bases de


données qui diffère des bases de données relationnelles traditionnelles.

d. Les types de BD : Systèmes organisés de collecte, de stockage et de gestion des


données, et elles jouent un rôle crucial dans le monde numérique. Elles se présentent
sous différentes formes, chacune ayant ses propres caractéristiques, avantages et
inconvénients. Voici une définition des principaux types de bases de données : Bases
de Données Relationnelles, Bases de Données NoSQL, Bases de Données Orientées
Objets, Bases de Données en Réseau, Bases de Données Hiérarchiques, Bases de

2
Données Graphiques, Bases de Données Multimodèles, Bases de Données à Paires
Clé-Valeur, Bases de Données Orientées Colonne

e. Les méthodes d’optimisation de BD : Techniques et des stratégies utilisées pour


améliorer la performance des bases de données en termes de vitesse, d'efficacité et de
gestion des ressources. Ces méthodes peuvent être appliquées à différents niveaux de
la base de données, incluant la conception des schémas, l'optimisation des requêtes, la
gestion des ressources matérielles, et bien d'autres aspects.

f. Les systèmes redondants : Systèmes conçus pour fournir des niveaux élevés de
disponibilité, de fiabilité et de tolérance aux pannes en dupliquant des composants ou
des fonctions critiques. L'objectif principal de la redondance est d'assurer la continuité
du service et d'éviter les interruptions en cas de défaillance d'un ou de plusieurs
composants du système.

2. Etude des méthodes d’optimisation de BD

Les méthodes d'optimisation des bases de données (BD) sont des techniques et des stratégies
utilisées pour améliorer la performance des bases de données en termes de vitesse, d'efficacité
et de gestion des ressources. Ces méthodes peuvent être appliquées à différents niveaux de la
base de données, incluant la conception des schémas, l'optimisation des requêtes, la gestion des
ressources matérielles, et bien d'autres aspects.
Indexation
L'indexation est une technique cruciale qui permet d'accélérer l'accès aux données en créant des
structures spéciales pour les colonnes souvent recherchées. Les index fonctionnent comme des
tables de consultation pour des données spécifiques.
 Types d’index : Index B-Tree, Hash Index, Bitmap Index.
 Avantages :
o Réduit le temps de recherche pour les requêtes de sélection.
o Améliore la performance des opérations de jointure.
Partitionnement
Le partitionnement divise une table en parties plus petites qui peuvent être gérées
indépendamment, ce qui peut améliorer les performances de requêtes et la gestion des données.
 Types : Partitionnement horizontal, vertical, et partitionnement par plage de valeurs.
 Avantages :
o Réduit le volume de données à traiter pour chaque requête.
o Facilite la gestion des données volumineuses.
Normalisation et Dénormalisation

3
La normalisation vise à réduire la redondance des données en les structurant de manière
logique, tandis que la dénormalisation combine les données pour réduire les temps de requête
en minimisant les jointures.
 Avantages de la normalisation :
o Évite la redondance des données et les anomalies de mise à jour.
 Avantages de la dénormalisation :
o Accélère les performances de lecture en réduisant le besoin de jointures
complexes.
Optimisation des Requêtes
L’optimisation des requêtes consiste à écrire des requêtes SQL plus efficaces et à les exécuter
de manière optimale pour minimiser l'utilisation des ressources et le temps de réponse.
 Techniques :
o Utiliser des sous-requêtes correctement.
o Minimiser les jointures coûteuses.
o Éviter les opérations de type SELECT *.
Caching
Le caching consiste à stocker temporairement les données fréquemment utilisées en mémoire
pour accélérer l'accès et réduire les temps de réponse.
 Types : Cache au niveau de l'application, cache au niveau de la base de données.
 Avantages :
o Réduit les temps de requête en évitant les accès répétés à la base de données.
Gestion des Transactions
La gestion des transactions garantit la cohérence et l'intégrité des données en contrôlant
l'exécution des transactions de manière atomique, cohérente, isolée et durable (ACID).
 Techniques :
o Utilisation de verrous pour contrôler l'accès concurrentiel.
o Contrôle des versions pour gérer les conflits d'écriture.
Compression des Données
La compression des données réduit l'espace de stockage en compressant les données, ce qui
peut également améliorer la vitesse de traitement en réduisant la quantité de données à lire ou
écrire.
 Types : Compression par colonne, compression par ligne.
 Avantages :
o Réduit l'utilisation de l'espace de stockage.
o Améliore les performances de lecture en réduisant le volume de données.
Répartition de la Charge (Load Balancing)

4
La répartition de la charge distribue les requêtes entre plusieurs serveurs pour éviter la
surcharge d'un seul serveur et améliorer la performance globale.
 Avantages :
o Améliore la disponibilité et la fiabilité du système.
o Équilibre la charge de travail pour éviter les goulots d’étranglement.
Optimisation des Ressources Matérielles
L'optimisation des ressources matérielles consiste à utiliser efficacement les ressources telles
que le CPU, la mémoire et les disques durs pour maximiser la performance des bases de
données.
 Techniques :
o Utilisation de disques SSD pour des temps d'accès plus rapides.
o Allocation adéquate de la mémoire pour les caches de données.
Maintenance Régulière
Les opérations de maintenance régulière comme la défragmentation, la réorganisation des index
et la mise à jour des statistiques sont essentielles pour maintenir la performance optimale des
bases de données.
 Avantages :
o Assure une performance continue.
o Prévient les dégradations de performance au fil du temps.

3. Etude sur le théorème de CAP

Système distribué vs centralisé


Avant tout, il est important de comprendre la différence entre système distribué et centralisé.La
principale différence est qu’un système distribué est un réseau qui stocke des données sur
plusieurs nœuds (machines physiques ou virtuelles) en même temps.
Contrairement à un système centralisé qui stocke ses données dans un seul est même endroit,
ce qui peut être problématique en cas de panne du système par exemple.

5
Théorème CAP:
Le théorème CAP nous dit qu’un système distribué ne peut fournir que deux des trois
caractéristiques souhaitées : cohérence (Consistency), disponibilité (Availability) et
tolérance au partitionnement (Partition Tolérance).

La cohérence signifie que tous les clients voient les mêmes données en même temps,
quel que soit le nœud auquel ils se connectent.
La disponibilité signifie que tout client qui fait une requête obtient une réponse, même si
un ou plusieurs nœuds sont en panne.

6
4. Etudier les BD NoSQL et faire la comparaison

À l’heure du Big Data, les bases de données relationnelles ne sont plus adaptées. Pour
prendre en charge les immenses volumes de données, les stocker et les analyser, il est
impératif de s’en remettre à de nouvelles solutions.
Une base de données NoSQL est une base de données « non relationnelle ». Il est
possible d’y stocker des données sous une forme non structurée, sans suivre de schéma
fixe. Les jointures ne sont plus nécessaires, et le scaling est facilité.
On utilise notamment les bases de données NoSQL pour les Data Stores distribués aux
besoins élevés en capacité de stockage. Ainsi, NoSQL est utilisé pour le Big Data et les
applications web en temps réel. Les géants de la technologie comme Twitter, Facebook
ou Google collectent chaque jour plusieurs terabytes de données sur leurs utilisateurs.

Le terme » NoSQL » signifie en fait » Not Only SQL « (pas seulement SQL). En effet,
les bases de données relationnelles utilisent la syntaxe SQL pour le stockage et l’analyse
de données.
Ce n’est pas le cas d’une database non-relationnelle. Les systèmes NoSQL sont
compatibles avec une large variété de technologies permettant le stockage de données
structurées, non structurées, semi-structurées ou polymorphique.
L'histoire de NoSQL
Le terme et le concept NoSQL furent inventés en 1998 par Carl Strozz, afin de désigner
sa base de données relationnelle légère et open source. Ce concept a ensuite été adopté et
popularisé par les GAFAM tels que Google, Facebook ou Amazon confrontés à
d’immenses volumes de données. Les bases de données relationnelles étaient devenues
trop lentes.
Plutôt que de mettre à jour leur équipement informatique pour accroître les performances
des RDBMS (Relational Database Management System), les géants de la technologie ont
choisi de distribuer la charge sur de multiples serveurs hôtes. C’est la méthode dite du »
scaling out « . Les bases de données NoSQL sont idéales pour le scaling-out, puisqu’elles
sont non relationnelles.
En l’an 2000, la base de données graphique Neo4j fut lancée. Ce fut ensuite le tour de la
Google Bigtable, en 2004, puis CouchDB en 2005. L’histoire des bases de données
NoSQL fut aussi marquée par Amazon Dynamo en 2007.
Puis, en 2008, Facebook rend open source la base de données non-relationnelle qu’elle
utilise en interne : Cassandra. Cet outil devient la référence des databases NoSQL, et
remet le terme NoSQL sous le feu des projecteurs en lui donnant son sens et sa
popularité actuelle.

7
Toutefois aucun de ces quatre types de bases de données ne permet de résoudre
n’importe quel problème. Il est nécessaire de choisir la base de données adéquate en
fonction du cas d’usage.
Dans le cas des bases de données de type paire clé / valeur, les données sont stockées
sous forme de paires clé / valeur. Ceci permet la prise en charge de larges volumes de
données et de charges lourdes. Les données sont entreposées dans un tableau de » hash.

» au sein duquel chaque clé est unique. La valeur peut être un JSON, un objet BLOB,
une ligne de code ou autre.
Ce type de base de données est le plus basique. Il permet au développeur de stocker plus
facilement des données sans schéma. En guise d’exemples, on peut citer Redis ou
Dynamo. D’ailleurs, Amazon Dynamo est le modèle initial de cette catégorie de
database.
Les bases de données orientées colonnes, comme leur nom l’indique, repose sur des
colonnes. Elles sont basées sur le modèle BigTable de Google. Chaque colonne est
traitée séparément, et les valeurs sont stockées de façon contigüe.
Cette catégorie de base de données offre de hautes performances pour les requêtes
d’agrégation comme SUM, COUNT, AVG et MIN. Pour cause, les données sont déjà
disponibles et prêtes dans une colonne. En guise d’exemples, on peut citer HBase,
Cassandra ou Hypertable.

Les bases de données Graph-Based stockent les entités et les relations entre ces entités.
L’entité est stockée sous forme de noeud, et les relations comme bordures. Il est ainsi
facile de visualiser les relations entre les noeuds. Chaque noeud et chaque bord ont un
identifiant unique.
Ce type de base de données est multirelationnel. On l’utilise principalement pour les
réseaux sociaux, la logistique ou les données spatiales. Parmi les exemples les plus
populaires, on peut citer Neo4J, Infinite Graph, OrientDB et FlockDB.

Les bases de données orientées document stockent et retrouvent-elles aussi les données
sous forme de pair clé-valeur. Toutefois, la valeur est stockée sous forme de document. au
format JSON ou XML. La valeur est ainsi comprise par la base de données et peut
être trouvée à l’aide d’une requête.

Ce type de base de données offre donc une flexibilité accrue. Il est principalement utilisé
pour les systèmes CMS, les plateformes de blogging, ou les applications de e-commerce.
En revanche, il ne convient pas pour les transactions complexes nécessitant des

8
opérations ou des requêtes multiples sur des structures agrégées variables. Les exemples
les plus connus dans cette catégorie sont Amazon SimpleDB, CouchDB, MongoDB,
Riak, Lotus Notes et MongoDB.

Avantages et inconvénients de NoSQL


NoSQL présente de nombreux avantages, mais aussi des inconvénients. Ces bases de
données sont idéales pour le stockage et l’analyse Big Data, et évitent aussi un point de
défaillance unique.
Elles facilitent la réplication, et ne nécessitent pas de couche de caching séparée. Les
performances sont élevées, et une scalabilité horizontale est possible. Les databases
NoSQL peuvent prendre en charge les données structurées ou non structurées de la
même manière.
En outre, la programmation orientée objet est facile d’utilisation et flexible. Les bases de
données NoSQL ne nécessitent pas non plus de serveur dédié à hautes performances.
Elles sont compatibles avec les principaux langages de programmation.
L’implémentation est plus simple qu’avec les RDBMS. Le schéma flexible peut être
altéré facilement sans interruption.

Néanmoins, ce type de base de données présente aussi des points faibles. On peut citer
l’absence de règles de standardisation et les capacités de requêtes limitées. Les capacités de
bases de données traditionnelles, comme la consistance lorsque de multiples
transactions sont effectuées simultanément, peuvent aussi manquer.
Par ailleurs, il devient difficile de maintenir des valeurs uniques en guise de clés lorsque
le volume de données augmente. Ce modèle ne fonctionne pas aussi bien pour les
données relationnelles. La courbe d’apprentissage peut être difficile pour les nouveaux
développeurs, et les options open source ne sont pas toujours populaires au sein des
entreprises. De manière générale, les bases de données relationnelles et leurs outils sont
plus matures, plus aboutis et donc plus adoptés.

Pourquoi utiliser NoSQL ?


Les bases de données NoSQL conviennent pour plusieurs cas d’usage. Elles sont
adaptées pour stocker et retrouver de larges volumes de données. Elles conviennent aussi
lorsque les relations entre les données ne sont pas spécialement importantes.
On peut aussi s’en servir si les données changent au fil du temps et ne sont pas

9
structurées. Elles conviennent enfin quand le volume de données augmente en continu et
que le scaling régulier de la base de données est nécessaire pour les prendre en charge.

5. Faire le POC du système

Dans le prosit qui nous a été donné d’analyser, la préoccupation première était d’optimiser la
base de données. Afin d’apporter un élément de réponse à cette problématique, nous nous
sommes servis des différentes ressources données lors dans le prosit, de nos recherches
personnelles et des notions acquises durant la corbeille d’exercices et le workshop. Ainsi nous
avons au travers de ces études pu ressortir ladite solution qui sera présentée ci-après.
Afin d’optimiser la base de données et ainsi pallier au problème de lenteur observé dans
l’analyse du traffic des sites de e-commerce, plusieurs méthodes sont possibles :
• Utiliser un système de Load-balancing (ou équilibreur de charges) : il s’agit ici de mettre
en place un système qui selon un algorithme de répartiion utilisé nous permettra d’équilibrer les
charges de travail d’un serveur soit en envoyant une moitié des requêtes entrantes vers d’autres
serveurs en attente ou en envoyant lesdites requêtes vers d’autres serveurs en cas de congestion
au niveau du principal.
• Migrer vers une base de données non relationnelle : cette méthode consiste à migrer la
plupart voire la totalité des données présentes dans la base de données relationnelle dans une
base de données non relationnelle ce qui permettrait un accès beaucoup plus rapide à cette
dernière.
Pour davantage appuyer les méthodes mentionnées ci-dessus, un proof of concept (POC) a été
réalisé :

VII. Validation des hypothèses

Par rapport au Prosit aller il était question pour nous de :


 Etudier le théorème CAP
 Etudier les méthodes d’optimisation de BD
 Etudier les systèmes redondants
 Etudier le POC
 Etudier les types de BD
 Etudier les bases de données NoSQL

1
0
VIII. Conclusion

Par rapport au Prosit allé il était question pour nous de :

o Connaitre plus de 3 (redis, mongoDB, couchdb, cassandra, HBase, Big


Table, ….)
o Savoir installer et configurer MongoDB et CouchDB
o Connaître les propriétés ACID et BASE er sait les expliquer
o Connaitre les 3 propriétés et sait les expliquer

IX. Bilan critique du travail effectué

 Individuel : Ce Prosit était très intéressant pour moi il nous


a permis d’apprendre
et de nous exercer sur des notions de base de données NO
SQL.

 Collectif : Ce Prosit a été un peu compliqué mais avec


l’aide de tous les membres
du groupe nous avons pu ressortir une solution à celui-ci.

X. Références des méthodes et outils utilisés

The big NoSQL databases comparison · Kristof Kovacs ✈️

ACID versus BASE for database transactionst

What Is Scalability- - Definition from SearchDataCenter

[Link]

[Link]

1
1

Vous aimerez peut-être aussi