Astyanax supporte les colonnes composites dans Cassandra à travers ses AnnotatedCompositeSerializer
. J'ai une famille de colonne avec les noms de colonnes composite 3-champ, semblable à cet exemple, adaptés à partir Astyanax's documentation (les colonnes ne sont pas réellement sessionId
et token
, prétendre qu'ils sont à cause de l'argument):Comment faire une requête sur plusieurs préfixes de colonnes composites avec Astyanax?
// Annotated composite class
public class SessionEvent {
@Component(ordinal=0) UUID sessionId;
@Component(ordinal=1) UUID token;
@Component(ordinal=2) UUID timestamp;
public SessionEvent() { }
}
static AnnotatedCompositeSerializer<SessionEvent> eventSerializer
= new AnnotatedCompositeSerializer<>(SessionEvent.class);
static ColumnFamily<String, SessionEvent> CF_SESSION_EVENTS
= new ColumnFamily<>("SessionEvents",
StringSerializer.get(), eventSerializer);
// Querying cassandra for a column slice on one prefix, but we want two!
OperationResult<ColumnList<SessionEvent>> result = keyspace.prepareQuery(CF_SESSION_EVENTS)
.getKey("UserId1")
.withColumnRange(eventSerializer.buildRange()
.withPrefix("SessionId1")
.build())
.execute();
Le problème est : Je veux interroger pour toutes les colonnes avec deux colonnes composites (dans ce cas, sessionId
et token
) dans le préfixe, pas un seul, et pour tous les horodatages, pas seulement dans une plage. Ceci est clairement possible et facile à faire avec CQL3, mais je suis coincé sur Cassandra 1.0.x et ne trouve pas un moyen qu'Ashyanax acceptera (en appelant deux fois withPrefix(UUID)
ou en lui passant une structure de données composite).
Est-il possible de faire cela avec Astyanax? Puis-je en quelque sorte utiliser un RangeBuilder
de base et sérialiser le début et la fin manuellement, peut-être?
Mon erreur; J'ai manqué une partie clé de la question, que je ne connais pas les horodateurs de début et de fin et que je veux les obtenir tous. –
Ensuite, définissez startTime et endTime sur null. J'ai modifié le code ci-dessus pour refléter cela. – pscuderi
Cela ne semble pas fonctionner pour moi; Je n'ai pas de colonnes en arrière. :( –