2010-03-22 5 views
2

Lorsque vous utilisez Perl Net::Cassandra::Easy le code suivant permet de récupérer des colonnes col[1-3] de lignes row[1-3]:Comment récupérer toutes les colonnes pour toutes les lignes correspondantes avec Net :: Cassandra :: Easy de Perl?

$result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', byname => ['col1', 'col2', 'col3'); 

Le SQL correspondant serait:

SELECT col1, col2, col3 FROM rows WHERE id IN ('row1', 'row2', 'row3'); 

On suppose au contraire que je veux récupérer toutes les colonnes. En termes SQL serait:

SELECT * FROM rows WHERE id IN ('row1', 'row2', 'row3'); 

Pour obtenir toutes les colonnes, je suis en train d'utiliser:

$result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', byoffset => { "count" => 1_000_000 }); 

Cela fonctionne aussi longtemps que le nombre de colonnes ne dépasse pas un million. Pendant que cela fonctionne je suppose qu'il y a une manière plus propre de le faire. Existe-t-il une manière plus simple de spécifier à Cassandra que je veux récupérer toutes les colonnes pour les lignes correspondantes?

+0

Vous n'êtes pas familier avec Cassandra, mais vous ne pouviez pas exécuter une requête plus tôt pour obtenir la structure de la table, vous savez donc combien de colonnes sont disponibles? – zigdon

+0

Je me demande si le développeur qui a fait cela avait un ex nommé Cassandra qu'il n'a pas trop aimé ... – Zoidberg

+0

zigdon: Non :-) La "structure de table" dans Cassandra est dynamique dans le sens où une rangée peut avoir cinq colonnes alors que la ligne suivante a dit quarante colonnes. – knorv

Répondre

3

Que diriez-vous

$result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', standard => 1); 

standard => 1 forcera Net :: Cassandra :: Facile à utiliser un prédicat de tranche qui correspond à toutes les colonnes de la famille.

+0

Excellent! Exactement ce que je cherchais! Merci! – knorv

Questions connexes