PROPRIETES D’UN SGBD RELATIONNEL
Langage SQL
SQL (Structured Query Language) a รฉtรฉ crรฉรฉ au dรฉbut dans les annรฉes 1970 par la sociรฉtรฉ amรฉricaine IBM (International Business Machines) et sa premiรจre version commercialisable a vu le jour en 1979. Depuis il a รฉtรฉ repris par le groupe ORACLE qui a lancรฉ son premier SGBD Relationnel et a รฉtรฉ normalisรฉ par lโInstitut de normalisation amรฉricaine ANSI en 1986 et ratifiรฉ par lโOrganisation internationale de normalisation ISO en 1987 [5]. Le langage SQL peut รชtre considรฉrรฉ comme le langage dโaccรจs normalisรฉ aux bases de donnรฉes. Il est aujourdโhui supportรฉ par la plupart des produits commerciaux que ce soit par les systรจmes de gestion de bases de donnรฉes micro tel quโAccess ou par les produits plus professionnels tels quโOracle. Il a fait lโobjet de plusieurs normes ANSI/ISO dont la derniรจre est la norme SQL3 qui a รฉtรฉ dรฉfinie en 1999, et qui a subi plusieurs rรฉvisions dont la plus rรฉcente date de 2011.
Le succรจs du langage SQL est dรป essentiellement ร sa simplicitรฉ et au fait quโil sโappuie sur le schรฉma conceptuel pour รฉnoncer des requรชtes en laissant le SGBD responsable de la stratรฉgie dโexรฉcution. SQL est un langage dรฉclaratif qui permet dโinterroger une base de donnรฉes sans se soucier de la reprรฉsentation interne (physique) des donnรฉes, de leur localisation, des chemins dโaccรจs ou des algorithmes nรฉcessaires. A ce titre il sโadresse ร une large communautรฉ dโutilisateurs potentiels (pas seulement des informaticiens) et constitue un des atouts les plus spectaculaires des SGBDR [6]. Nรฉanmoins, le langage SQL ne possรจde pas la puissance dโun langage de programmation : entrรฉes/sorties, instructions conditionnelles, boucles et affectations. Pour certains traitements il est donc nรฉcessaire de coupler le langage SQL avec un langage de programmation plus complet [7].
Bases de donnรฉes NoSQL
Aprรจs avoir exposรฉ les bases de donnรฉes relationnelles dans le chapitre prรฉcรฉdent, et montrer les limites de ce type surtout dans des environnements distribuรฉs et a forte charges, nous รฉtablirons dans ce chapitre un รฉtat de lโart sur les nouveaux systรจmes dites NoSQL. Les systรจmes NoSQL viennent pour garantir certains critรจres que les bases de donnรฉes classiques ont montrรฉ des faiblesses. Nous allons voir leur รฉmergence, leurs diffรฉrents types et nous allons montrer leur utilitรฉ face aux nouvelles exigences ainsi un bref aperรงu des solutions NoSQL disponibles actuellement sur le marchรฉ. Bien que le terme NoSQL soit entendu pour la premiรจre fois en 1988 par Carlo Strozzi qui prรฉsentait รงa comme un modรจle de base de donnรฉe plus lรฉger et sans interface SQL, cโest en 2009, lors de la rencontre NoSQL de San Francisco, quโil prend un essor important. Durant cette confรฉrence, les dรฉveloppeurs ont prรฉsentรฉ des projets tels que Voldemort, Cassandra Project, Dynomite, HBase, Hypertable, CouchDB, MongoDB. Cette confรฉrence รฉtait considรฉrรฉe comme lโinauguration de la communautรฉ des dรฉveloppeurs de logiciel NoSQL [11]. NoSQL est une combinaison de deux mots : No et SQL. Qui pourrait รชtre mal interprรฉtรฉe car lโon pourrait penser que cela signifie la fin du langage SQL et quโon ne devrait donc plus lโutiliser. En fait, le ยซ No ยป est un acronyme qui signifie ยซ Not only ยป, c’est-ร -dire en franรงais ยซ non seulement ยป, cโest donc une maniรจre de dire quโil y a autre chose que les bases de donnรฉes relationnelles [12].
EMERGENCE DU NOSQL
Avec lโaugmentation de la bande passante sur internet, ainsi que la diminution des coรปts des matรฉriels informatiques, de nouvelles possibilitรฉs ont vu le jour dans le domaine de lโinformatique distribuรฉe. Le passage au 21รจme siรจcle par la rรฉvolution du WEB 2.0 a vu le volume de donnรฉes augmenter considรฉrablement. Ces donnรฉes proviennent essentiellement de rรฉseaux sociaux, base de donnรฉes mรฉdicales, indicateurs รฉconomiques, etc. La gestion de ces volumes de donnรฉes est donc devenue un problรจme que les bases de donnรฉes relationnelles nโont plus รฉtรฉ en mesure de gรฉrer. Le NoSQL. regroupe donc de nombreuses bases de donnรฉes qui ne se reposent donc plus sur une logique de reprรฉsentation relationnelle. Il nโest toutefois pas simple de dรฉfinir explicitement ce quโest une base de donnรฉes NoSQL รฉtant donnรฉ quโaucune norme nโa encore รฉtรฉ instaurรฉe. Le besoin fondamental auquel rรฉpond le NoSQL est la performance. Afin de rรฉsoudre les problรจmes liรฉs ร la gestion de grandes quantitรฉs de donnรฉe ยซ Big data ยป, les systรจmes NoSQL sont optimisรฉs pour la scalabilitรฉ horizontale. Un autre aspect important du NoSQL est quโil rรฉpond au thรฉorรจme de CAP qui est plus adaptรฉ pour les systรจmes distribuรฉs. Servant ร manipuler de gros volumes de donnรฉes, il est donc destinรฉ aux grandes entreprises. Dรจs 2010, le NoSQL a commencรฉ ร sโรฉtendre vers les plus petites entreprises nโayant pas les moyens dโacquรฉrir des licences Oracle qui ont donc dรฉveloppรฉ leurs propres SGBD en imitant les produits Google et Amazon [11].
Modรจle de donnรฉes
Le modรจle relationnel est basรฉ est sur un modรจle mathรฉmatique qui est celui de la notion des ensembles. Chaque ensemble ici est reprรฉsentรฉ par une table, et ces attributs sont quant ร eux reprรฉsentรฉs par des colonnes. Lโun des principes fondamentaux est justement cette notion de relation entre tables ร lโaide de cardinalitรฉs, clรฉs primaires et clรฉ รฉtrangรจres, ceci implique au prรฉalable une รฉtude minutieuse sur la modรฉlisation du schรฉma de la base de donnรฉes pour identifier les tables dont le systรจme aura besoin, ses attributs, les relations possibles entre diffรฉrentes tables, etc. Une fois ce modรจle mis en place dans un SGBD Relationnel, il est difficile de changer la structure de celui-ci et ceci pose par consรฉquent des problรจmes lors de sa rรฉingรฉnierie. Le mouvement NoSQL lui est plus pragmatique, basรฉ sur des besoins de stockage de donnรฉes ainsi quโune liaison plus forte avec les diffรฉrents langages clients. La plupart des moteurs de base de donnรฉes NoSQL nโutilisent pas de schรฉmas prรฉdรฉfinis ร lโavance, dโoรน lโappellation ยซ schema-less ยป, ce qui signifie sans schรฉma. Ainsi le moteur de la base de donnรฉes nโeffectue pas de vรฉrification et nโimpose pas de contrainte de schรฉma, les donnรฉes รฉtant organisรฉes du cotรฉ code de client. Toutefois le principe ยซ schema-less ยป est thรฉorique et ne se vรฉrifie pas entiรจrement en pratique. Le maintien dโune structure de donnรฉes homogรจnes est important, pour des questions dโindexation, de recherche par critรจre ou tout simplement pour des raisons de logique.
Gestion de la valeur NULL
En SQL, lors de la dรฉfinition dโune table, il est possible de dรฉcider si un attribut peut contenir une valeur ou non lors de lโenregistrement dโun tuple en dรฉfinissant la colonne ร ยซNullยป ou ยซNot Nullยป. Ceci est utile pour contraindre lโutilisateur ร renseigner sur certains attributs que lโadministrateur de la base de donnรฉes considรจre comme indispensables. Cela dit, dรป au fait de sa reprรฉsentation en deux dimensions (ligne, colonne) et de sa rigiditรฉ dans sa structure, il est indispensable de signaler lโabsence de valeur ร lโaide dโun marqueur Null, ce qui coรปte en espace mรฉmoire. Un autre souci du Null est sa gestion dans le langage SQL. Etant donnรฉ que le Null nโest pas une valeur, il ne peut donc pas รชtre comparable. En voici une illustration avec la clause ยซWHEREยป : Lโexemple ci-dessus dรฉmontre quโil faut explicitement citer la valeur Null dans la requรชte. En effet, le test sur une valeur Null ne retourne pas TRUE ou FALSE mais la valeur UNKNOW. Dans nos 2 premiers tests il va donc sรฉlectionner les produits qui rรฉpondront TRUE ร leur requรชte respective. Dans le troisiรจme test il faut explicitement signaler une valeur Null possible pour que la valeur Null soit prise en considรฉration. Dans des bases de donnรฉes NoSQL il nโy a pas une gestion spรฉcifique du Null, รฉtant donnรฉ que dans des bases de type document ou clรฉ-valeur la notion de schรฉma nโexiste pas, si lโon veut exprimer quโun attribut nโa pas de valeur il suffit de ne pas le mettre. Mรชme chose dans les bases de type colonne, les colonnes รฉtant dynamiques, elles ne seront prรฉsentes quโen cas de nรฉcessitรฉ.
Bases de donnรฉes orientรฉes colonnes
Les bases de donnรฉes orientรฉes colonnes ont รฉtรฉ conรงues par les gรฉants du web afin de faire face ร la gestion et au traitement de gros volumes de donnรฉes sโamplifiant rapidement de jours en jours. Elles intรจgrent souvent un systรจme de requรชtes minimalistes proche du SQL. Bien quโelles soient abondamment utilisรฉes, il nโexiste pas encore de mรฉthode officielle ni de rรจgles dรฉfinies pour quโune base de donnรฉes orientรฉe colonnes soit qualifiรฉe de qualitรฉ ou non. Les bases de donnรฉes orientรฉes colonnes ne diffรจrent pas beaucoup des bases SQL classique du point de vue architectural. La principale diffรฉrence est la faรงon dont les donnรฉes sont stockรฉes en mรฉmoire : dans une base de donnรฉes relationnelles les donnรฉes sont stockรฉes par ligne, de ce fait une requรชte portant sur peu de lignes mais beaucoup de colonnes sera rapide car le systรจme nโaura pas ร beaucoup se dรฉplacer en mรฉmoire, alors que dans une base orientรฉe colonnes les donnรฉes sont stockรฉes par colonnes, de ce fait le systรจme sera beaucoup plus rapide de parcourir les lignes dโune table. Concrรจtement cela signifie que, contrairement aux bases orientรฉes lignes, les utilisateurs qui souhaitent des informations prรฉcises nโauront pas ร sโencombrer des informations inutiles des autres colonnes. En effet les bases orientรฉes lignes se doivent de lire entiรจrement les lignes avant de sรฉlectionner les colonnes dรฉsirรฉes par la requรชte.
Ce type de structure permet dโรชtre plus รฉvolutif et flexible ; cela vient du fait quโon peut ajouter ร tout moment une colonne ou une super-colonne (une super-colonne est une colonne contenant dโautres colonnes) ร nโimporte quelle famille de colonnes. Autrement dit, et contrairement ร une base de donnรฉes relationnelle ou les colonnes sont statiques et prรฉsentes pour chaque ligne, celles des bases de donnรฉes orientรฉe colonnes sont dite dynamiques et prรฉsentes donc uniquement en cas de nรฉcessitรฉ. De plus le stockage dโun ยซ Null ยป est inexistant. Prenons lโexemple de lโenregistrement dโun client nรฉcessitant son nom, prรฉnom et adresse. Dans une base de donnรฉes relationnelle il faut donc au prรฉalable crรฉer le schรฉma (la table) qui permettra de stocker ces informations. Si un client nโa pas dโadresse, la rigiditรฉ du modรจle relationnel nรฉcessite un marqueur Null, signifiant une absence de valeur qui coรปtera toutefois de la place en mรฉmoire. Dans une base de donnรฉes orientรฉe colonne, la colonne adresse nโexistera tout simplement pas [16].
|
Table des matiรจres
INTRODUCTION GENERALE
CHAPITRE 1 : Bases de donnรฉes relationnelles et leurs limites
1.INTRODUCTION
2.DEFINITIONS ET CONCEPTS DE BASES
2.1 Dรฉfinition dโune base de donnรฉes
2.2 Dรฉfinition dโun systรจme de gestion de base de donnรฉes
3.OBJECTIFS DES SGBD
3.1 Administration facilitรฉe des donnรฉes
3.2 Efficacitรฉ des accรจs aux donnรฉes โฆ
3.3 Redondance contrรดlรฉe des donnรฉes
3.4 Cohรฉrence des donnรฉes
3.5 Partage des donnรฉes
3.6 Sรฉcuritรฉ des donnรฉes
4.PROPRIETES D’UN SGBD RELATIONNEL
5.CONCEPTS PRINCIPAUX
5.1 Table et Attribut
5.2 Clรฉs
5.2.1 Clรฉs primaires
5.2.2 Clรฉs รฉtrangรจres
6.LANGAGES DE MANIPULATION DES DONNEES RELATIONNELLES
6.1 Introduction
6.2 Langage SQL
6.3 SQL au sein d’un SGBD
7.PROPRIETES ACID
8.LIMITES DE SGBD RELATIONNELS
8.1 Modรฉlisation des entitรฉs rรฉelles
8.2 Surcharge sรฉmantique
8.3 Contraintes dโintรฉgritรฉ
8.4 Langage de manipulation
8.5 Scalabilitรฉ limitรฉe
8.6 Propriรฉtรฉs ACID en milieu distribue
8.7 Limites face aux usages
CONCLUSION
CHAPITRE 2 : Bases de donnรฉes NoSQL
1.INTRODUCTION
2.HISTORIQUE
3.EMERGENCE DU NOSQL
4.DIFFERENCES ENTRE LE NOSQL ET LE RELATIONNEL
4.1 Caractรฉristiques du modรจle relationnel
4.1.1 Modรจle de donnรฉes
4.1.2 Gestion de la valeur NULL
4.2 Transactions
4.2.1 Scalabilitรฉ
4.3 Cohรฉrence contre disponibilitรฉ
5.THEOREME DE CAP
6.PROPRIETES B.A.S.E
7.TYPES DE BASES DE DONNEES NOSQL
7.1 Bases de donnรฉes clรฉ-valeur
7.2 Bases de donnรฉes orientรฉes colonnes
7.3 Bases orientรฉes document
7.4 Bases orientรฉes graphes
8.AVANTAGES DU NoSQL
8.1 Scalabilitรฉ horizontale (รฉlasticitรฉ, sharding automatique)
8.2 Solution รฉconomique
8.3 Gestion de gros volume de donnรฉes
8.4 Administrateur de bases de donnรฉes moins indispensable
8.5 Les schรฉmas de la base ne sont pas figรฉs ยซย shรฉmalessย ยป
8.6 Gestion de donnรฉes hรฉtรฉrogรจnes
8.7 Fiabilitรฉ lors du stockage de donnรฉes dites critiques
8.8 Haute disponibilitรฉ
RAISONS DโADOPTATION DโUNE SOLUTION NOSQL
CONCLUSION
CHAPITRE 3 : Rรฉalisation
PARTIE 1 : Domaine dโรฉtude et choix du systรจme NoSQL
1.INTRODUCTION
2.DOMAINE DโETUDE
2.1 Daรฏra de Sebdou
2.2 Service des passeports biomรฉtrique
2.2.1 Organisation de Service
2.2.2 Principaux objectifs de la plateforme technique dรฉployรฉe au niveau de la daรฏra
2.3 Motivation du choix dโun tel domaine
3.JUSTIFICATION DU CHOIX DE MONGODB
3.1 Convenance des types des systรจmes NoSQL au projet
3.1.1 bases clรฉ/valeur
3.1.2 Bases de donnรฉes orientรฉes document
3.1.3 Bases en colonnes
3.1.4 Bases orientรฉes graphes
3.2 Critรจre favorisant la consistance dans le thรฉorรจme de CAP
3.3 Critรจre de dernier classement annuel des SGBD
3.4 Synthรจse
4.MongoDB
4.1 Introduction
4.2 Reprรฉsentation de Documents
4.3 Collections de documents
4.4 Requรชtes avec Mongodb
4.4.1 Opรฉrations CRUD
4.4.2 Critรจres de recherche
4.4.3 Projections
4.4.4 Jointures
4.5 Scalabilitรฉ
4.5.1 Dรฉfinition
4.6 Rรฉplication et reprise sur panne
4.6.1 Intรฉrรชt de la rรฉplication
4.6.2 Techniques de rรฉplication
4.7 Cohรฉrence des donnรฉes
4.8 Rรฉplication dans MongoDB
4.8.1 Replica set
4.9 Partitionnement
4.9.1 Principes gรฉnรฉraux
4.9.2 Clรฉ de partitionnement
4.9.3 Structures
PARTIE 2 : Implรฉmentation et mise en oeuvre de la migration
1.TABLES CENTRALES ORACLE DE LA BIOMETRIE
2.ENVIRONNEMENT DE TRAVAIL
2.1 Environnement hard
2.2 Langage de programmation
2.3 Outil de dรฉveloppement
2.4 Systรจme de gestion de base de donnรฉes
2.5 Format de donnรฉes communiquรฉes
3.INSTALLATION ET CONFIGURATION DE MONGODB
3.1. Prรฉparation et installation
3.2. Lancement des services MongoDB sous Ubuntu 16.04
3.3. Lancement des services MongoDB sous Windows 7
4.INSTALLATION ET CONFIGURATION DE L’ENVIRONNEMENT DISTRIBUE
4.1. Configuration des Shards MongoDB
4.2 Configuration du Serveur de Config MongoDB
4.3. Configuration du Serveur Mongos
5.Migration des donnรฉes Oracle vers mongodb
5.1. Gรฉnรฉration de fichier JSON (Application oracle-json)
5.2. Import des donnรฉes JSON vers MongoDB
6.Exploitation dans lโenvironnement distribuรฉ
6.1. Test et exploitation du Sharding
6.2 Rรฉsultats de comparaison performance
CONCLUSION
CONCLUSION GENERALE
REFERENCES BIBLIOGRAPHIQUES
Liste des Figures
Liste des Tableaux
Tรฉlรฉcharger le rapport complet