Redis, un partenaire idéal pour le data mining

Quand on fait du data mining, on doit bien souvent analyser des quantités astronomiques de données.

Par exemple, pour mon stage de recherche, je dois passer sur 40 semaines de données réseau dont chaque jour représente 5Go de données.

Du coup, si on fait le compte, on a 35Go par semaine, multiplié par 40 semaines, ça fait 1.4To à analyser.

Pas tant que ça me direz-vous et vous n’aurez pas tord.
Mais un programme qui analyse autant de données, les ingère, les agrège, les triture et les torture demandera du coup pas mal de RAM et de performance.

D’autant qu’une fois les données analysée, il faut en faire quelque chose mais si on veut en faire quelque chose, on doit aussi les garder en mémoire.

On est donc assez vite confronté à des problèmes de place en RAM.

Et c’est là que Redis entre en jeu pour nous donner un grand coup de main.

En effet, cette base de données clef-valeur très simple et performante (in memory persistante) va nous permettre de sauver nos données et leur état à chaque moment de l’exécution et donc de les libérer de la mémoire quand on en a momentanément plus besoin.

Pour ce faire, il suffit de dumper les données en JSON et de les sauver dans Redis.

Puis, quand on veut les récupérer, on reload le JSON de Redis, on le transforme en objets et le tour est joué.

Cette astuce m’a encore sauvé la mise aujourd’hui.

En effet, après 30 semaines analysées, ma machine est arrivée en out of memory et a tué mon processus Python. 10 heures de temps de calcul perdu me direz-vous ?

Et bien non ! Car ayant sauvé mes résultats semaine par semaine dans Redis, j’ai pu les récupérer comme si de rien n’était !

Mieux encore, j’ai pu relancer le calcul à partir de la semaine sur laquelle il a planté. Pas besoin donc de tout recommencer.

Bref, en 5 mots comme en 10000, Redis c’est bien, mangez-en tous les jours en particulier si vous faites du data mining (remarquez que Redis propose plein d’autres fonctionnalités sympas : pub/sub, …)

Laisser un commentaire

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