Come definire la chiave composita per una famiglia di colonne e quindi fare riferimento a Hector?

StackOverflow https://stackoverflow.com/questions/7329211

  •  27-10-2019
  •  | 
  •  

Domanda

Dove posso trovare campioni per questo?

La maggior parte del mio codice utilizzando columnFamilyTemplate per eseguire CRUD sui record di dati, vedi sotto. Una volta definito il tasto composito, posso ancora utilizzare columnfamilytemplate per accedere ai miei dati con chiavi composite?

private static final ColumnFamilyTemplate<UUID, String> template = 
    new ThriftColumnFamilyTemplate<UUID, String>(
        Bootstrap.keyspace, 
        "User", 
        UUIDSerializer.get(), 
        StringSerializer.get(),
        HFactory.createMutator(Bootstrap.keyspace, UUIDSerializer.get()));
È stato utile?

Soluzione

Non dovrebbe importare quale API usi per fare il CRUD sui registri; CompositEType (o DynamicCompositeType) è solo un altro tipo (ad esempio UUID) che ha un serializzatore corrispondente (compositeSerializer). Quindi, il tuo esempio potrebbe diventare:

private static final ColumnFamilyTemplate<Composite, String> template = 
new ThriftColumnFamilyTemplate<Composite, String>(
    Bootstrap.keyspace, 
    "User", 
    CompositeSerializer.get(), 
    StringSerializer.get(),
    HFactory.createMutator(Bootstrap.keyspace, CompositeSerializer.get()));

Solo extra sarebbe quello di creare il composito prima di usare il modello (assumere composito di uuid & long):

Composite key = new Composite();
key.addComponent(someUUID, UUIDSerializer.get());
key.addComponent(someLong, LongSerializer,get());
ColumnFamilyResult<Composite,String> result = template.queryColumns(key);

Quando si ottengono risultati, un modo per ottenere i componenti della chiave:

myUUID = result.getKey().get(0, UUIDSerializer.get());
myLong = result.getKey().get(1, LongSerializer,get());

Altri suggerimenti

Se si definisce una chiave composita, è anche necessario dire a Cassandra (> 0,8.1) di utilizzare il composititypo come comparatore. Ecco un esempio completo a partire dalla definizione dello schema CompositEType alla programmazione di una query di intervallo:http://randomizedsort.blogspot.com/2011/11/cassandra range-query-using.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top