Base de données relationnelles d
Base de données relationnelles d
Base de données relationnelles d
Première Licence
Le client serveur est avant tout un mode de dialogue entre deux processus. Le
premier appelé client demande l’exécution de services au second appelé serveur. Le
serveur accomplit les services et envoi en retour des réponses.
En général, les serveurs sont des ordinateurs dédiés au logiciel serveur qu'ils abritent, et
dotés de capacités supérieures à celles des ordinateurs personnels en termes de puissance
de calcul, d'entrées-sorties et de connexions réseau.
Les clients sont souvent des ordinateurs personnels ou des appareils individuels
(téléphone, tablette), mais pas systématiquement. Un serveur peut répondre aux
requêtes d'un grand nombre de clients.
✓ Le client émet une requête vers le serveur grâce à son adresse et à son port, qui
désigne un service particulier du serveur
✓ Le serveur reçoit la demande et répond à l'aide de l'adresse de la machine client
(et de son port)
Jean François Pillou, Tout sur les systèmes d'information, Dunod, Paris, 1996
1
Il existe une grande variété de logiciels serveurs et de logiciels clients en fonction des
besoins à servir : un serveur web publie des pages web demandées par des navigateurs
web ; un serveur de messagerie électronique envoie des mails à des clients de
messagerie ; un serveur de fichiers permet de stocker et consulter des fichiers sur le
réseau ; un serveur de données à communiquer des données stockées dans une base de
données, etc.
✓ La consultation de pages sur un site web fonctionne sur une architecture client-
serveur. Un internaute connecté au réseau via son ordinateur et un navigateur
web est le client, le serveur est constitué par le ou les ordinateurs contenant les
applications qui délivrent les pages demandées. Dans ce cas, c'est le protocole de
communication HTTP ou XML socket qui est utilisé.
✓ Les courriels sont envoyés et reçus par des clients et gérés par un serveur de
messagerie. Les protocoles utilisés sont le SMTP, et le POP ou l'IMAP.
a. Avantages
✓ Des ressources centralisées : étant donné que le serveur est au centre du réseau,
il peut gérer des ressources communes à tous les utilisateurs, comme par exemple
une base de données centralisée, afin d'éviter les problèmes de redondance et de
contradiction
✓ Une meilleure sécurité : Toutes les données sont centralisées sur un seul serveur,
ce qui simplifie les contrôles de sécurité, l'administration, la mise à jour des
données et des logiciels.
✓ Une administration au niveau serveur : les clients ayant peu d'importance dans
ce modèle, ils ont moins besoin d'être administrés
✓ Un réseau évolutif : grâce à cette architecture ont peu supprimer ou rajouter des
clients sans perturber le fonctionnement du réseau et sans modifications majeures
✓ La complexité du traitement et la puissance de calculs sont à la charge du ou des
serveurs, les utilisateurs utilisant simplement un client léger sur un ordinateur
terminal qui peut être simplifié au maximum.
✓ Recherche d'informations : les serveurs étant centralisés, cette architecture est
particulièrement adaptée et véloce pour retrouver et comparer de vaste quantité
d'information (moteur de recherche sur le Web).
b. Inconvénients
Le poste client accède à une application située sur un ordinateur dit « serveur »
via une interface et un navigateur Web. L'application fonctionne entièrement sur le
serveur, le poste client reçoit la réponse « toute faite » à la demande (requête) qu'il a
formulée.
Selon la nature des services accomplis par le serveur pour un client, différents
types de client-serveur ont été distingués.
Selon la répartition des fonctions de présentation graphique (affichage et saisie de
données à partir d'icônes graphiques par exemple), de gestion de données (accès aux
fichiers ou aux bases de données), d'exécution de code applicatif (calculs de
l'application), on distingue les types de client-serveur décrits ci-dessous.
Remarque
Étant donné l'emploi massif du terme d'architecture à 3 niveaux, celui-ci peut parfois
désigner aussi les architectures suivantes :
L'architecture à deux niveaux est donc une architecture client/serveur dans laquelle le
serveur est polyvalent, c'est-à-dire qu'il est capable de fournir directement l'ensemble
des ressources demandées par le client.
Dans l'architecture à trois niveaux par contre, les applications au niveau serveur sont
délocalisées, c'est-à-dire que chaque serveur est spécialisé dans une tâche (serveur web
et serveur de base de données par exemple). Ainsi, l'architecture à trois niveaux permet
:
1.8.1. Définition
Le middleware est ce logiciel du milieu qui assure les dialogues entre clients et
serveurs souvent hétérogènes. Le terme middleware vient de l’anglais middle (du milieu)
et software (logiciel), il désigne un ensemble de services logiciels nécessaires servant
d’intermédiaire entre les logiciels pour permettre et organiser la communication entre
les applications réparties ; ou un ensemble de services logiciels construits au-dessus d’un
protocole de transport afin de permettre l’échange de requêtes et des réponses associées
entre client et serveur d’une application de manière transparente.
Exemple de middlewares
Les middlewares proposés par les fournisseurs de SGBD sont très performants et
permettent de tirer profit de l'ensemble des fonctionnalités du serveur de données pour
lequel ils ont été conçus. Par contre, ils ne permettent pas, le plus souvent, l'accès à
d'autres sources de données.
1.8.2. Rôle
1.9. Application : Création d’une application Client Serveur pas à pas avec C#
Dans cette partie, nous allons essayer de créer une application client-serveur avec C#.
Nous allons tenter d’établir une connexion à une base de données Access distante.
L’objectif de cette démarche est simplement d’essayer d’accéder à une base de données
distante via le réseau.
Principe
Nous aurons besoins d’au moins deux machines :
Choisir « Propriétés ». Sur la fenêtre qui s’ouvre, aller sur l’onglet « Partager »
Cocher la case « Partager ce dossier » pour que les différentes zones de textes soient
activées. Cliquer ensuite sur le bouton « Autorisation »
Cocher les cases : « Autoriser Contrôle total » et « Autoriser Modifier », puis « Appliquer »
et « OK » Et le répertoire qui contient votre base de données est partagé.
Puis, copier votre chemin d’accès à la base de données via le réseau :
Le code source de la méthode qui permet d’envoyer les données dans la BDD
...
//Méthode pour enregistrer
public void enregistrer()
{
//création d'un objet du type de la classe classlogin
classprod nouveauproduit = new classprod();
//Transfert des données du formulaire vers la classe
nouveauproduit.Id_Produit = int.Parse(txtcode.Text);
nouveauproduit.Libelle_Produit = txtdesign.Text;
nouveauproduit.PU = double.Parse(txtpu.Text);
nouveauproduit.Quantite_Stock = int.Parse(txtqte.Text);
// chaine de connexion
...
2.1. Définition
Une base de données repartie est un ensemble de bases de données gérées par
de sites différents et apparaissant à l’utilisateur comme une base unique.
Une base de données repartie peut aussi être vue comme une collection de bases de
données logiquement reliées, distribuées sur un réseau.
Une base de données répartie est un assemble de différente base de données mise en
relation les unes avec les autres à travers un réseau.
Un SGBD réparti doit rendre la répartition des bases des données transparentes aux
utilisateurs. La base de données étant répartie, il faut également répartir certaines
fonctionnalités du SGBD.
Nous précisons maintenant les composants essentiels nécessaires pour gérer des
données reparties. Le système de gestion de bases de données reparti (SGBDR) cache
aux applications l’existence de multiples bases. Il fournit aux clients SGBDR l’illusion que
l’ensemble des bases gérées par les serveurs du SGBDR est intégré en une base unique.
Un client de SGBDR est une application qui accède aux informations distribuées
par les interfaces du SGBDR.
Un serveur de SGBDR est un SGBD gérant une base de données locale intégrée
dans une base de données répartie.
Au-delà des notions de client de SGBDR et de serveur, un calculateur gérant la base est
appelé nœud ou site. Un site peut être à la fois client et serveur du SGBDR : il exécute
l’application et gère une partie de la base. C’est sans doute le cas le plus fréquent.
Nœud ou site de SGBDR est un calculateur dans le réseau participant à la gestion d’une
base de données repartie.
En résumé, un SGBDR est donc un ensemble de logiciels systèmes gérant des données
reparties sur un ensemble de sites intégrant des modules clients et des modules serveurs.
Nous précisons les objectifs des SGBDR qui se résument aux aspects clés suivants :
c. Meilleure disponibilité
Une des justifications essentielles d’un SGBDR est sans doute l’apport en matière de
disponibilité des données. Tout d’abord, la répartition permet de ne plus dépendre d’un
site central unique. Surtout, elle permet de gérer des copies, de se replier sur une copie
lorsqu’une autre est indisponible (site en panne), et même mettre à jour de manière
indépendante les copies.
Les copies deviennent alors des réplicas qui peuvent évoluer indépendamment pour
converger ultérieurement. Cette fonctionnalité appelée réplication.
Assurer une meilleure disponibilité des données, c’est aussi garantir l’atomicité des
transactions. Une transaction est en effet un ensemble de requêtes, dont certaines sont
des mises à jour. Ces requêtes plus particulièrement les mises à jour doivent être toutes
correctement exécutées ou aucune ne doit l’être. Dans le cas contraire, la base de
données repartie serait seulement partiellement mise à jour.
d. Autonomie locale
Un autre objectif des SGBDR est d’éviter la nécessité d’une administration centralisée
des bases. L’autonomie locale vise à garder une administration locale séparée et
indépendante pour chaque serveur participant à la BD répartie. Ainsi, les reprises après
panne doivent être accomplies localement et ne pas impacter les autres sites. Les mises
à niveau de logiciel sur un site doivent être possible sans impacter les autres les autres
sites. Bien que chaque base puisse travailler avec les autres, les gestions de schéma
doivent rester indépendantes.
Par exemple, une banque peut posséder des agences à Lubumbashi et à Kananga. Dans
une base de données centralisée, le siège social de la banque gérerait tous les comptes
des clients et les agences devraient communiquer avec le siège social pour avoir accès
aux données.
Dans une base de données réparties, les informations sur les comptes sont distribuées
dans les agences celle-ci sont interconnectées (entièrement ou partiellement) afin qu’elles
puissent avoir accès aux données externes. Cependant, la répartition de la base de
données bancaire est invisible aux agences en tant qu’utilisateur, et la seule conséquence
directe pour elle est que l’accès à certaines données est beaucoup plus rapide.
2.2.3. Quelques SGBDR
Il existe plusieurs systèmes de gestion de bases de données répartie, parmi lesquels nous
pouvons citer :
✓ SQL Serveur
✓ Oracle
✓ Etc.
BDR
Décomposition
Intégration
L’approche se base sur le fait que la répartition est déjà faite, mais il faut réussir
à intégrer les différentes BDs existantes en une seule BD globale. En d’autres termes, les
schémas conceptuels locaux existent et il faut réussir à les unifier dans un s chéma
conceptuel global.
2.4. Fragmentation
a. Fragmentation horizontale
C’est la répartition des occurrence ou enregistrements des tables. Les occurrences d'une
même classe peuvent être réparties dans des fragments différents.
- L'opérateur de partitionnement est la sélection (σ)
- L'opérateur de recomposition est l'union (∪)
b. Fragmentation verticale
C’est la répartition des attributs ou champs des tables. Toutes les valeurs des
occurrences pour un même attribut se trouvent dans le même fragment. Une
fragmentation verticale est utile pour distribuer les parties des données sur le site où
chacune de ces parties est utilisée.
- L'opérateur de partitionnement est la projection (π)
- L'opérateur de recomposition est la jointure (*)
c. Fragmentation hybride
2.5.1. Définition
Une transaction est un fragment de programme dont l’exécution fait passer une BD
d’un état cohérent à un autre état cohérent.
Une transaction est une suite d’événements dont chacun peut être :
✓ la lecture ou l’écriture d’une donnée,
✓ le verrouillage ou le déverrouillage d’une donnée,
✓ le démarrage ou l’arrêt de la transaction.
Une transaction désigne un ensemble de requête (au moins une) appliqué sur la base de
données et respectant les propriétés ACID (atomicité, cohérence, isolation, durabilité).
2.5.2. Evénements d’une transaction
Exemple de transaction
Une transaction est composée d’une suite de requêtes dépendantes de la base qui
doivent vérifier les propriétés d’atomicité, de cohérence, d’isolation et de durabilité,
résumées par le vocable ACID.
a. Atomicité
Une transaction doit effectuer toutes ses mises à jour ou ne rien faire du tout. En cas
d’échec, une transaction doit annuler toutes les modifications qu’elle a engagées.
✓ Soit toutes les modifications effectuées par une transaction sont enregistrées dans
la BD, soit aucune ne l’est.
✓ Si une transaction est confirmée (commit) toutes les modifications qu’elle a
effectuées sont enregistrées dans la BD et rendues visibles aux autres utilisateurs.
✓ Si une transaction est interrompue alors aucune de ces modifications n’est
enregistrée dans la BD.
Cette propriété signifie qu’une transaction est traitée comme une seule opération.
Toutes les actions d’une transaction sont donc menées à bien ou aucune d’entre elles.
C’est le tout ou rien.
b. Cohérence
Une transaction fait passer une BD d’un état cohérent à un autre état cohérent. Un état
cohérent est un état dans lequel les contraintes d’intégrité sont vérifiées.
En cas d’échec, l’état cohérent initial doit être restauré. La cohérence d’une transaction
est simplement sa correction. En d’autre terme, une transaction est un programme
correct qui amène la base de données d’un état cohérent à un autre état cohérent.
c. Isolation
Une transaction se déroule sans être perturbée par les transactions concurrentes :
tout se passe comme si elle se déroulait seule.
Les résultats d’une transaction ne doivent être visibles aux autres transactions qu’une fois
la transaction validée. Ceci permet d’éviter les interférences avec les autres transactions.
L’isolation est la propriété qui impose à chaque transaction en train de s’exécuter de ne
donc pas révéler ses résultats à d’autres transactions concurrentes (simultanées) avant
d’avoir d’effectuer son commit.
d. Durabilité
Une fois qu’une transaction a été confirmée le SGBD garantit qu’aucune modification
qu’elle a effectuée ne sera perdue quelque soient les accidents qui surviendront :
interruption, pannes du système d’exploitation, « crash » de disque, etc.
a. Principe
✓ La phase 1 réalise la préparation de l’écriture des résultats des mises à jour dans
la BD et la centralisation du contrôle.
✓ La phase 2, réalisée seulement en cas de succès de phase 1 intègre effectivement
les résultats des mises à jour dans la BD répartie.
Le contrôle du système réparti est centralisé sous la direction d’un site appelé
coordinateur, les autres étant des participants.
La fin d’une transaction est définie par l’un des ordres ci-dessous : COMMIT ou
ROLLBACK.
On va essayer dans cette section de créer une base de données sur SQL Server 2008
à l'aide de SQL Server Management, et on va introduire des données dans cette base.
Ce document va permettre aux utilisateurs de facilité le travail sur SQL Server et leur
montre comment exploité les principales fonctionnalités de l'outil SQL Server
Management.
Cette base comme le montre l'exemple comporte 3 tables, la table film, la table
réalisateur et la table genre (fig-1).
Fig-1
• Chaque réalisateur doit avoir un identifiant en plus de son nom et son prénom.
• On doit spécifier le genre du film et lui donner un identifiant.
• Pour chaque film on doit donner un identifiant, et un titre. Le genre et le
réalisateur du film doivent être indiqués dans la table « film ».
• Chaque film doit être réalisé par un seul réalisateur et un réalisateur peut réaliser
plusieurs films.
• Chaque film à un seul genre et un seul genre peut être attribué à plusieurs films.
Fig-2
Une nouvelle fenêtre s'ouvre, elle représente l'interface initiale de l'outil (fig-3).
Fig-3
On voit que cette fenêtre est devisée en deux parties, la partie gauche ou la fenêtre «
Explorer » qui nous affiche tous les objets du serveur et nous permet de naviguer entre
ces différents composants, la partie droite est une autre fenêtre qui nous montre les
données et les informations sous forme de sommaire.
Pour créer notre table on doit cliquer avec le bouton droit sur « Databases » dans la
fenêtre « Explorer », puis on clique sur « New Database » (fig-4).
Fig-4
Dans la nouvelle fenêtre qui s'affiche, on va donner le nom « FILM » à notre base puis
on clique sur « Ok » (fig-5).
Fig-5
On peut voir maintenant à partir de la fenêtre « Explorer » que notre base est créée (fig-
6).
Fig-6
On sait que notre base doit contenir 3 tables, on va commencer de les créer maintenant.
Toujours dans la fenêtre « Explorer » on clique avec le bouton droit sur « Tables » dans
notre base « FILM», puis on clique sur « New Table » (fig-7).
Fig-7
A droite et à la même place de la fenêtre « Sommaire » une nouvelle fenêtre s'ouvre,
dans laquelle on doit saisir toutes les colonnes de la table (fig-8).
Fig-8
Après avoir saisie tous ces données on ferme cette fenêtre. Une nouvelle fenêtre s'ouvre
et nous demande si on veut enregistrer les changements effectués, on clique alors sur «
Yes » pour confirmer (fig-9).
Fig-9
Une autre fenêtre s'ouvre, dans laquelle on va saisir le nom de la table désirée puis on
clique sur « Ok » (fig-10).
Fig-10
On refait les mêmes étapes avec les tables « Réalisateur » et « Genre » comme le montre
les deux figures ci-dessous (fig-11) et (fig-12).
Fig-11
Fig-12
Nos trois tables sont maintenant créées, pour vérifier que la création est bien réalisée on
peut naviguer dans la fenêtre « Explorer et voir si nos trois tables existent vraiment (fig-
13).
Fig-13
On voit bien que les trois tables sont créées sur notre base.
✓ Clés primaires
Notre base est formée de 3 tables chacune des tables doit contenir une clé primaire.
Dans l'étape suivante on va créer ces clés.
Commençant par la table « Film », cette table a comme clé primaire la colonne « Id film
».
A partir de la fenêtre « Explorer » on va aller sur la colonne « Id film », un clic droit puis
on clique sur « Modify » (fig-14).
Fig-14
Cette table va s'afficher dans la fenêtre à droite, on sélectionne la colonne qu'on veut
définir comme clé primaire puis dans la barre en haut on doit cliquer sur .
On remarque qu'une petite clé jaune s'affiche à coté de cette colonne (fig-15).
Fig-15
Lorsqu'on ferme cette fenêtre une autre fenêtre s'affiche pour vérifier si on veut
enregistrer les changements, alors on clique sur « Yes » (fig-16).
Fig-16
Dans la fenêtre « Explorer » on peut vérifier si la création da la clé primaire est réalisée
correctement ou non (fig-17).
Fig-18
On sait que notre base contient 3 tables, mais uniquement la table « Film » contient des
clés étrangères.
On va voir maintenant comment créer une clé étrangère dans SQL Server.
On commence par un clic droit sur «Keys» dans la fenêtre « Explorer » puis on clique sur
«New Foreign Key » (fig-20).
Fig-20
Dans la nouvelle fenêtre qui s'ouvre, on va commencer par donner un nom à cette clé
étrangère « FK_Film_Réalisateur » (fig-21).
Fig-21
Apres on clique sur « Tables And Columns Specification », et une nouvelle fenêtre s'ouvre
dans laquelle on va définir la clé étrangère et la clé primaire puis on clique sur « OK »
(fig-22).
Fig-22
Lorsqu'on revient à la fenêtre suivante on peut modifier et mettre « en cascade »
pour les relations entre la clé étrangère et la clé primaire pour la suppression et les
mises à jour (fig-23) puis on clique sur « Close ».
Fig-23
On ferme cette table un message pour l'enregistrement s'affiche on clique alors sur « Yes
» et une autre fenêtre s'affiche pour nous informer qu'il a eu des changements dans deux
tables de notre base on clique sur « Yes » pour enregistrer (fig-24).
Fig-24
On peut vérifier maintenant, dans la fenêtre « Explorer », l'existence de notre clé
étrangère (fig-25).
Fig-25
On refait le même travail pour créer notre deuxième clé étrangère la clé « Id_Film_Genre
».
Notre table doit contenir à la fin une clé primaire et deux clés étrangères (fig-26).
Fig-26
On peut dire maintenant que notre base est complète et il ne reste qu'à saisir des
données dans cette base.
Un clic droit sur la table « Genre » puis on clique sur « Edit Top 200 Rows » (fig-27).
Fig-27
La table va s'ouvrir à droite et on saisi les données comme dans l'exemple ci-dessous (fig-
28).
Fig-28
On remarque que notre base va comporter 4 genres de film à savoir : Action, Comédie,
Romantique et dramatique.
Pour cela on va refaire le même travail et on saisi les données pour que la table se
présente de la façon suivante (fig-29).
Donc on refait les mêmes étapes pour saisir des données dans la table « Film » pour
qu'elle s'affiche de la façon suivante (fig-30).
Fig-30
d. Exemple de requêtes
On va voir maintenant comment on peut utiliser les requêtes sur SQL Server et exécuter
quelques exemples de ces requêtes.
On va essayer d'afficher les films réalisés par l'un des réalisateurs de notre table.
Fig-31
En exécutant le résultat va s'affiché en bas (fig-32).
Fig-32
Maintenant on connait l'identifiant de ce réalisateur on peut alors chercher tous ses films
dans la table « Film » par la requête suivante « SELECT * from [FILM].[dbo].[Film]
WHERE [Id_réalisateur] = 2 » « fig-33 ».
Fig-34
✓ DCL : Data Control Language, soit langage de contrôle d’accès . Cette catégorie
d’instructions nous permet de gérer les accès (autorisations) aux données, aux
objets SQL, aux transactions et aux configurations générales de la base.
Ces trois catégories combinées permettent que le langage T-SQL prenne en compte des
fonctionnalités algorithmiques, et admette la programmabilité. Le T-SQL est non
seulement un langage de requêtage, mais aussi un vrai langage de programmation à part
entière. Sa capacité à écrire des procédures stockées et des déclencheurs (Triggers), lui
permet d’être utilisé dans un environnement client de type .NET, au travers d’une
application en C# ou en VB.NET.
2.7.2. Quelques instructions DML
Pour toutes les instructions du DML, il existe dans SQL Server un outil simple pour
retrouver la syntaxe voulue rapidement (Pour des instructions simples, telle le SELECT,
UPDATE…). La démarche est simple. Via le menu contextuel d’une table, sélectionnez « Générer
un script de la table en tant que… ». Il nous est alors proposé de sélectionner l’action que nous
voulons accomplir : SELECT, INSERT, UPDATE ou DELETE. Cette action peut aussi être réalisée
sur d’autres objets SQL de la base de données.
Pour préciser les colonnes pour lesquelles nous allons ajouter des données, il est
nécessaire de préciser le nom des colonnes, après l’instruction INSERT INTO.
Le mot clé VALUES nous permet de fournir des valeurs aux champs. Il est impératif que
les valeurs soient dans le même ordre que celui des colonnes, tout d’abord pour la
cohérence des données, mais aussi pour respecter la compatibilité des données avec le
type que vous avez assigné à votre table au moment de sa création.
Dans le cas où certaines de vos colonnes acceptent des valeurs NULL, il existe deux
méthodes pour obtenir cette valeur. La première, est d’omettre le nom de la colonne et
la valeur correspondante dans l’instruction. La seconde vise à laisser la colonne dans la
description, mais à préciser le mot clé NULL dans la clause VALUES.
Pour des chaines de caractères, il faut placer celles-ci entre simples cotes.
Dans le cas d’un champ de type identité (possédant une incrémentation automatique
grâce à la contrainte IDENTITY), il n’est pas nécessaire de spécifier ni le nom du champ,
ni sa valeur.
C’est à nous de remplacer la partie « Values » par les éléments que nous voulons insérer
dans notre table.
Voici une instruction SQL permettant de modifier le nom de ce client dont le Id-Client
vaut 3 :
a. 3. L’instruction DELETE
Voici une instruction SELECT permettant de lire le Prénom et Numéro de tous les clients
(si notre but avait été de sélectionner toutes les colonnes, au lieu de lister toutes celles -
ci, il est possible d’indiquer que nous les sélectionnons toutes avec le simple caractère «
* ») :
c. La condition WHERE
Il est alors possible d’ajouter des conditions à notre recherche pour l’affiner, au
travers de la clause WHERE. Les restrictions servent à limiter le nombre
d’enregistrements à sélectionner. Les conditions contenues dans le WHERE sont des
expressions booléennes qui peuvent être composées de noms de colonnes, de
constantes, de fonctions, d’opérateurs de comparaison et d’opérateurs logiques.
Prenons un exemple concret :
Cette instruction SELECT sélectionne tous les champs de tous les enregistrements pour
lesquels la colonne Id_Client est égale soit à 1, 2, 3 et 6. On remarque alors que dans
notre code, nous avons utilisé la condition WHERE, une colonne, un opérateur de
comparaison et un opérateur logique.
L’instruction ci-dessus présente l’utilisation des clauses WHERE et BETWEEN, qui permet
de lire tous les enregistrements dont l’identifiant est compris entre 1 et 10 (bornes
incluses).
Une variable est une zone mémoire caractérisée par un type et un nom, et
permettant de stocker une valeur respectant le type. Dans SQL Server, les variables
doivent être obligatoirement déclarées avant d’être utilisée.
L’instruction suivante permet de valoriser cette variable via l’exécution d’une requête
scalaire :
Voici un bloc d'une déclaration simple, somme de deux nombres effectué en Transact
Sql:
Il suffit de faire un clic droit sur votre base de données et choisir « nouvelle requete »
Syntaxe:
Exemple:
c. La boucle WHILE
Syntax:
LOOP
-- Do something here
EXIT WHEN<Condition>;
ENDLOOP ;
Dans la boucle WHILE, vous pouvez utiliser BREAK afin de sortir de la boucle.
Utiliser CONTINUE pour sauter les déclarations dans le bloc WHILE et au-dessous de
lui, afin de continuer une nouvelle boucle.
Exemple :
Les variables peuvent être affectées à la valeur d'une requête. Voici un exemple
illustratif:
L’ajout de tables peut se faire avec du code ou bien, avec l’interface graphique.
Nous allons cette fois ci utiliser du code T-SQL.
Le mot clé CREATE TABLE va bien entendu nous permettre de créer une table dans la
base de données dans laquelle nous nous sommes rendus au préalable.
Après cela, on placera entre parenthèses les colonnes que l’on veut créer, caractérisées
par leur nom et le type de données qu’elles supportent. Il est aussi nécessaire de spécifier,
si la colonne en question supporte ou non la valeur NULL. Lorsque vous aurez spécifié
toutes ces caractéristiques, vous pouvez compiler votre code en appuyant sur F5 ou en
cliquant sur la touche d’exécution du code. Vous aurez un message de validation de
votre requête.
Lors de la création de la table, il est possible de créer les contraintes d’intégrités,
conformément à une base de données relationnelle qui sont les différents types de clés,
mais aussi les contraintes telles que UNIQUE, IDENTITY…
✓ IDENTITY : Ce type de contrainte peut être affectée à une colonne par table, de
type numérique entier. Elle permet d’incrémenter les valeurs d’une colonne, ligne
après ligne. Par défaut, la contrainte IDENTITY part de 1, et a un pas d’incrément
de 1. Il est possible de changer la valeur de départ et le pas d’incrément.
✓ PRIMARY KEY : Cette contrainte permet de définir une clé primaire sur une ou
plusieurs colonnes d’une table. Il ne peut y avoir qu’une seule clé primaire par
table, et la ou les colonnes sur lesquelles elle est définie doivent être de type NOT
NULL. Il est important de noter que lorsque nous créons une clé primaire, un
index unique est créé, on peut donc considérer que les actions disponibles sur les
indexes sont aussi disponibles lors de la création d’une clé primaire.
Lorsqu’une contrainte de ce type est définie, l’intégrité est gérée par un index de
type UNIQUE créé en simultané. La définition d’une contrainte UNIQUE est
simple avec du code T-SQL, puisque c’est de la même manière que nous avons
créé notre clé primaire.
On précise alors que dans cette table Test, grâce à l’instruction DROP TABLE, nous allons
supprimer la table Client dont le schéma est dbo. Après avoir exécuté ce code, on peut
remarquer que la table que nous avons précisée après l’instruction DROP TABLE n’existe
plus.
Une transaction est caractérisée par le mot l’acronyme ACID (Atomic Consistency
Isolation Durability) :
Voir un exemple :
Lorsque vous ajoutez un élève à une classe, vous devez mettre à jour le nombre d'élèves.
Si l'insertion de l'information des élèves échoue, mais le nombre d'élèves est ajouté 1,
intégralité des données est interrompue.
BEGIN
-- Dans cet exemple, les client dont les Id_Client sont = 1, 2 existent
actuemment dans la BD
-- Begin transaction
BEGIN TRAN;
-- Error trapping.
BEGIN TRY
--
IF @@Trancount > 0
PRINT 'Commit Transaction';
COMMIT TRAN;
END TRY
-- If there are errors Catch block will be execute.
BEGIN CATCH
PRINT 'Error: '+ ERROR_MESSAGE();
PRINT 'Error --> Rollback Transaction';
IF @@Trancount > 0
ROLLBACK TRAN;
END CATCH;
END;
Ici, dans notre exemple, nous avons deux transactions imbriquées. Il est très important
de comprendre qu’une transaction est une unité indissociable, et que par conséquent, il
est nécessaire de terminer par un COMMIT ou ROLLBACK, la dernière transaction en
date.
La fermeture des transactions se fait donc celons un modèle LIFO (Last In First Out). La
dernière transaction écrite sera la première à devoir être fermée. Pour revenir à notre
exemple, on peu désormais dire que le nom client égal à Darell Ndaya sera changé par
Darell, du fait du COMMIT TRAN qui termine la transaction 2, alors que Nobla
Tshilumba ne sera pas changé par Gracia, dans transaction1, car celle-ci se termine par
un ROLLBACK TRAN.
3.1. Définitions
La réplication est un Processus qui consiste à copier et à mettre à jour les
objets (tables, information, index, …) entre différents sites qui peuvent être éloigné
géographiquement. Cette mise à jour peut s’enclencher automatiquement ou
manuellement.
Un Réplica ou copie de données est un fragment horizontal ou vertical d’une
table stockée dans une base de données qui est copiée et transféré vers une autre base
de données. L’original est appelé la copie primaire et les copies sont appelées copies
secondaires.
Les applications clientes croient à l’existence d’une seule copie des données qu’ils
manipulent soit « logique » dans le cas d’une vue ou soit physique.
Les techniques de réplication permettent la gestion de copies multiples pouvant diverger
c’est – à – dire présenter des valeurs différentes à un instant donné, mais convergeant
vers les mêmes valeurs à termes. Nous examinons ci – dessous les différentes formes de
réplication possibles et les techniques de gestion de la cohérence des copies associées.
La réplication utilise la technologie de bd distribuées pour partager les données entre
multiples sites mais une bd répliquée et une bd distribuée sont différentes. Pour les bd
distribuées, les données sont disponibles à plusieurs endroits mais une table particulière
réside à un seul site. La réplication signifie que les mêmes données sont disponibles à
multiples endroits.
3.2. Forces et faiblesses de la réplication
3.2.1. Forces
3.2.2. Faiblesses
Elle permet à multiples sites, agissant comme des postes égaux, pour gérer des
groupes des objets de répliquées. Chaque site dans un environnement multi maître est
maître et chacun communique avec les autres sites maîtres ; les applications peuvent
mettre à jour n’importe quelle table répliquée à n’importe quel site dans la configuration
Ici une modification apportée sur un site (exemple : sur les données des tables) se
répercute directement sur tous les autres sites afin de préserver la cohérence des données
entre les bases.
Les mises à jour des clichés sur le site maître sont exécutées à un intervalle régulier.
Les variantes de ce type de réplication sont :
Pas de conflit des données entre les bases ; le seul moyen de modifier les données
sur les clichés sur lecture seule est de modifier ces données sur la base maître, et c’est ce
dernier qui va se répercuter toutes ces données sur tous les sites.
✓ Elles s’appliquent toujours sur une seule table bien que plusieurs tables peuvent
être référencées dans la sous requête.
✓ Elles peuvent être rafraîchies de manière incrémentale.
✓ Permet aux users d’effectuer des insert ou update sur le site répliqué même si la
connexion avec le site maître est coupée.
✓ Exige moins de ressources que pour la réplication multi maître même pendant les
mises à jour.
Jusque-là, nous avons supposé que toute mise à jour de la base demandée depuis
un nœud fût effectuée en temps réel sur les autres nœuds, c'est-à-dire pour le compte
de la même transaction atomique. Ceci correspond au mode de mise à jour synchrone
qui s'avère souvent trop contraignant pour les applications.
C'est le mode de distribution dans lequel toutes les sous opérations locales
effectuées suite à une mise à jour globale sont accomplies pour le compte de la même
transaction.
Dans le contexte des copies, ce mode de distribution est très utile lorsque les mises à
jour effectuées sur un site doivent être prises en compte immédiatement sur les autres
sites.
L'avantage essentiel de la mise à jour synchrone est de garder toutes les données au
dernier niveau de mise à jour. Le système peut alors garantir la fourniture de la dernière
version des données quel que soit la copie accédée.
Les avantages sont la possibilité de mettre à jour en temps choisi des données, tout en
autorisant l'accès aux versions anciennes avant la mise à niveau.
Les inconvénients sont bien sûr que l'accès à la dernière version n'est pas garanti. Ce qui
limite les possibilités des mises à jour.
La diffusion automatique des mises à jour appliquée à une copie aux autres copies
doit être assurée par le SGBD réparti. Plusieurs techniques de diffusion sont possibles
parmi lesquelles, on distinguera celles basées sur la diffusion de l'opération de mise à
jour, de celles basées sur la diffusion du résultat de l'opération.
Diffuser le résultat présente l'avantage de ne pas devoir ré exécuter l'opération sur le site
de la copie, mais l'inconvénient de nécessité un ordonnancement identique des mises à
jour en tous les sites afin d'éviter les pertes de mises à jour. Le report d'opération est
plus flexible, notamment dans le cas d'opérations commutatives.
Au-delà des techniques de diffusion des mises à jour se pose le problème du choix
de la copie sur laquelle appliquer les mises à jour. La réplication asymétrique rompt la
symétrie entre les copies en distinguant un site chargé de centraliser les mises à jour.
C’est une technique de gestion de copies basée sur un site primaire s eul autorisé à mettre
à jour et charger, de diffuser les mises à jour aux autres copies dites secondaires.
Le choix d’une technique asymétrique est orthogonal au choix d’un mode de diffusion
synchrone ou asynchrone des mises à jour : on peut donc distinguer l’asymétrique
synchrone et l’asymétrique asynchrone.
On aboutit alors à une technique asymétrique mobile dans laquelle le site primaire
change dynamiquement selon des critères qui peuvent être liés à l’application. Le droit
de mise à jour se déplace de site en site, par exemple au fur et en mesure de l’évolution
des données.
3.6.2. Réplication symétrique
Technique de gestion de copies où chaque copie peut être mise à jour à tout
instant et assure la diffusion des mises à jour aux autres copies.
appliquent aux sites secondaires. Encore faut – il que ces derniers appliquent les mises à
jours dans le bon ordre, ce qui peut présenter quelques difficultés facilement solubles.
Dans le cas de copies symétriques, la convergence est plus difficile à assurer. En effet, les
mises à jour simultanées risquent d’être accomplies dans un ordre différent sur une même
donnée. On obtient alors deux états différents : les copies divergent. La sérialisabilité de
l’exécution globale des transactions n’est pas respectée, d’où la divergence.
Des techniques applicables dans le cas de mise à jour synchrones découlent des
mécanismes de contrôle de concurrence étudiés ci – dessus. Ce sont :
Pour une installation et une manipulation de SQL Server 2008 assurément réussies,
veuillez trouver dans le tableau ci-dessus les spécifications par rapport aux matériels
minimums à avoir.
2
Cette présentation est tirée du support de cours du Prof. KAFUNDA, dans la partie des travaux pratiques réalisés
par les étudiants de l’Université KIM de Kinshasa.
C PU
- Processeur de 1GHz pour un Système d’Exploitation en 32
bit ;
- Processeur 1.6GHz pour un Système d’Exploitation en 64 bit.
Mais un processeur de 2 GHz est très vivement recommandé pour une bonne
performance et une rapidité de votre SQL Server
Mémoire
- Au minimum 512Mb, si SQL Server est le seul processus ; -
Sinon 1Gb de mémoire minimum est conseillé.
S ystème d ’exploitation
- Windows Vista
- Windows Xp 32-Bit, - Windows Server 2003 Sp2 - Windows Server
2008 32-Bit.
Il fonctionnera tout aussi bien sur des systèmes 64-Bit tels que :
- Windows Server 2003 - Windows Server 2008, - Windows XP Pro.
Ainsi sur les nouvelles versions de Windows :
- Windows 7
- Windows 8
Avant tout, signalons tout aussi que cette installation se déroule sur une machine dont
les propriétés sont les suivantes :
Les étapes ne sont pas beaucoup commentées, car sur chaque interface des étapes, il y
a des explications inhérentes sur l’image.
a) Lancement de l’installation
Lorsque vous cliquerez sur le [2], vous trouverez un assistant qui vous permettra
d’installer une première instance de SQL Server, sinon d’en ajouter tant d’autres ou
des nouvelles fonctionnalités à une instance déjà existant.
Et sur cette page, vous avez la possibilité de choisir les éditions que vous
voudrez bien installer :
Version :
- Entreprise Evaluation
- Expression
- Expression with advanced services
e) Contrat de licence
g) Règles de support
Vous pouvez par ici sélectionner les composants ou services dont vous aurez besoin
d’utilisation.
i) L’instance, Renommer !
l) Sécurité
Cette configuration du serveur permet de mettre au point des comptes utilisateurs qui
seront utilisés pour exécuter SQL Server.
Alors, il faut choisir un de types de sécurités :
Menu Démarrer -> Clic droit dur Ordinateur -> (Option) Gérer Ordinateur ; vous
verrez la fenêtre suivante :
Déroulez en [1], cliquez le [2], et faites en suite clic droit sur le service en [3], et option
propriétés, sinon sur autre service, et vous aurez la boite de dialogue suivante :
n’exige plus de mot de passe, puis qu’il utilise le compte Windows. Le mode Mixte
– Authentification Windows et SQL Server – vous permet de balancer entrer les deux
; il crée par défaut un compte utilisateur SQL Server nommé « sa » : System
Administrator.
Puisque vous prenez le mode d’authentification Mixte en [1], en [2] vous veniez de
mettre le mot de passe pour le compte d’administrateur SQL Server (nommé « sa »,
sysadmin ou system administrator), vous devez aussi désigner le compte utilisateur
Windows de la machine courante en [3], ou sinon ajouter plusieurs autres qui seront
autorisés d’administrer le SQL Server
q) Règles d’installation
s) Installation en cours
t) Installation terminée
Et maintenant que l’installation est bien finie, vous pouvez alors vous en servir, mais
le service exploité dans ce document, c’est le moteur de Base de Données avec
certains services au tour de ce dernier.
Dès à présent, vous avez donc la possibilité de soit ajouter une nouvelle instance, soit
supprimer une ancienne, donc désinstaller :
- Pour ajouter une nouvelle instance, aller dans le « Centre d’Installation SQL
Server : Menu Démarrer -> Tous le Programme -> Microsoft SQL Server
2008 -> Outils de configuration
Une fois que vous cliquez sur « Centre de configuration SQL Server », la fenêtre suivante
va apparaître :
Si vous cliquez sur « Supprimer », vous verrez les fenêtres similaires à celles du processus
d’Installation, et le reste d’étape est intuitif, il ne suffit que de lire et faire.
a) Le Pare-Feu
Cela étant, il va empêcher donc que des instances de SQL Server installées sur
différentes machines du réseau se communiquent. Pour ce faire, il faut soit le
désactiver (ce qui est dangereux), soit créer un tunnel de communication, c’est-à-
dire, autoriser un programme à recevoir et émettre bien que le Pare-Feu est
activité…
Là, à ce niveau le Pare-feu est activé, et puis on va chercher à autoriser SQL Server à
communiquer avec l’extérieur.
Cliquer sur [Autoriser un autre programme] :
Si le programme n’est pas sur la liste, cliquer sur [Parcourir…], pour aller le trouver …
Menu Démarrer -> Tous les Programmes - > Microsoft SQL Server 2008 -> Outils de
Configuration - > Gestionnaire de Configuration SQL Server
Là, par exemple, nous avons tous les services disponibles de SQL Server, les états et
autres informations.
Il est à signaler que c’est ici que l’on fait aussi l’administration des services de SQL
Server.
Faire en (2) un clic droit -> Propriété, et on aura cette boite de dialogue
Ici, il faut mettre l’adresse IP de la machine et le numéro de port, par lesquels SQL
Server de cette machine peut être repérable dans le réseau !
A la fin de toutes ces configurations, il faut redémarrer les services.
2) Un cas d’exemple
a) Enoncé du problème
L’Université Notre-Dame du Kasayi – UKA veut informatiser son système d’inscriptions
de ses nouveaux étudiants pour chaque nouvelle année académique.
Nota : Les étapes qui vont suivre, permettent de pouvoir mettre au point une base de
données réparties.
b) Schéma Global
C’est concrètement le modèle logique de données (MLD), dans MERISE, ou le modèle
de classes dans UML.
Votre schéma est censé être global, il est ainsi du fait qu’il ne concerne plus un seul
site pour qu’il ne soit particulier qu’à ce dernier, mais plutôt tous les sites participant
dans la circulation de l’information, d’où il doit être global.
C’est si simple de construire le schéma ou le modèle global de votre Base de
Données, il sera juste question d’étendre les spécificités que vous prendriez pour le
modèle concernant un seul site aux spécificités étendues qui incluent plusieurs sites,
c’est simplement modéliser en tenant compte de tous les sites participant dans la
circulation de l’information.
Voici notre schéma ou modèle global.
Etudiant
PK Matricule _Et
Noms _Et
Sexe _Et
Inscription
Date _ Naissance _Et
PK ID _Num _Insc
Année _Académique
PK ID _An
Promotion
PK ID _Promo
Libellé _ Promo
Nota : Dans notre exemple, nous allons prendre le cas de la faculté de Sciences.
Donc, nous aurons deux (2) sites :
- SITE I : enregistre toutes les informations des étudiants ; c’est d’où commence
tout.
- SITE II (Faculté de Sciences) : récupère du SITE I les informations sur tous les
étudiants inscrits à la Faculté de Sciences
SELECT
Matricule_Etudiant_Insc,
Insc.ID_Annee_Insc,
Insc.ID_Promotion_Insc
FROM Inscription
WHERE
(ID_Faculte_Insc = ‘f-sc’)
Problèmes
Il faut savoir que le plus grand fragment, c’est une table ; et que la fragmentation
du schéma global revient tout simplement à appliquer la fragmentation sur une table
ou mieux sur chaque table pour soit soutirer une partie de donnée de la table soit
toute la table ; on ne peut donc pas l’appliquer sur deux (2) tables à la fois même si
elles sont reliées.
Cette manière de faire impose et pose un problème, par exemple, quand c’est une
table qui ne garde principalement que les informations de clés étrangères et les vraies
ou les reste d’informations se trouveraient dans d’autres tables (comme le cas de la
table Inscription), il sera donc difficile en appliquant la fragmentation sur la table
Inscription (comme montré dans la requête ci-haut), de se retrouver avec toutes les
données dans les fragments, il y manquera certaines informations, par exemple, sur
l’Etudiant (nom, sexe, etc.)
Pour notre cas de la table Inscription, on voudra créer une nouvelle table nommée
EtudiantsInscrits avec les colonnes suivantes :
Ceci pour avoir au sein d’une même table toutes les données après le filtrage suivant
(WHERE ID_Faculte_Insc = ‘f-sc’).
FROM inserted
--
SELECT
@sex = Sexe_Et,
@nom = Noms_Et,
@datenaiss = Date_Naissance_Et
FROM Etudiant WHERE Matricule_Et = @mat;
--
--
END
GO
❖ Allocation
Dans cette étape, on montre comment les fragments obtenus dans la précédente seront
placés donc alloués dans différents sites.
SITE I SITE II
Toutes les tables (y compris la Ici, nous aurons 1 table
nouvelle) se trouveront dans le
Site I
Etudiant EtudiantsInscrits
Faculté
Année_Académique
Promotion
Inscription
EtudiantsInscrits
❖ Implémentation
Après avoir fini de parcourir les étapes précédentes, vous avez maintenant
connaissance de ce qui doit être fait.
Pour réaliser une Base de Données Réparties sous SQL Server, on utilise la technologie
de la Réplication.
Chaque Site aura un SGBD dit Réparti, c.-à-d. un SGBD capable de communiquer avec
d’autres dans le Réseau, celui-ci gérera des bases de données en son sein, en local ;
un site peut contenir dans son SGBD toutes les tables et en avoir tous les droits
(Ecriture et Lecture), c’est que c’est un Site principal.
Architecture
Une Base de Données Répartie est une collection des Bases de Données se trouvant
dans différents SGBDs de chaque Site et reliées entre elles via un réseau informatique
en vue de se communiquer et de se mettre à même niveau de données communes
(cohérence).
L’architecture entre les Serveurs de Bases de Données, c’est le Pair-à-Pair, c.-à-d. selon
le contexte d’une communication donnée ou selon le contexte de Réplication un
SGBD peut se trouver Serveur et pour une autre communication client. Quant aux
Bases de Données, en tant que ressources que consomment ou fournissent les SGBD,
elles ne peuvent pas être en architecture Client-Serveur ou Pair-à-Pair, elles sont plutôt
en Maître-Esclave ou en Principal et Secondaire ; vous vous souviendrez que dans la
théorie de type de Réplication on parle bien d’ailleurs de la copie maître ou principale
et la copie esclave ou secondaire.
b) Authentification
c) Dans le Serveur
Nous allons exploiter plus les deux onglets : [Bases de Données] et [Réplication]
e) Configurer la Réplication
- Serveur de Distribution
-
Vous pouvez soit choisir le serveur-ci comme serveur de distribution soit choisir un
autre dans le réseau ou dans la machine.
Faites [Suivant] :
Clic droit sur l’onglet Réplication -> Publications -> Nouvelle Publication
Le serveur de publication envoie une capture instantanée des données publiées aux
Abonnés, à des intervalles planifiés.
• Publication transactionnelle :
Le serveur de publication diffuse les transactions aux Abonnés une fois qu'ils
ont reçu une capture instantanée initiale des données publiées.
Le serveur de publication diffuse les transactions aux Abonnés SQL Server une fois
qu'ils ont reçu une capture instantanée initiale des données publiées. Les
transactions en provenance des Abonnés sont appliquées sur le serveur
de publication.
• Publication de fusion :
Ainsi peut se faire la Fragmentation verticale sur les tables (cocher les colonnes)
[Ajouter] : Vous permet d’ajouter un filtre dans les données de tables, c’est ici que se
réalise la Fragmentation Horizontale.
k) La politique de la capture
m) Nommer la Publication
B) Authentification
C) Création de l’Abonnement
Et voilà !
[…] : Cliquer pour aller configurer la sécurité, et on a la boite suivante. Puis valider
[OK] [LASOURCEPLUS-PC\Lasourceplus] : On constate que le compte Windows qui
était l’agent de Capture est encore lui-même l’Agent de Distribution. Cela peut aussi se
passer autrement, c’est-à-dire, un autre compte Windows pouvait bien être l’Agent de
distribution.
Ici, il faudrait mettre le nom du compte SQL Server (connexion) du SQL Server qui
possède la BD Abonnée, et son mot de passe.
Dans [KAYEMBALASOURCE\LASOURCESERVER]
Serveur : [LASOURCEPLUS-PC\LASOURCESERVER]
Table : t_agent – Ajout de [k94s – essele – madika - 33]
Serveur : [KAYEMBALASOURCE\LASOURCESERVER]
Table : t_agent : [k94s – essele – madika - 33] répliqué
Une fois cette ouverture faite, il fallait désormais pour ces entreprises dites web
relever le pari de la disponibilité de service et faire face à la montée en charge qui en
résulte.
Ces nouvelles bases offrent une meilleure disponibilité des données, des capacités de
stockage gigantesques en s'affranchissant de contraintes induites par les propriétés ACID
(Atomicité, Cohérence, Isolation, Durabilité). Elles sont largement utilisées et
commencent à se faire une place dans les infrastructures IT (Information Technology).
En d’autres termes, quelles sont les limites des systèmes relationnels devant les
contraintes de disponibilité (de montée en charge) dont fait l’objet la plupart des
services web et l’augmentation du volume de données ? On peut également poser la
question de la nécessité de la migration vers ces nouvelles approches de stockage et de
manipulation de données au regard du coût et de la complexité d’une telle opération
pour les entreprises.
S’agissant de la migration vers les bases de données NoSQL, quelques géants du web
comme Google avec Bigtable, Facebook avec Cassandra et Twitter ont réussi leur
migration vers le NoSQL ; chacun y allant de ses besoins, ses contraintes et de ses
méthodes.
Tout d’abord, SQL est un langage standardisé. Bien que chaque fournisseur de base
de données ait implémenté quelques variantes, il n’en demeure pas moins que ce socle
commun est bien connu par les développeurs.
Pour une entreprise, investir dans une technologie SQL s’avère donc moins coûteux
sur le plan de la formation que toute autre technologie. Cela explique sans doute l’échec
des bases de données objets que l’on a vu fleurir autour des années 2000 et qui n’ont
jamais véritablement percé, malgré une approche novatrice.
Les besoins majeurs identifiés par ces acteurs sont les suivants :
par ailleurs permettre que les données soient au plus proche des personnes qui les
utilisent.
- Une architecture qui fonctionne sur du matériel peu spécialisé et donc facilement
remplaçable en cas de panne.
Malgré l’appellation NoSQL, ce n’est pas tant le langage SQL en lui-même qui est
inadapté mais les grands principes sur lesquels il a été construit : le modèle relationnel
et transactionnel. En effet, les bases de données relationnelles mettent à la disposition
des développeurs un certain nombre d’opérations de relations entre les tables :
La mise en œuvre de tels mécanismes à un coût considérable dès lors que l’on se
trouve dans le contexte d’un système distribué. Sur la plupart des SGBD relationnels, il
convient de s’assurer en permanence que les données liées entre elles sont placées sur le
même nœud du serveur. Lorsque le nombre de relations au sein d’une base augmente,
il devient de plus en plus difficile de placer les données sur des nœuds différents du
système.
Outre leur modèle relationnel, la plupart des moteurs de S.G.B.Ds relationnels sont
transactionnels ce qui leur impose le respect des contraintes Atomicity Consistency
Isolation Durability, communément appelé par son acronyme ACID.
Dans un contexte centralisé, les contraintes ACID sont plutôt aisées à garantir. Dans
le cas de systèmes distribués, il est en revanche nécessaire de distribuer les traitements
de données entre différents serveurs. Il devient alors difficile de maintenir les contraintes
ACID à l’échelle du système distribué entier tout en maintenant des performances
correctes. Comme on le verra, la plupart des SGBD de la mouvance NoSQL ont donc
été construits en faisant fi des contraintes ACID quitte à ne pas proposer de
fonctionnalités transactionnelles.
Il existe par ailleurs, une limitation plus théorique à ce que peuvent réaliser les bases
de données relationnelles distribuées qui est décrite par le théorème de CAP
(ConsistencyAvailibilityPartition tolerance).
Le théorème de CAP stipule qu’il est impossible d’obtenir ces trois propriétés en même
temps dans un système distribué et qu'il faut donc en choisir deux parmi les trois :
3 FAUCRET A., NoSQL, Une nouvelle approche du stockage et de la manipulation des données , Smile Livres
Blancs, Paris, 2013, p 8-9.
Les bases de données NoSQL sont généralement des systèmes CP (Cohérent et Résistant
au partitionnement) ou AP (Disponible et Résistant au partitionnement).
Plus que des technologies de remplacement intégral des outils relationnels, le NoSQL
correspond le plus souvent à des approches qui complètent les outils existants, pour en
combler les faiblesses. Ainsi, on observe de plus en plus souvent la traduction “Not Only
SQL” au lieu de “No SQL”.
Les bases de données NoSQL reposent essentiellement sur plusieurs aspects qui font
leurs forces et justifient leur usage aujourd’hui des géants du web. Il s’agit principalement
du partitionnement horizontal des données, du fait que ces bases sont sans schéma et
donc une grande flexibilité du schéma de données.
lorsque la charge des traitements ou des données devient très importante au niveau d’un
ou de plusieurs serveurs à ajouter un ou plusieurs serveurs qui se partagent les données
et les traitements : c’est ce que nous avons évoqué plus haut sous les termes de scaling
de données et de scaling de traitements.
Un SGBDR pour répondre aux exigences de performance face aux gros volumes de
données, doit se retourner vers du matériel de plus en plus rapide et à l'ajout de
mémoire. Le NoSQL, pour sa part, pour gérer la “montée en charge" se réfère à la
répartition de la charge sur les systèmes de Cloud Computing. Il s'agit-là du composant
de NoSQL qui fait d'elle une solution peu coûteuse pour les grands ensembles de
données.
Exemple :
✓ Dans certains cas les données seront embarquées dans la donnée parente
(la manière de procéder dépend du paradigme utilisé). C’est notamment le cas
lorsque le volume de données est faible et que celle-ci est peu mise à jour. Il se
pose alors la problématique de la mise à jour des données.
L’engouement pour les bases NoSQL est la conclusion logique de l’ère Web 2.0. Les
données stockées sont aujourd’hui beaucoup plus importantes qu’elles n’ont pu l’être
avant, et les besoins ont changé. On a aujourd’hui besoin de pouvoir stocker ou lire très
rapidement des millions de données (prenez l’exemple de Facebook par exemple) mais
aussi, avec le Cloud, d’avoir des systèmes “scalable” ou élastiques.
Cette solution est très adaptée pour effectuer des traitements sur des colonnes comme
les agrégats (comptage, moyennes, co-occurences...). D'une manière plus concrète, elle
est adaptée à de gros calculs analytiques. Toutefois, cette solution est beaucoup moins
appropriée pour la lecture de données spécifiques comme pour les clés/valeurs.
• BigTable (Google)
• HBase (Apache, Hadoop)
• Spark SQL (Apache)
• Elasticsearch (elastic) -> moteur de recherche
5 ROGER M., synthèse d’étude et projets d’intergiciels: bases NoSQL, Paris, Smile Livres Blancs, 2013, p87.
Les trois autres familles NoSQL n'adressent pas le problème de corrélations entre les
éléments. Prenons l'exemple d'un réseau social : dans certains cas, il devient très
complexe de calculer la distance entre deux personnes non directement connectées. Et
c'est ce type d'approche que résolvent les bases orientées Graphe.
Dans la base orientée graphe, les données stockées sont : les nœuds, les liens et des
propriétés sur ces nœuds et ces liens. Les requêtes que l'on peut exprimer sont basées sur
la gestion de chemins, de propagations, d'agrégations, voire de recommandations.
Toutefois, contrairement aux solutions précédentes la distribution des nœuds sur le
réseau n'est pas triviale.
• Neo4j : eBay, Cisco, UBS, HP, TomTom, The National Geographic Society
• OrientDB (Apache) : Comcast, Warner Music Group, Cisco, Sky, United Nations,
VErisign
• FlockDB (Twitter) : Twitter
Il arrive parfois que l'on n'ait besoin que de retrouver des valeurs étant donné une
clé. Par exemple, si votre application a besoin de retrouver le dossier d'un étudiant en
n'utilisant que son code étudiant, alors une base de données de type clé-valeur sera
idéale. Elles tendent à être plus rapides et plus simples que les bases de données
relationnelles.
On les utilise, notamment, pour stocker des pages web précalculées afin d'accélérer
certains sites web. Dans un tel cas, la clé peut être, tout simplement, l'hyperlien de la
page.
Stockage Clé/Valeur
Les bases orientées documents ressemblent sans doute le plus à ce que l'on peut faire
dans une base de données classique pour des requêtes complexes. Le but de ce stockage
est de manipuler des documents contenant des informations avec une structure
complexe (types, listes, imbrications). Il repose sur le principe du clé/valeur, mais avec
une extension sur les champs qui composent ce document.
L'avantage de cette solution est d'avoir une approche structurée de chaque valeur,
formant ainsi un document. De fait, ces solutions proposent des langages d'interrogation
riches permettant de faire des manipulations complexes sur chaque attribut du document
(et sous-documents) comme dans une base de données traditionnelles, tout en passant
à l'échelle dans un contexte distribué.
BIBLIOGRAPHIE