Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Responsable Java

    Introduction à Cassandra : installation, prise en main rapide et outils d'administration
    Bonjour,

    Je vous propose un premier article d'une série de cinq sur la base de données NoSQL Apache Cassandra. Cet article présente brièvement les fonctionnalités, l'installation, une première prise en main et quelques outils d'administration.

    Le lien de l'article est ici : http://mbaron.developpez.com/nosql/c...dministration/

    Profitez de cette discussion pour donner vos commentaires

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  2. #2
    Membre chevronné
    Cette série d'articles a l'air prometteuse. Vivement la suite...
    J'appelle "Point Traroth" le moment dans une discussion où quelqu'un parle des Bisounours. A partir de ce moment, toute discussion sérieuse devient impossible, puisque la légitimité d'une des parties pour exposer son point de vue est mise en cause. C'est juste un anathème, un moyen de décrédibiliser les autres sans avoir à discuter.

  3. #3
    Membre actif
    Ça fait longtemps que j'ai pas vu une techno qui me passionne autant que Cassandra.

    J'ai un projet à monté et les problèmes que je rencontre à l'heure actuelles sont:
    - l'order by (cette notion en CQL de pouvoir faire qu'un order by sur une seul colonne défini à la création de la table est très contraignante mais logique au vu de comment est construit Cassandra et des performances obtenu)
    - peur de la panne!! (c'est pas MySQL qui tourne depuis 10 ans... sans broncher)

    J'ai hâte aussi de lire les articles suivants, y'a tellement à apprendre sur Cassandra Y'a tellement peu de chose à son sujet (les seuls articles valables hormis ceux sur developez.net proviennent de quelques blog et de http://planetcassandra.org/Learn/SlideShare )

    En tout cas, merci beaucoup.

  4. #4
    Responsable Java

    Bonjour,

    Merci pour tes commentaires.

    J'ai vu qu'il allait y avoir pas mal de nouveautés sur CQL 2 (http://www.datastax.com/dev/blog/cql...-cassandra-2-0)

    Pour les autres articles, il faut que je trouve le temps de continuer.

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  5. #5
    Rédacteur

    J'ai fait il y a pas longtemps un bench sur un cluster de 3 noeuds sur elasticsearch, mongodb, cassandra et mysql pour une utilisation en tant qu'entrepot de log et j'ai été plutôt déçu par l'utilisation de Cassandra (prise en main et perfs).
    Je suis donc impatient de lire tes articles pour voir si j'avais raté quelque chose.

  6. #6
    Responsable Java

    Bonjour Hugo,

    Pour l'instant tu as fait plus que moi.

    De mon côté, nous avons expérimenté un cluster de 5 machines sur une structure de données assez simple (une seule column familly dont le nombre de colonnes était dynamique). L'insertion par parquet de million s'est faite sans problème. Nous avons vu clairement la linéarité de Cassandra au fur et à mesure que nous insertions et que nous ajoutions des serveurs.

    Par contre, le gros soucis venait du select. Nous sommes clairement en apprentissage sur ce NoSQL. Trop d'habitude du relationnel. En plus avec CQL c'est assez trompeur, on a envie de faire du SQL

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  7. #7
    Membre actif
    le ORDER BY me manque...

    franchement, j'y arrive pas, j'ai passé 2 jours à trouver un moyen de pouvoir filtrer et impossible de faire un ORDER BY sur ce que je souhaite.

    c'est pas simple... Si quelqu'un à une idée?
    Je souhaite resté en random, mais je souhaite aussi pouvoir faire un trie.
    Normalement c'est possible, mais c'est l'organisation qu'il doit être fait...

    Cas concret, j'ai une "table" avec des images (id, nom, taille, date d'insertion, date de mise à jours, si_visible...)
    et j'aimerai pouvoir faire un select de mes images en fonction de si_visible et de les trier par date de mise à jours

    jusqu'à présent, j'y arrive pas sans passer en orderedbytemachin.

    Alors je me sus dit, tiens, on crée une autre "table" avec pour info:
    id_image, date de mise à jours, si_visible) et on fait une clé qui est si_visible puis id_image. Et quand je fais un select dessus, j'utilise les ID renvoyé pour récupéré mes images dans ma "table" images.
    mais quand je fais mon select dessus il me dit toujours pareil:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Bad Request: ORDER BY is only supported when the partition key is restricted by an EQ or an IN.


    Sniff, c'est tout ce qui me manque...

    Il est pourtant possible de le faire en CQL3 mais dans des cas particuliers, si quelqu'un voit comment faire dans mon cas.

    J'ai peur que Cassandra ne soit pas utilisable dans mon cas (et pourtant, hormis ça c'est le seul point qui manque)

    ps: le pire c'est que ça doit être tout bête; mais personne en parle vraiment...

  8. #8
    Membre régulier
    Citation Envoyé par dtcSearch Voir le message
    le ORDER BY me manque...

    franchement, j'y arrive pas, j'ai passé 2 jours à trouver un moyen de pouvoir filtrer et impossible de faire un ORDER BY sur ce que je souhaite.

    c'est pas simple... Si quelqu'un à une idée?
    Je souhaite resté en random, mais je souhaite aussi pouvoir faire un trie.
    Normalement c'est possible, mais c'est l'organisation qu'il doit être fait...

    Cas concret, j'ai une "table" avec des images (id, nom, taille, date d'insertion, date de mise à jours, si_visible...)
    et j'aimerai pouvoir faire un select de mes images en fonction de si_visible et de les trier par date de mise à jours

    jusqu'à présent, j'y arrive pas sans passer en orderedbytemachin.

    Alors je me sus dit, tiens, on crée une autre "table" avec pour info:
    id_image, date de mise à jours, si_visible) et on fait une clé qui est si_visible puis id_image. Et quand je fais un select dessus, j'utilise les ID renvoyé pour récupéré mes images dans ma "table" images.
    mais quand je fais mon select dessus il me dit toujours pareil:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Bad Request: ORDER BY is only supported when the partition key is restricted by an EQ or an IN.


    Sniff, c'est tout ce qui me manque...

    Il est pourtant possible de le faire en CQL3 mais dans des cas particuliers, si quelqu'un voit comment faire dans mon cas.

    J'ai peur que Cassandra ne soit pas utilisable dans mon cas (et pourtant, hormis ça c'est le seul point qui manque)

    ps: le pire c'est que ça doit être tout bête; mais personne en parle vraiment...
    'order by' marche seulement pour les 'clustering keys' , avec des bon filtres et qu'apres que tes rows soit trouvees avec la partition key. Comme indique ton message d'erreur il faut que t'ajoute la contrainte sur ta partition key. Attention, ce genre d'operations ne guarantit pas des perfs canon d'habituelle de Cassandra.

    Sur la partition key, comme son nom indique, elle sert a distribuer (partition) tes rows parmi les noeuds de Cassandra. Comme tu utilise un RandomPartioner les rows sont distribues de maniere "aleatoire" via un hash -> order by un partition key n'est pas possible par conception.

    Comme expliquer plus haut dans cette discussion, il ne faut pas prendre Cassandra comme du RDBMS (si non Oracle ou MySQL ferait bien l'affaire). Je te conseille de regarder les videos de DataStax/PlanetCassandra sur "data modeling" sur Youtube...

  9. #9
    Membre régulier
    Citation Envoyé par hugo123 Voir le message
    J'ai fait il y a pas longtemps un bench sur un cluster de 3 noeuds sur elasticsearch, mongodb, cassandra et mysql pour une utilisation en tant qu'entrepot de log et j'ai été plutôt déçu par l'utilisation de Cassandra (prise en main et perfs).
    Je suis donc impatient de lire tes articles pour voir si j'avais raté quelque chose.
    De manière générale, Cassandra ne bat pas mongoDB tant que tes donnes tiennent encore dans la RAM. As-tu fais des tests avec des données plus consequentes?