Developpez.com

Le Club des Développeurs et IT Pro

Apprendre à travailler avec HBase - « Faire du NoSQL c'est juste faire des choix intelligents »,

Un tutoriel de Juvénal CHOKOGOUE

Le 2019-01-23 00:43:45, par Malick, Community Manager
Chers membres du club,

J'ai le plaisir de vous présenter ce tutoriel de Juvénal CHOKOGOUE :

Apprendre à travailler avec HBase
« Faire du NoSQL c’est juste faire des choix intelligents »
Avec toute la volumétrie des données dont on dispose aujourd’hui et toutes leurs caractéristiques, c'est impossible de penser « Gestion de données » tel qu'on l'a fait dans le passé, c'est-à-dire centraliser le stockage des données sur un serveur et centraliser le traitement de ces données sur un SGBDR. Dans l’ère du Big Data, l’approche appropriée consiste à distribuer le stockage des données et à paralléliser leur traitement sur les nœuds d’un cluster d’ordinateurs.

Les moteurs de bases de données relationnelles ne sont pas capables d’assurer la cohérence des données sur plusieurs nœuds d’un cluster. Leur capacité de distribution maximale est estimée à cinq nœuds, ce qui est largement insuffisant pour répondre aux exigences de volumétrie des données. Pour dépasser ces limites, de nouveaux SGBD dit "NoSQL" ont vu le jour. La particularité de ceux-ci est qu’ils n'imposent pas de structure particulière aux données, ils relâchent les contraintes qui empêchent les SGBDR de distribuer le stockage des données et sont linéairement scalables. HBase fait partie de cette catégorie de SGBD. Plus précisément, HBase fait partie de la catégorie de SGBD orientéscolonne, et est l’un des tous premiers SGBD NoSQL à large échelle mis sur pied. Créé en fin d'année 2006 par Chad Walters et Jim Kellerman, HBase a rejoint l'écosystème Hadoop en octobre 2007 et en juin 2010, il est devenu un projet prioritaire de la fondation Apache. Lire la suite du tutoriel....

Bonne lecture

Retrouvez les meilleurs cours et tutoriels NoSQL
Retrouvez les meilleurs cours et tutoriels pour apprendre Big Data
  Discussion forum
4 commentaires
  • Drannor
    Membre habitué
    Merci pour ce tutoriel, j'y ai beaucoup découvert.
    J'ai une question concernant la cohérence des données. Une colonne doit-elle appartenir qu'à une famille de colonnes ?
    A la lecture de l'article, j'aurais dis que non vu qu'on souhaite une redondance des données pour un traitement plus rapide.

    Mais si ce n'est pas le cas, la colonne va être dupliquée un certain nombre de fois.
    Qu'est-ce qui se charge de répliquer la mise à jour d'une cellule appartenant à cette colonne dans toutes les famille qui la référence ?
  • jvc35
    Membre éprouvé
    Bonjour @Drannor,

    j'espère que tu vas bien et je te remercie pour ton commentaire.

    Théoriquement, une colonne ne devrait appartenir qu'à une seule famille de colonnes. Mais rien ne t'empêche de la dupliquer dans plusieurs familles. HBase est très différent d'un SGBDR classique. Sa priorité ce n'est pas la cohérence [ACID]comme dans un SGBDR, mais le requêtage de gros volumes de données en un temps de latence le plus faible possible. Même si vous veniez à l'imposer, HBase ne vérifie pas le respect des contraintes d'intégrité reférentielle et sémantiques que vous auriez appliqué sur votre modèle. Ce qui fait que OUI, vous pouvez redonder ou utiliser la même colonne dans plusieurs familles différentes.

    La redondance ne se fait pas sur les colonnes ou sur les cellules, mais sur les familles entières de colonnes. Les données des colonnes de chaque famille (prises ensembles) sont partitionnées horizontalement et persistées sur le HDFS sous forme de HFiles. Ce sont ces HFiles qui sont redondés et distribués.

    J'espère que celà répond à ta question

    Si tu as d'autres interrogations, n'hésites pas.

    Cordialement,

    Juvenal JVC
  • FrenchFrog
    Nouveau Candidat au Club
    Merci pour ce tutoriel. A ma première compréhension d'Hbase, je vois un des avantages est d'avoir un système de versioning directement intégré à la solution. J'ai vu qu'avec le get, il est possible d'avoir une version antérieure d'une valeur et le TimestampsFilter permet même d'obtenir toutes les versions entre 2 dates. Toutefois, est-ce qu'il est facilement possible de remonter dans le temps? C'était de présenter l'état d'une table telle qu'elle était à un instant T? C'est à dire ignorer les insert/update postérieur à cette date et de réintégrer les valeurs qui ont été effacées. Je suppose que c'est plus compliqué se la structure de la table a été altérée mais sinon cela doit être théoriquement possible, non? Néanmoins, je ne vois pas à première vue de fonction native pour cela...
  • SQLpro
    Rédacteur
    Cela est devenu le standard dans la version 2015 de la norme SQL avec la notion de tables temporelles...
    À lire : http://mssqlserver.fr/wp-content/upl...mmentaires.pdf
    Et il existe des opérateurs spécialisés afin de remonter dans le temps à un point précis ou bien dans une période...
    Cela est intégré à SQL Server depuis la version 2017 par exemple.

    A +