Skip to main content

Posts

Showing posts from August, 2011

HBase, versions de données: principes et usage chez Facebook

Lorsque l'on insère une donnée dans HBase, la précédente version, si elle existe, n'est pas écrasée. HBase comme son mentor BigTable peut gérer plusieurs versions du contenu d'une même cellule.
Pour ceux qui se demandent comment exploiter au mieux cette capacité de HBase voici un conseil de Bill Graham sur la mailing list HBase :

"[...] Once someone realizes that you can store multiple values for the same cell, each with a timestamp there can be a natural tendency to think "hey, I can store a one-to-many using multiple version of a cell". That's not the intent of versioned cell values.


Versioned cell values can be thought of as a way to keep a history of change for a single entity that at any given time only has one value. Like keeping track of a state change over time. For a one-to-many relationship (i.e., a user with many events), favor either multiple rows or multiple columns instead."
Pour résumer les versions multiples d'une même cellule ne s…

Mockito ou comment simuler des objets dans les tests unitaires

Enfin un framework qui me réconcilie avec les tests unitaires, non pas que j'étais très fâché, les tests unitaires sont nécessaires mais je ne prenais pas un grand plaisir à les faire.
Je travaille en ce moment sur un projet de client/serveur basé sur les excellents framework Netty et Protobuf et écrire des test unitaires sur ce type de projet très technique peut se révéler être assez difficile.
Pourtant depuis peu je dois confesser que je prend un certain plaisir à en écrire, ceci depuis que j'ai découvert Mockito.

Mockito ça sert à quoi ?
L'un des problèmes avec les tests unitaires ce sont les objets qui sont mis en jeu. Certains objets sont en effet très difficile à instancier, il peut être même impossible de le faire si on est en phase de spécification et que seule l'interface a été écrite.
Il est encore plus difficile de contrôler leur comportement pour recréer des contextes particuliers d’exécution comme recréer un contexte d'erreur.
C'est là qu'inter…

Glossaire à l'usage de ceux qui découvrent HBase

Avant-propos : à l'origine ce glossaire était destiné à consigner pour mon propre usage les définitions et les fonctions des différents éléments qui constituent la base de donnée NoSQL HBase. Il peut s'agir aussi bien de simples clarifications sur la sémantique comme de précisions beaucoup plus techniques sur le rôle joué par certains éléments. Il n'est pas exhaustif et est amené à être mis à jour au fil des évolutions de HBase.

BloomFilter
Filtre permettant d'exclure d'une recherche les FileStore d'une Region. Utilisé par exemple lorsque que l'on cherche la valeur associée à une clé, et que les données de cette clé sont potentiellement éclatées sur le MemStore et/ou plusieurs FileStore. Un BloomFilter permet alors de ne pas avoir à parcourir tous les FileStore présents dans la Region.

Column
Dans HBase la notion de colonne n'a pas réellement de sens.  Le modèle de gestion des données de HBase repose sur une notion de couple {clé, valeur}. Dans HBase l…