Le mouvement NoSQL
Ces derniĂšres annĂ©es tĂ©moignent dâun engouement certain autour des technologies permettant lâaccumulation, lâanalyse et la transformation de donnĂ©es trĂšs volumineuses (rĂ©seaux sociaux notamment). Dans lâoptique de supporter des volumes de donnĂ©es grandissants, il est nĂ©cessaire de dĂ©localiser les procĂ©dures de traitement sur diffĂ©rentes machines et de mutualiser les ressources de façon transparente pour lâutilisateur final.
Le NoSQL, câest quoi?
Le terme NoSQL rĂ©fĂ©rence une catĂ©gorie de systĂšmes de gestion de bases de donnĂ©es (SGBD) distribuĂ©s, conçus pour la plupart dans le but de traiter des jeux de donnĂ©es volumineux dans des dĂ©lais acceptables pour lâutilisateur. Ils viennent ainsi enrichir le panel des moteurs de stockage traditionnels, dont la majoritĂ© sont des systĂšmes de stockage relationnels (SQL). Les deux catĂ©gories ne sont dâailleurs pas destinĂ©es aux mĂȘmes cas dâutilisation et diffĂšrent en bien des aspects: architecture logicielle et matĂ©rielle, fonctionnement interne et interprĂ©tation de lâinformation⊠Les systĂšmes NoSQL sont dĂ©veloppĂ©s dans le souci de maintenir des temps de rĂ©ponse bas malgrĂ© un dĂ©bit de requĂȘtes parfois trĂšs Ă©levĂ©. Leur architecture se veut simple: ils nâoffrent pas les mĂȘmes garanties que les bases relationnelles (contraintes ACID notamment). En particulier, lâabsence de schĂ©ma structurel permet de stocker des donnĂ©es hĂ©tĂ©rogĂšnes au sein dâune mĂȘme base et dâaccĂ©lĂ©rer les traitements, puisque certaines vĂ©rifications structurelles (intĂ©gritĂ© des tables) nâont plus lieu dâĂȘtre.
Et les bases de données relationnelles, ça suffit pas?
Les bases de donnĂ©es relationnelles rĂ©pondent Ă des cas dâutilisation trĂšs spĂ©cifiques et ne sont pas conçues pour rĂ©pondre Ă tous les scĂ©narios. En effet, le recours Ă une base relationnelle peut se rĂ©vĂ©ler inadaptĂ© dans les conditions suivantes:
la base ne peut plus sâadapter Ă un large trafic Ă un coĂ»t acceptable
le nombre de tables requises pour maintenir le schĂ©ma relationnel sâest Ă©tendu de façon dĂ©gĂ©nĂ©rĂ©e par rapport Ă la quantitĂ© de donnĂ©es stockĂ©es
le schéma relationnel ne satisfait plus aux critÚres de performances
la base est soumise Ă un grand nombre de transactions temporaires
Souvent, la transition dâun systĂšme relationnel vers un systĂšme NoSQL est motivĂ©e par plusieurs raisons:
un trÚs gros volume de données à stocker
des Ă©critures frĂ©quentes, massives, qui doivent ĂȘtre rapides et fiables
les lectures doivent ĂȘtre rapides et cohĂ©rentes
une bonne tolérance aux pannes
un schéma de données modifiable à la volée
des données sérialisables
la facilitĂ© dâadministration (sauvegarde, restauration)
la parallélisation des traitements sur les données
lâabsence de point de contention (Single Point of Failure)
Comparatif NoSQL / Relationnel
De façon générale, les systÚmes NoSQL ont tendance à suivre les caractéristiques suivantes (BASE):
Basically Available: le systÚme satisfait à des contraintes de disponibilité (les données sont toujours accessibles en lecture et en écriture).
Soft state: lâĂ©tat du systĂšme change au cours du temps sur les diffĂ©rentes machines.
Eventually consistent: lâĂ©tat du systĂšme converge toujours vers lâĂ©tat le plus rĂ©cent au bout dâun certain laps de temps (les donnĂ©es sont actualisĂ©es sur tous les serveurs qui la stockent avec le temps).
Le tableau suivant expose des points de comparaison entre les systĂšmes relationnels et NoSQL.
SystĂšme NoSQL Relationnel CapacitĂ© de stockage TrĂšs Ă©levĂ©e (> 1 To) ModĂ©rĂ©e (< 1 To) Architecture DistribuĂ©e CentralisĂ©e ModĂšle de donnĂ©es DestructurĂ© Relationnel (tabulaire) RĂ©ponse Ă la charge Lecture et Ă©criture Lecture en majoritĂ© ScalabilitĂ© Horizontale (nombre) Verticale (puissance) Moteur de requĂȘtes Propre au systĂšme SQL Principales caractĂ©ristiques BASE ACID AnciennetĂ© de la technologie RĂ©cente EprouvĂ©e
Que retenir?
Ainsi, les moteurs de stockage NoSQL ne sont pas destinĂ©s aux mĂȘmes usages que les moteurs relationnels traditionnels. Par exemple, les systĂšmes NoSQL ne supportent pas les contraintes dâintĂ©gritĂ© qui sont inhĂ©rentes aux systĂšmes relationnels (et qui les rendent indispensables lorsque la cohĂ©rence de la base doit ĂȘtre garantie Ă tout moment).
De plus, il est important de remarquer que les deux types de technologies peuvent trĂšs bien cohabiter au sein dâun mĂȘme logiciel. En effet, des volumes de donnĂ©es sensibles seront trĂšs bien exploitĂ©s par une base de donnĂ©es relationnelle tandis quâune solution NoSQL affichera de meilleures performances sur des bases volumineuses dont la structure change avec le temps.
La famille des bases de donnĂ©es NoSQL compte des systĂšmes trĂšs hĂ©tĂ©rogĂšnes qui rĂ©pondent chacun Ă des besoins trĂšs spĂ©cifiques. De façon gĂ©nĂ©rale, on arrive Ă les classer en quatre grands ensembles: les bases clĂ©-valeur, les bases documents, les bases orientĂ©es colonnes et les bases de type graphe. Leurs particularitĂ©s ainsi que les cas dâutilisation correspondants seront dĂ©taillĂ©s dans un prochain billet.
Sayonara :-)
Alexandre Dumont












