Rss Feed

Apache Cassandra

Dans le cadre d’un projet interne R&D nous avions besoin d’un système permettant de stocker un nombre très important de données tout en conservant des temps d’accès très court pour les recherches. Après plusieurs essais, il était évident qu’une base de donnée relationnelle standard comme MySQL ne pouvait répondre à notre besoin : même avec un bon choix d’index les ressources matérielles demandées pour gérer des tables contenant des centaines de millions d’enregistrement étaient trop importantes.

Nous nous sommes donc tournés vers Apache Cassandra à l’origine développé par Facebook derrière un index lucene.

Architecture de la base Apache Cassandra :

- un keyspace dans cassandra contient un ensemble non fini de lignes

- chaque ligne posséde 2 familles de colonnes

- chaque famille de colonne possède un ensemble non fini de super colonnes (en moyenne 30 000 super colonnes)

- chaque super colonne possède un ensemble non fini de colonnes (en moyenne une cinquantaine)

- chaque ligne possède un index Lucene qui lui est propre

- chaque valeur de colonne est indexée dans Apache Lucene

En ne comptant qu’une seule famille de colonne et une centaine de lignes on arrive déjà à 150 000 000 de cellules.

Cassandra étant un système NoSQL, il n’est pas possible de faire des requêtes complexes sur les valeurs stockées et ce n’est d’ailleurs pas le but. Grâce à la conjonction de Lucene et d’une API JAVA complète que nous avons développé en interne cela devient un non problème, Lucene offrant des fonctions très pratiques telles que le must/should, le classement par pertinence.

Les tests effectués révèlent des temps d’accès aux données très rapides (de quelques millisecondes) malgré le quantité, là où MySQL Cluster mettait plusieurs secondes.

Partager :
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • LinkedIn
  • Technorati
  • Twitter

Articles sur le même sujet :

  1. Apache CXF et Hibernate hbm2java

Commentaires

  1. switcherdav says:

    Excellent cet article, j’ai lu quelque chose sur cassandra sur le site du zéro et ça a l’air effectivement intéressant.

    Et puis le concept est loin d’être nouveau, par exemple il existe natural adabase, une base de données non relationnelle mainframe avec des performances supérieurs au bases IBM (relationnelles)

    Après, comme le dit si justement votre article, tout dépend du besoin

Laisser un commentaire

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word