Les bases No-SQL

Débarqué il y a quelques années dans le monde informatique, le No-SQL se définit par ce qu’il n’est pas et revendique avant tout son tropisme révolutionnaire.

Les bases No-SQLLe No-SQL est une solution de stockage de données indexées qui contrairement à ses prédécesseurs relationnels de type Oracle, Sybase, MySQL etc., ne répond pas à une définition précise. Il fait clairement table rase des anciens standards définis par les bases de données relationnelles.

De fait, le développement parallèle du No-SQL montre bien qu’il s’agit d’une technologie alternative et non pas concurrente. Pour simplifier, No-SQL est un dérivé des moteurs de recherche.

En effet, Google a été confronté très tôt à des problèmes de volumétrie et de performance. Les technologies traditionnelles ne pouvant pas adresser cette problématique, des solutions ad hoc pour le stockage indexé de données sur des clusters répartis ont été développées. Par la suite, des frameworks furent créés pour étendre ce type de stockage à des applications sortant du cadre de la recherche par mot clé.

No-SQL n’a donc aucune parenté avec le SQL (d’où son nom) et ce n’est que récemment que les développements tous azimuts ont proposé une définition moins polémique (Not Only SQL).

No-SQL : plus de pragmatisme, moins de formalisme

En No-SQL, il ne s’agit plus de répondre à un problème métier par la modélisation et l’abstraction, mais à l’inverse de répondre à un besoin technique borné sans volonté de généralisation. En somme, le No-SQL s’inscrit dans l’esprit du « less is more » où le pragmatisme est privilégié au formalisme. Particulièrement, les bases No-SQL sont surtout destinées à répondre aux problèmes de performances et aux problèmes de scalabilité. Bien que toutes les bases de données No-SQL possèdent un langage propriétaire, elles ont en commun :

  • De ne pas être relationnelles : même si la modélisation de relation est possible, la cohérence et l’intégrité ne sont par leur pierre angulaire. Les bases de données No-SQL n’ont pas de langage de requête commun et ne représentent pas non plus les relations entre tables de manière unifiée.
  • De ne pas être exactement transactionnelles : elles se contentent d’une approximation. L’hypothèse est la suivante : une modification nécessitant une fraction de seconde pour se propager sur l’ensemble du cluster a de très faible chance d’entrer en conflit avec une autre action portant sur la même donnée.

En somme, elles prennent des libertés avec le paradigme ACID (atomicity, consistency, isolation, durability) cher aux administrateurs de base de données pour offrir en contrepartie des performances inédites et des factures énergétiques réduites.

principaux Avantages

Les bases de données No-SQL ont les avantages suivants :

  • Leurs performances ne s’écroulent jamais quel que soit le volume traité. Leur temps de réponse est proportionnel au volume (on observe une dérive quadratique dans les SGBDR classiques).
  • Elles se migrent facilement. En effet, contrairement aux SGBDR classiques, il n’est pas nécessaire de procéder à une interruption de service pour effectuer le déploiement d’une fonctionnalité impactant les modèle de données.
  • Elles sont facilement scalables. A titre d’exemple, le plus gros cluster de No-SQL fait 400 To tandis qu’Oracle sait traiter jusqu’à une vingtaine de Téraoctet (pour des temps de réponse raisonnable).
  • Elles sont consistantes de manière pratique (pour l’utilisateurune requête aura toujours la même réponse quel que soit le nœud du cluster).
  • Elles s’intègrent facilement aux SI déployés dans les Clouds du marché.
  • Elles possèdent un modèle extensible (le nombre de colonne d’une table n’est pas défini).

No-SQL, pour quelles problématiques métier ?

Les systèmes distribués à grosse volumétrie

En premier lieu, les solutions No-SQL répondent aux problèmes typiques des grosses applications (gros volume et gros trafic). De fait, tous les acteurs majeurs de l’informatique portent des solutions No-SQL parce qu’ils sont confrontés aux problèmes de disponibilité. Il faut donc penser au No-SQL lorsqu’on souhaite des performances combinées à une forte scalabilité. Les solutions No-SQL garantissent une continuité de service lors des migrations (Il est hors de question que Google réplique ses informations pour effectuer une migration switch).

Figure 1 Le No-SQL pour les problématiques de performance et de volumétrie

La figure 1, ci-dessus, nous montre un système mondial où il n’est pas possible d’avoir une cohérence globale. Dans cet espace quasi-cohérent, la propagation entre les différents éléments du cluster se fait par essaimage « seeding ». Le No-SQL peut-être utilisé indifféremment pour faire du partitionnement et de la réplication.

Toujours pour les gros consommateurs de data, il faut penser au No-SQL pour minimiser les coûts. Parce qu’elles consomment moins d’énergie les bases de données SQL peuvent amoindrir la facture énergétique. Les solutions clé en main No-SQL dans le cloud (SimpleDB, Hypertable) sont 100 fois moins chères que leur alter ego relationnel.

Les structures évoluant dans le temps

Dans un second lieu, le No-SQL est intéressant lorsque la définition de la donnée stockée peut varier dans le temps (développement rapide et prototypage, données polymorphes, systèmes géographiques). Le web sémantique est un représentant important de cette classe d’utilisation.

Le développement rapides

Sur un autre plan, certaines bases No-SQL (Couch DB par exemple) sont intéressantes pour les développements Web. Leurs Apis sont interfaçables avec le protocole JSON (JavaScript Object Notation) et cet atout est précieux pour les développements JavaScript. Par exemple, ce type de base permet de réaliser rapidement un moteur de recherche.

Concrètement, voici quelques exemples d’utilisation du No-SQL:

  • Stockage massif de données en grands clusters (Facebook, mail etc.)
  • Moteur de recherche et web sémantique
  • Base de données géographique

Particularités techniques

Apis propres

Pour se substituer au SQL, les fournisseurs apportent leur propres Apis. Elles peuvent se classer en deux grandes catégories :

– les Apis destinées aux hautes performances fournissent un accès bas niveau et assurent l’accès aux données indexées en un minimum de cycle processeur ;

– les Apis destinées à fournir des services en JSON pour le Web. Dans ce cas, l’Api est unique et s’appuie sur des services haut niveau (JSON). On s’interface avec la base de données par une Api de type Web Service REST.

Schéma extensible

Une table No-SQL a potentiellement un nombre illimité de colonnes. Les trois concepts importants sont:

  • la table groupe les éléments de sémantique proches,
  • la colonne possède un nom,
  • l’enregistrement est une ligne de la table associant un ensemble de colonne à leur valeur.

Cohérence événementielle

La différence essentielle des bases de données No-SQL par rapport aux SGBDR classiques vient de la notion de cohérence événementielle. Ici, il s’agit d’une quasi-cohérence non pas étalonnée sur des cycles d’horloge processeur, mais sur des latences acceptables pour l’exploitation de la donnée. On parle de “cohérence événementielle”, c’est à dire que la cohérence n’est pas garantie structurellement, mais par rapport aux stimuli du système.

En clair, l’information est presque toujours cohérente (latence 1s) et l’utilisateur ne ressent pas ce presque.

No-SQL : surmonter les réticences

Le No-SQL ne suscite pas immédiatement l’enthousiasme parce que:

  • les avantages de No-SQL ne sont pas connus, et une évangélisation est nécessaire,
  • les soucis de scalabité concernent assez peu de projets,
  • les bases de données No-SQL nécessitent un apprentissage spécifique entraînant des coûts supplémentaires de maintenance et une formation des exploitants.

Elle présente néanmoins deux champs d’applications convaincants : la scabilité et le prototypage.

Scalabilité

Avec l’avènement des technologies mobiles et l’ouverture des entreprises à ses utilisateurs (et non plus simplement en intranet), les problématiques de volumétrie peuvent devenir sensibles à des acteurs qui n’étaient traditionnellement pas concernés par ce genre de problèmes. Typiquement, les caisses d’assurances sociales, les organismes publics, en ouvrant leur système d’information sur internet doivent gérer des informations de plus en plus hétérogènes et volumineuses.

Dès lors, le No-SQL pourra apporter une réponse au problème de performances rencontré sur les SGBDR classiques (temps de traitements, migrations très complexes, etc.).

Prototypage

Pour construire des solutions rapidement, les bases de données No-SQL sont une excellente solution :

  • leur modèle de données élastique simplifie grandement la maintenance d’un schéma
  • les indexations des colonnes sont automatiques, il n’est pas nécessaire de réfléchir à des soucis de modélisation relationnelle
  • pour concevoir des Web Services REST rapidement. En effet, nombre de No-SQL ont une sortie JSON simple à mettre en œuvre

Les solutions

Les solutions perfos-centric

Les bases No-Sql hébergeant des données volumineuses sont centrée sur la possibilité de clustering. Elles ont une conception reposant sur les notions de table, clé, valeur. Les données sont essaimées à partir d’une chaine de nœuds. Les éléments du cluster ont des relations de dépendance entre eux. Chaque élément possède un seed (une graine en français) (cf. Figure 1). Voici quelques exemples :

mongoDB

Caractéristiques

La plus populaire des bases No-SQL est écrite en C et n’utilise pas de machine virtuelle JAVA. Cette base est idéale pour débuter car elle est à la fois polyvalente et simple. Aussi à l’aise pour le stockage massif de données que pour les développements rapides orienté web. Elle possède également une documentation de premier ordre.

Pros and Cons

+ Puissante et souple

+ Bien pour commencer car instinctive

+ Bien outillée

+ Bien documentée

+ Populaire

Cassandra

Caractéristiques

Cassandra est le projet open source qui découle de la technologie de stockage Facebook, à l’origine il a été écrit spécifiquement pour répondre à la croissance explosive de cette entreprise. Il est assez complexe à configurer, mais il permet d’adresser toutes les situations où la performance et le traitement de la volumétrie est critique. Cassandra est écrit en JAVA.

Pros and Cons

+ Bon pour les problématiques de cluster géant et de performance

– Complexe à configurer. Elle est difficilement  dissociable d’une structure en cluster à plusieurs noeud. Par conséquent, Cassandra n’est pas un produit idéal pour commencer dans le No-SQL .

Hypertable

Caractéristiques

Solution open source dérivée de Google.

Pros and Cons

+ Bon pour les problématiques de cluster géant et de performance.

– Bien que comparable à MongoDB, elle demeure moins populaire et possède une communauté moins active.

Les solutions objet ou graph, solutions web-centric

Ces solutions No-SQL proposent une passerelle entre le monde objet et la persistance. Leurs Apis permettent de stocker simplement un objet structuré qu’il soit java, javascript ou XML. Elles sont particulièrement simples à intégrer dans des projets web. Elles ont la faveur des professionnels qui ont des besoins simples puisqu’elles se mettent vite en œuvre et que les connecteurs techniques vers ces bases de données sont très nombreux.

CouchDB

Caractéristiques

  • Ecrite en C
  • JSON-centric
  • JavaScript

Pros and Cons

+ Bon pour commencer

+ Pensé pour le Web et les WS REST

+ Montée en compétence rapide

– Limitée à des volumétries raisonnables

Les solutions Cloud clés en main

Amazon Simple DBGoogle App Engine

Caractéristiques

Les solutions Amazon Simple DB et No-SQL Google App Engine sont des solutions disponibles respectivement dans les clouds Amazon Elastic Bean et Google App Engine. Chacune d’entre elles possède des Api spécifiques et  place des contraintes au niveau de l’environnement de développement.

Pros and Cons

+ Très simple à mettre en œuvre

+ Très économique

+ Ø besoin de configuration pour monter ses clusters (Juste une carte bleue)

– Couplage avec un éditeur et le code doit être adapté pour changer de technologie. Cependant, la chute de Amazon ou de Google est inimaginable à l’heure actuelle.

Conclusion

Il est vraisemblable que la révolution No-SQL ne sera pas à la hauteur du bruit qu’elle fait, mais :

  • No-SQL pourra vous aider à monter des POC. Par exemple, il peut aider à travailler en AGILE lorsque les besoins évoluent rapidement.
  • No-SQL peut booster les développements Web centric appuyés sur du REST
  • Pour certains clients, No-SQL sera intéressant dans les grosses volumétries: système ouvert sur internet mondial, base de données géographiques, etc.
  • En dernier lieu, les solutions intégrées sur les clouds (amazon simpleDB, Google App Engine) peuvent être des atouts pour réduire les coûts et dans le cas de SAAS (Software As A Service), mais ce cas de figure concerne plutôt les éditeurs de logiciel que les intégrateurs.

Attention cependant, la notion de cohérence événementielle n’est pas applicable dans les environnements critiques (avionique, spatial, centrale nucléaire). Il faut la privilégier pour l’informatique de gestion.

Architecte Technique

2 commentaires
  1. Franck dit :

    « des frameworks furent créés pour étendirent ce type de stockage »
    petite faute… merci de corriger.
    Par ailleurs, article très intéressant.

    Répondre
  2. Franck dit :

    « Elles sont facilement scalables. A titre d’exemple, le plus gros cluster de No-SQL fait 400 To  »
    L’année dernière, j’ai participé à une conférence organisée par Critéo qui présentait ses solutions de base de données. A l’époque, ils disaient gérer dans leur base Hadoop 6 Po et que 2 To de nouvelles données arrivaient chaque jour. On est bien loin des 400 To que vous annoncez.

    Répondre

votre commentaire

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscription newsletter

Ne manquez plus nos derniers articles !