2 votes

Quelle est la meilleure performance, indexedslicesquery ou rangeslicesquery d'hector ?

Lorsque j'utilise Cassandra, j'ai été confronté à un goulot d'étranglement au niveau des performances de lecture de Cassandra.

Il existe deux façons de lire mes données, qui sont constituées d'un grand nombre de clés de ligne. La première consiste à utiliser les index et l'API de requête par tranches indexées. La seconde utilise l'api rangeslicequery, car les lignes sont des séquences.

Lorsque j'utilise des index, il y a toujours une timeoutexception. Je me demande alors si rangeslicequery est plus performant ?

Le cf avec 200k lignes et 3m colonnes. La requête avec 20k lignes à récupérer.

Le cache de la clé est de 30000.

2voto

danmbyrd Points 86

Je pense que dans ce cas, il est préférable d'utiliser range_slice_query. Elle diffuse les données sur le disque par morceaux plutôt que d'effectuer des lectures aléatoires pour chaque entrée indexée (je pense que c'est ainsi que fonctionne get_indexed_slices). La seule façon d'être sûr est d'essayer les deux et de les comparer.

Pour mettre fin aux délais d'attente, vous pouvez soit réduire le nombre d'enregistrements renvoyés par chaque requête (le paramètre "count"). http://wiki.apache.org/cassandra/API/ ) ou augmentez la durée du délai d'attente que vous utilisez avec hector.

Avez-vous envisagé d'utiliser hadoop pour faire ce que vous essayez de faire ? 20 000 rangs, c'est beaucoup, il serait probablement mieux adapté à votre tâche. Il existe un InputFormat fourni avec le code source de Cassandra qui peut être utilisé. Il utilise des requêtes de plage en dessous, qui vérifient à l'avance quel nœud interroger pour chaque plage de jetons. C'est probablement la façon la plus rapide de faire votre requête. Voici la documentation à ce sujet http://wiki.apache.org/cassandra/HadoopSupport .

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