La fondation Apache sort Cassandra 0.6

Posté par  (site web personnel) . Édité par Benoît Sibaud. Modéré par Florent Zara.
Étiquettes :
20
16
avr.
2010
Base de données
Le NoSQL est un mouvement qui vise à offrir des bases de données dont les caractéristiques sont différentes des bases de données relationnelles, afin de laisser aux développeurs le choix. Par exemple, une de ces caractéristiques est la "mise à l'échelle" (scalability) : certains très gros sites Internet ont besoin de gérer des bases de données conséquentes et dont la taille ne cesse de croître, sans pour autant voir leurs coûts de fonctionnement exploser. Cassandra vient justement répondre à ce besoin.

Cassandra est un stockage structuré de clés-valeurs, distribué, acceptant facilement la montée en charge et résistant aux pannes. Initialement développé par Facebook, le projet a été libéré sous licence Apache 2.0 et placé dans les mains de la fondation Apache. Il a depuis connu un succès grandissant : en plus de facebook, twitter, digg, reddit et bien d'autres ont annoncé qu'ils utilisent Cassandra.

Cassandra bénéficie de beaucoup d'activités : la version 0.6 est sortie il y a quelques jours et apporte des fonctionnalités très intéressantes (plus de détails dans la seconde partie de la dépêche). Cassandra participera aussi au Google summer of code sous le chapeau de la fondation Apache. Les nouveautés de la version 0.6
  • Prise en charge du map/reduce avec Hadoop et Pig : les tâches hadoop peuvent aller chercher les informations directement depuis Cassandra, et il est possible de coordonner Hadoop et Cassandra pour que le traitement se fasse sur le nœud qui détient les données.
  • Cache intégré par élément (integrated row cache) : les utilisateurs de Cassandra utilisaient souvent une couche de cache séparée. Le cache a été maintenant intégré, ce qui va simplifier les architectures.
  • Augmentation des performances : un travail conséquent a permis d'améliorer de 30% les performances sur des cas d'utilisation fréquents (par rapport à la version 0.5).
  • Amélioration de l'API thrift
  • Gestion de l'authentification : pour le moment, cette gestion est encore expérimentale

On en parle également dans les conférences
Johnathan Ellis viendra ainsi parler de Cassandra à la conférence no:sql(eu) la semaine prochaine.
Vous pouvez aussi retrouver les planches de la présentation de Gary Dusbabek (Rackspace).

Aller plus loin

  • # Fondation Apache et Java

    Posté par  (site web personnel) . Évalué à 3.

    Plus je vois de projets de la fondation Apache, plus je suis intrigué.

    Cette organisation a commencé avec le serveur web Apache HTTPD. Et on dirait que tous leurs autres projets sont en Java et n'ont rien à voir avec leur projet d'origine.
    • [^] # Re: Fondation Apache et Java

      Posté par  . Évalué à 5.

      Il est vrai que l'immense majorité des projets Apache semble développée en Java. Malgré tout, ce n'est pas le cas de tous (je pense notamment à CouchDB, en Erlang).

      Pour une liste détaillée, il faudra se référer à cette page : [http://projects.apache.org/indexes/language.html].

      Visiblement, si j'en crois Wikipédia [http://en.wikipedia.org/wiki/Apache_Foundation] En, les projets de la fondation Apache ont en commun :
      The Apache projects are characterized by a collaborative, consensus-based development process and an open and pragmatic software license. Each project is managed by a self-selected team of technical experts who are active contributors to the project.[...]
      Among the ASF's objectives are to provide legal protection to volunteers working on Apache projects, and to prevent the Apache brand name from being used by other organizations without permission...
    • [^] # Re: Fondation Apache et Java

      Posté par  . Évalué à 8.

      subversion est en C, spam assassin en Perl, couch db en Erlang ;)

      La fondation Apache a pour but d'aider au développement de projets open source en fournissant les moyens techniques et légaux (pour faire court). Elle héberge les projets qu'on lui donne (via un passage via l'incubateur pour ne retenir que ceux qui on un publique et une maturation suffisante). Le fait est que sont excellence se trouve dans les projets web & Java et comme les chiens n'attirent pas les chats on lui en a donné beaucoup.

      Bref un projet Apache c'est comme un projet GNU: choix du projet, licence imposée, cession de copyright en contrepartie de moyen techniques, logistiques et légaux.
    • [^] # Re: Fondation Apache et Java

      Posté par  . Évalué à 3.

      Bonjour,

      Travaillant moi même sur Cassandra pour un projet personnel, je suis vraiment ravi de l'utilisation de Java dans les projets d'Apache. On peut reprocher beaucoup de choses à Java (pas tant que cela en fait ...) mais l'utilisation de Java dans des tâches aussi crtiques qu'une base de données a bien des avantages : stabilité, résistance aux avaries graves, etc...). Je suis plus rassuré de voir se profiler Cassandra 0.6 en java qu'en C honnêtement.

      Après, ce qu'il faut voir ce sont les performances, et pour l'utiliser je peux t'affirmer que les performances sont au rendez-vous et l'insertion, suppression se font dans l'ordre de quelques dizaines microsecondes pour des bases de données de près de 13 Go (décompressé). Si ça intéresse les puristes du sujet, il faut chercher bloom filters pour comprendre (en partie) d'où vient cette rapidité !
  • # La Scalability

    Posté par  (site web personnel) . Évalué à 4.

    n'est pas la mise à l'échelle, mais plutôt la capacité à monter en charge (ou plus généralement à s'adapter à la charge). Une autre traduction mot à mot est le passage à l'échelle qui n'est pas beaucoup plus informatif ou pertinent que la mise à l'échelle...
    • [^] # Re: La Scalability

      Posté par  . Évalué à 4.

      Sauf que le passage à l'échelle est une bonne traduction, alors que montée en charge est incomplet. Dans le cas de ce programme précis, ça suffit, mais (au hasard) si je parle de calcul intensif et que je demande quelle est la « scalabilité » d'un programme donnée, je demande en fait à quel point il est parallélisable (i.e. à quel point il peut passer d'une échelle de x processeurs à 10x processeurs).
      • [^] # Re: La Scalability

        Posté par  . Évalué à 1.

        « scalability » est un des termes anglais qui me posent le plus de problème dans une traduction.
        J'ai tendance à choisir en fonction du contexte entre:

        * variabilité d'échelle
        * variabilité dimensionnelle
        * extensibilité
        * évolutivité

        J'utilise plutôt un des deux premiers pour des documents techniques ou des deux derniers pour des textes plus «grand public» ou «décideur pressé».
        • [^] # Re: La Scalability

          Posté par  . Évalué à 3.

          Alors qu'en utilisant « passage à l'échelle », on ne précise pas de quelle échelle on parle, ce qui est bien pratique. ;-)

          Par exemple, si l'échelle considérée est la charge, alors « passer à l'échelle » signifie bien « correctement monter en charge ». Dans le cas de programmes composé de calculs parallèles, passer à l'échelle peut se faire de deux façons :
          1/ On augmente la taille du problème à résoudre, et l'algorithme fait que plus il y a de détails (pour une simulation par exemple), plus on peut ajouter des unités de calcul.
          2/ On rajoute des unités de calcul, et l'algorithme étant intrinsèquement parallèle, alors le temps de calcul est bel et bien réduit (quasi-)proportionnellement au nombre d'unités de calcul disponibles.

          Bref,  « passage à l'échelle », c'est bon, mangez-en.
  • # Cassandra chez twitter

    Posté par  (site web personnel) . Évalué à 2.

    J'ai juste un petit lien sur le sujet, une nouvelle présentation "Scaling Twitter with Cassandra" : http://www.slideshare.net/ryansking/scaling-twitter-with-cas(...)
  • # Licence Apache 2.0

    Posté par  . Évalué à 2.

    Sur la page Wikipédia, [http://fr.wikipedia.org/wiki/Licence_Apache], on peut lire : « Toute modification dans le code source original doit faire l'objet d'une description précise de ce qui a été modifié. »

    Je pense que c'est faux : je ne vois cette clause nul part dans la licence (v 2.0)

    Est-ce que vous confirmez ?
    • [^] # Re: Licence Apache 2.0

      Posté par  (site web personnel) . Évalué à 2.

      Dans la partie 4. Redistribution, il y a écrit :

      > 2. You must cause any modified files to carry prominent notices stating that You changed the files;

      En gros, l'idée est qu'une personne qui lirait le code puisse savoir ce qui vient de la version originale et ce qui a été modifiée depuis. Par contre, je ne pense pas qu'il y ait besoin de décrire précisément ce qui a été modifié (mais je ne suis pas juriste, ni même très compétent dans ce domaine).
      • [^] # Re: Licence Apache 2.0

        Posté par  . Évalué à 3.

        Bon j'ai modifié la page : « Chaque fichier modifié doit clairement mentionner le fait qu'il a été modifié. »
        N'hésitez pas à la rectifier si c'est faux.
  • # Cas d'utilisation de Cassandra ?

    Posté par  (site web personnel) . Évalué à 2.


    Bonjour,


    Il m'a été signalé que

    (1) Cassandra était plus d'actualité pour manipuler des To et que pour des Go, il valait mieux se tourner vers MySQL Cluster par ex.

    (2) Cassandra fonctionnait mieux quand le rapport "lecture/écriture" était de 10, voire même de 100 !


    (1) j'ai tendance à penser : qui peut le plus (Cassandra) peut le moins.

    (2) Est-ce qu'il faut vraiment un tel ratio de 100 pour que Cassandra soit d'actualité ?


    Merci de votre aide.
    • [^] # Re: Cas d'utilisation de Cassandra ?

      Posté par  (site web personnel) . Évalué à 4.

      > (1) j'ai tendance à penser : qui peut le plus (Cassandra) peut le moins.

      Oui, mais il faut être prêt à accepter certains compromis, notamment le fait qu'appendre une nouvelle façon de structurer ses données peut prendre du temps.

      > (2) Est-ce qu'il faut vraiment un tel ratio de 100 pour que Cassandra soit d'actualité ?

      Cela peut sembler important, mais cela reste un ratio assez faible pour des applications web. Cassandra s'en sort très bien sur les écritures, donc même un ratio encore plus faible ne va pas l'handicaper.
      • [^] # Re: Cas d'utilisation de Cassandra ?

        Posté par  (site web personnel) . Évalué à 2.


        Plus précisément :


        * Quid de l'utilisation de Cassandra pour définir un cache de données distribué ?

        Imho, Cassandra possède pas mal de fonctionnalités pour définir un tel cache. Le top sera d'avoir un cache associé, coté client.

        Est-ce que le "•Cache intégré par élément" dont il est question coté v0.6 est bien un cache associé coté client ?
        Est-il possible de définir une politique de synchronisation/raffraichissement pour un tel cache coté client ?

        Y a-t-il eu déjà des cas d'utilisation avérés de Cassandra comme cache distribué ?


        * Quid de l'utilisation de Cassandra comme grille de données ("data grid") ?

        Pareil, il me semble que l'ajout de fonctionnalités dans Cassandra, au fil du temps, va faire de Cassandra une possible grille de données.

        Y a-t-il eu déjà des cas d'utilisation avérés de Cassandra comme grille de données ?


        Merci
        • [^] # Re: Cas d'utilisation de Cassandra ?

          Posté par  (site web personnel) . Évalué à 2.

          L'utilisation de Cassandra comme cache distribué ou grille de données dépasse mes compétences. Le mieux serait que tu demandes directement sur la mailing-list users : http://cassandra.apache.org/#lists (en bas de la page).
        • [^] # Re: Cas d'utilisation de Cassandra ?

          Posté par  . Évalué à 2.

          je pense qu'il y a une réponse simple : OUI
          Mais pas de façon "brute" il faut implémenter des database Sweepers et ColumnFamily de support pour ça. Théoriquement je suis convaincu que c'est possible, ça devrait avoir des bonnes performances, mais pas autant qu'un truc que tu codes toi même si tu veux mon avis.

          Est-il possible de définir une politique de synchronisation/raffraichissement pour un tel cache coté client
          => Là j'avoue ne pas bien comprendre...

          Y a-t-il eu déjà des cas d'utilisation avérés de Cassandra comme cache distribué ?
          => Pas que je sache, mais l'utilisation de Cassandra est assez nouvelle, donc... qui sait !

          J'en profite pour faire connaître mon blog qui va être (en partie) dédié à Cassandra. j'ai pas mal galéré au début pour trouver des informations et je vais essayer de résoudre les problèmes que j'ai rencontrés lors de mon apprentissage.

          http://victor-kabdebon.blogspot.com/

          Vous pouvez y poser des questions sans problème, je ne suis pas expert, mais j'espère pouvoir résoudre certaines questions. (Vous pouvez aussi m'envoyer un mail au besoin).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.