Un aperçu de NoSQL
L'acronyme NoSQL a été inventé en 1998. Beaucoup de gens pensent que NoSQL est un terme péjoratif créé pour pousser SQL. En réalité, le terme signifie Not Only SQL. L'idée est que les deux technologies peuvent coexister et que chacune a sa place. Le mouvement NoSQL a fait l'actualité ces dernières années car de nombreux leaders du Web 2.0 ont adopté une technologie NoSQL. Des entreprises comme Facebook, Twitter, Digg, Amazon, LinkedIn et Google utilisent toutes NoSQL d'une manière ou d'une autre. Décomposons NoSQL pour que vous puissiez l'expliquer à votre DSI ou même à vos collègues.
NoSQL est né d'un besoin
Stockage de données: Les données numériques stockées dans le monde sont mesurées en exaoctets. Un exaoctet équivaut à un milliard de gigaoctets (Go) de données. Selon Internet.com, la quantité de données stockées ajoutées en 2006 était de 161 exaoctets. À peine 4 ans plus tard, en 2010, la quantité de données stockées atteindra près de 1 000 Exaoctets, soit une augmentation de plus de 500 %. En d'autres termes, il y a beaucoup de données stockées dans le monde et elles vont continuer à croître.
Données interconnectées : Les données sont de plus en plus connectées. La création du Web favorisée par les hyperliens, les blogs ont des pingbacks et tous les principaux systèmes de réseaux sociaux ont des balises qui relient les choses entre elles. Les grands systèmes sont conçus pour être interconnectés.
Structure de données complexe : NoSQL peut gérer facilement les structures de données hiérarchiques imbriquées. Pour accomplir la même chose en SQL, vous auriez besoin de plusieurs tables relationnelles avec toutes sortes de clés. De plus, il existe une relation entre les performances et la complexité des données. Les performances peuvent se dégrader dans un SGBDR traditionnel car nous stockons les quantités massives de données requises dans les applications de réseaux sociaux et le Web sémantique.
Qu'est-ce que NoSQL?
Je suppose qu'une façon de définir NoSQL est de considérer ce qu'il n'est pas. Ce n'est pas SQL et ce n'est pas relationnel. Comme son nom l'indique, il ne remplace pas un SGBDR mais le complète. NoSQL est conçu pour les magasins de données distribués pour les besoins de données à très grande échelle. Pensez à Facebook avec ses 500 000 000 d'utilisateurs ou à Twitter qui accumule des térabits de données chaque jour.
Dans une base de données NoSQL, il n'y a pas de schéma fixe ni de jointure. Un SGBDR « évolue » en obtenant du matériel de plus en plus rapide et en ajoutant de la mémoire. NoSQL, en revanche, peut tirer parti de la « scaling out ». La mise à l'échelle fait référence à la répartition de la charge sur de nombreux systèmes de produits de base. C'est le composant de NoSQL qui en fait une solution peu coûteuse pour les grands ensembles de données.
Catégories NoSQL
Le monde NoSQL actuel s'inscrit dans 4 catégories de base.
-
Magasins de valeurs-clés reposent principalement sur Papier Dynamo d'Amazon qui a été écrit en 2007. L'idée principale est l'existence d'une table de hachage où il y a une clé unique et un pointeur vers une donnée particulière. Ces mappages sont généralement accompagnés de mécanismes de cache pour maximiser les performances.
- Colonne Magasins Familiaux ont été créés pour stocker et traiter de très grandes quantités de données réparties sur de nombreuses machines. Il y a toujours des clés mais elles pointent vers plusieurs colonnes. Dans le cas de BigTable (modèle NoSQL de la famille de colonnes de Google), les lignes sont identifiées par une clé de ligne avec les données triées et stockées par cette clé. Les colonnes sont classées par famille de colonnes.
- Bases de données de documents ont été inspirés par Lotus Notes et sont similaires aux magasins de valeurs-clés. Le modèle est essentiellement constitué de documents versionnés qui sont des collections d'autres collections de valeurs-clés. Les documents semi-structurés sont stockés dans des formats tels que JSON.
- Base de données graphiqueLes s sont construits avec des nœuds, des relations entre les notes et les propriétés des nœuds. Au lieu de tableaux de lignes et de colonnes et de la structure rigide de SQL, un modèle de graphique flexible est utilisé qui peut évoluer sur de nombreuses machines.
Acteurs NoSQL majeurs
Les acteurs majeurs du NoSQL ont émergé principalement grâce aux organisations qui les ont adoptés. Certaines des plus grandes technologies NoSQL incluent:
- Dynamo: Dynamo a été créé par Amazon.com et est la base de données NoSQL clé-valeur la plus importante. Amazon avait besoin d'une plate-forme distribuée hautement évolutive pour ses activités de commerce électronique et a donc développé Dynamo. Amazon S3 utilise Dynamo comme mécanisme de stockage.
- Cassandre :Cassandre a été open source par Facebook et est une base de données NoSQL orientée colonnes.
- Grande table: BigTable est la base de données propriétaire orientée colonnes de Google. Google autorise l'utilisation de BigTable mais uniquement pour Google App Engine.
- Base de données simple : SimpleDB est une autre base de données Amazon. Utilisé pour Amazon EC2 et S3, il fait partie d'Amazon Web Services qui facture des frais en fonction de l'utilisation.
- CouchDB :CouchDB avec MongoDB sont des bases de données NoSQL open source orientées document.
- Néo4J :Neo4j est une base de données graphique open source.
Interroger NoSQL
La question de savoir comment interroger une base de données NoSQL est ce qui intéresse la plupart des développeurs. Après tout, les données stockées dans une énorme base de données ne servent à rien si vous ne pouvez pas les récupérer et les montrer aux utilisateurs finaux ou aux services Web. Les bases de données NoSQL ne fournissent pas un langage de requête déclaratif de haut niveau comme SQL. Au lieu de cela, l'interrogation de ces bases de données est spécifique au modèle de données.
De nombreuses plates-formes NoSQL permettent des interfaces RESTful avec les données. D'autres API de requête d'offre. Il existe quelques outils de requête qui ont été développés pour tenter d'interroger plusieurs bases de données NoSQL. Ces outils fonctionnent généralement dans une seule catégorie NoSQL. Un exemple est SPARQL. SPARQL est une spécification de requête déclarative conçue pour les bases de données de graphes. Voici un exemple de requête SPARQL qui récupère l'URL d'un blogueur particulier (avec l'aimable autorisation de IBM):
Mousse PREFIXE:
SELECTIONNER ?url
DE
OÙ {
?contributor foaf: nom "Jon Foobar" .
?contributor foaf: weblog ?url .
}
L'avenir de NoSQL
Les organisations qui ont des besoins massifs de stockage de données envisagent sérieusement NoSQL. Apparemment, le concept ne gagne pas autant en popularité dans les petites organisations. Dans une enquête menée par Information Week, 44% des professionnels de l'informatique n'ont jamais entendu parler de NoSQL. De plus, seulement 1 % des personnes interrogées ont indiqué que NoSQL faisait partie de leur orientation stratégique. De toute évidence, NoSQL a sa place dans notre monde connecté mais devra continuer à évoluer pour obtenir l'attrait de masse que beaucoup pensent qu'il pourrait avoir.