48 votes

Cassandra Client Java de l'API

J'ai récemment commencé à travailler avec Cassandra Base de données. Maintenant, je suis dans le processus de l'évaluation qui Cassandra client nous devrions aller de l'avant avec.

J'ai vu plusieurs post sur stackoverflow sur lesquels le client à utiliser pour Cassandra, mais aucun n'a très de réponse définitive.

Mon équipe m'a demandé de faire quelques recherches sur ce et de venir avec certains pros and cons pour chaque Cassandra Client API's en Java.

Comme je l'ai mentionné, j'ai récemment été impliqué avec Cassandra donc pas beaucoup d'idée de pourquoi certaines personnes choisissent Pelops client et pourquoi certaines Personnes vont avec Astyanax et certains autres clients.

Je sais bref des choses au sujet de chaque Cassandra client par laquelle je suis capable de faire son travail et de commencer la lecture et à l'écriture de Cassandra base de données.

Ci-dessous les informations que j'ai jusqu'ici.

CASSANDRA API

  • Hector (Prêt À La Production)
    Le plus stable de l'Api Java, prêt pour le prime-time.

  • Astyanax (Le Haut et Comer)
    Propre API Java à partir de Netflix. Il n'est pas aussi largement utilisé comme Hector, mais il est solide.

  • Kundera (L'NoSQL ORM)
    JPA conforme, ce qui est pratique lorsque vous souhaitez interagir avec Cassandra via des objets.
    Cette limite vous un peu dans le sens que vous ne serez pas en mesure d'avoir nombre dynamique de colonnes/noms, etc. Mais il ne vous permet pas de port sur Orm, ou la centralisation de stockage sur Cassandra pour plus d'utilisations traditionnelles.

  • Pélops
    Je n'ai utilisé que Pélops brièvement. C'était un simple API, mais ne semblent pas à l' avoir l'élan derrière elle.

  • PlayORM (ORM sans contraintes?)
    Je viens d'entendre à ce sujet. On dirait qu'il essaie de résoudre l'impédance l'inadéquation entre le traditionnel JPA Orm et NoSQL par l'introduction de JQL. Il semble prometteuse.

  • Thrift (Éviter De Moi!)
    C'est le "bas niveau" de l'API.

Ci-dessous sont nos priorités pour décider Cassandra Client-

  • D'abord, les priorités sont: la faible latence de la surcharge, Asynch API, et la fiabilité/stabilité pour un environnement de production.
    (par exemple, une interface utilisateur plus conviviale de l'Api qui peut être dû à la DAL qui enveloppe le client).
  • Le regroupement de connexion et la partition de sensibilisation sont certains de l'autre bonne fonctionnalité.
  • Capable de détecter tous les nouveaux nœuds qui ont été ajoutés.
  • Un bon Soutien ainsi (comme indiqué par le doyen ci-dessous)

Quelqu'un peut-il fournir quelques réflexions à ce sujet? Et aussi les avantages et les inconvénients pour chaque Cassandra Client et aussi le client qui peut répondre à mes besoins seront d'une grande aide.

Je crois que, surtout, je vais tourner autour de Astyanax client or New Datastax client that uses Binary protocol je suppose base sur mes recherches jusqu'à présent. Mais n'ont pas de certaines informations pour sauvegarder ma recherche, et de le présenter à mon équipe.

Toute comparaison entre Astyanax client et de Nouvelles Datastax client(qui utilise un nouveau protocole Binaire) sera d'une grande aide.

Il sera d'une grande aide pour moi dans mes recherches et obtenir beaucoup de connaissances sur ce de différentes personnes qui ont utilisé différents clients dans le passé.

Mise à jour:-

Je n'ai toujours pas obtenu de réponse complète. Je suis à la recherche pour la comparaison entre presque populaire Cassandra Client de l'API en Java. Et que l'on est à la recherche prometteur.

23voto

Lyuben Todorov Points 7885

L'épargne est de plus en plus de l'héritage de l'api:

Tout d'abord, vous devez être conscient que l'API d'Épargne ne va pas pour obtenir de nouvelles fonctionnalités ; il est là pour assurer la compatibilité ascendante, et n'est pas recommandé pour de nouveaux projets.
- paul

Alors j'aimerais éviter d'Épargne en fonction Api (l'épargne ne sont conservés pour assurer la compilation).

En disant que si vous avez besoin d'une épargne en fonction API, j'irais pour Astyanax. Astyanax est très facile à utiliser (par rapport à d'autres aubaines Api mais ma propre expérience est que Datastax du pilote est encore plus facile).

Donc, vous devriez jeter un oeil à Datastax de l' API (et dépôt Github)? Je ne sais pas si il y a toutes les versions compilées de l'API pour les télécharger, mais vous pouvez facilement construire avec maven. Aussi, si vous regardez le dépôt Github de journaux, il subit très fréquentes mises à jour.

Le pilote fonctionne exclusivement avec CQL3 et est asynchrone mais soyez averti que Cassandra 1.2 est la première version prise en charge.

Performance
Astyanax est d'aubaines de base et datastax du lecteur est le protocole binaire. Voici les derniers benchmarks que j'ai pu trouver entre l'épargne et la cql (remarque ce ne sont vraiment pas à jour). Mais en toute équité, le peu de différence de performance indiqués dans ces cas-tests rarement en question.

Asynch soutien
Datastax de asynch de soutien est toujours influencé l'avantage sur Astyanax (Netflix essayé de mise en œuvre , mais a décidé de ne pas).

La Documentation
Je ne peux pas vraiment argumenter contre Netflix du wiki. La documentation est excellente et sa mise à jour assez fréquemment. Leur wiki comprend des exemples de code, et vous pouvez trouver des tests dans le code source si vous avez besoin de voir le code au travail. J'ai eu du mal à trouver toute la documentation de la Datastax pilote toutefois de test sont fournis dans le git hub référentiel de sorte que c'est un point de départ.

Aussi jeter un oeil à cette réponse (bien.. pas mon un de toute façon), Il semble dans certains des avantages/inconvénients de l'économie et de CQL.

8voto

Valchkou Points 41

Je recommande Datastax pilote java pour Cassandra http://www.datastax.com.

Pour JPA comme support d'essayer mon outil de cartographie. https://github.com/valchkou/cassandra-driver-mapping

Annotation conduit Pas de fichiers de mappage, pas de scripts ou de fichiers de configuration. Pas besoin de scripts DDL. Schéma automatiquement synchronisé avec la définition de l'entité.

L'utilisation de l'échantillon:

   Entity entity = new Entity();
   mappingSession.save(entity);
   entity = mappingSession.get(Entity.class, id);
   mappingSession.delete(entity); 

disponible sur maven central

   <dependency>
      <groupId>com.valchkou.datastax</groupId>
      <artifactId>cassandra-driver-mapping</artifactId>          
    </dependency>

3voto

Dean Hiller Points 5292

Je voudrais également ajouter un soutien décent ainsi. Nous publions les réponses à playORM tout le temps sur un débordement de pile ;). Il est également sur le point de commencer à soutenir mongodb(le travail est presque fini) donc, tous les clients peuvent s'exécuter sur mongodb ou cassandra. Il a son propre langage de requête tel que ce port fonctionne très bien. Vous avez toujours accès à la crue astyanax interface trop quand vraiment besoin de la vitesse.

Aussi, votre remarque sur asynch...épargne, auparavant, n'était pas en charge asynch donc pas de clients ne soit qu'ils ont généré les aubaines code. Depuis cela a changé, je ne sais pas d'un client qui a ajouté le asynch trucs dans.

Je sais hbase est une asynch client si. De toute façon, juste pensé que je voudrais ajouter mes 2 cents dans le cas où ça aide un peu.

EDIT: j'ai été récemment dans le cassandra-thrift code source généré et il n'est pas une très bonne api pour async développement avec send et recv() la méthode, mais vous ne savez pas à quel moment appeler le recv méthode. Aaron morton sur cassandra utilisateur de la liste dispose d'un blog sur la façon dont vous pouvez vraiment le faire, mais il n'est pas propre du tout...d'avoir à prendre le sélecteur de l'épargne en profondeur et faire quelques trucs afin de savoir quand appeler le recv méthode...de jolies choses désagréables.

plus tard, Dean

2voto

Richard Points 5409

J'ai utilisé Hector, Astyanax et de l'Épargne directement. J'ai aussi utilisé le client Python PyCassa.

Les caractéristiques que je trouve important et de différenciation ont été:

  • La facilité d'utilisation de l'API
  • Composite de la colonne de soutien
  • Le regroupement de connexion
  • La latence
  • La Documentation

L'un des principaux problèmes est d'obtenir les types corrects. Vous voulez être en mesure de passer de longs, des Cordes, byte[], etc.. à la Fois Hector et Astyanax résoudre ce problème en utilisant Sérialiseur objets. Dans Astyanax vous préciser plus haut dans la chaîne de sorte que vous devez les spécifier moins souvent. Dans Hector la syntaxe est souvent très maladroit et difficile à adapter si vous modifiez votre schéma.

Depuis Python a les types de dynamiques, il est beaucoup plus facile de traiter avec cette PyCassa. Puisque ce n'est pas une option pour vous, je ne vais pas en dire beaucoup à ce sujet, mais je l'ai trouvé plus facile à utiliser (et de loin) mais aussi très lent.

Composite de la colonne de soutien est très confus dans Hector. Astyanax a des annotations afin de simplifier grandement cela.

Autant que je sache, le regroupement de connexion est le même pour Hector et Astyanax. Les deux éviter abattu hôtes et découvrir de nouveaux ajoutés à l'anneau. Ces deux caractéristiques crucial pour la fiabilité et de la maintenabilité. Pélops semble avoir ces fonctionnalités, mais je n'ai jamais essayé.

Une différence clé entre Astyanax et Hector est le temps de latence des optimisations. Astyanax a la capacité de parcours de lecture et d'écriture d'une réplique du nœud, pour essayer d'éviter un supplément de réseautage hop. Cela peut réduire le temps de latence de quelques millisecondes.

Au dernier regard, Astyanax avait une mauvaise documentation, mais il semble que beaucoup amélioré maintenant.

Le seul avantage d'Hector, je peux voir aujourd'hui, c'est qu'il est beaucoup plus largement utilisé de manière sans doute moins buggé. Mais Astyanax a une meilleure fonctionnalité de l'ensemble.

1voto

Karthik Sankar Points 121

J'ai une recommandation similaire comme Valchkou. DataStax java CQL pilote, est très facile à utiliser. J'ai essayé d'astyanax, kundera et buffalosw de playorm. Astyanax est très faible et qu'un peu complexe. Kundara et playorm sont génériques Orm pour les bases de données nosql. Et en tant que tels, ils sont complexes à configurer et obtenir commencé.

Datastax api sont à peu près semblable à un pilote JDBC. Donc, vous avez à écrire plusieurs lignes de code pour charger et stocker des entités. Donc, c'était une sorte d'héritage pour moi. Ainsi, écrit mon propre Objet Java Mappeur, qui est construit autour de datastax cql pilote. Check it out à sa page github.

https://github.com/w3cloud/cassandra-jom

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X