¿Cómo definir clave compuesta para una familia de columnas y luego hacer referencia a ella usando Héctor?

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

  •  27-10-2019
  •  | 
  •  

Pregunta

¿dónde puedo encontrar muestras para esto?

La mayor parte de mi código utilizando ColumnFamilyTemplate hacer CRUD en los registros de datos, véase más adelante. Una vez que tengo la clave compuesta definida, ¿puedo utilizar ColumnFamilyTemplate acceder a mis datos con claves compuestas?

private static final ColumnFamilyTemplate<UUID, String> template = 
    new ThriftColumnFamilyTemplate<UUID, String>(
        Bootstrap.keyspace, 
        "User", 
        UUIDSerializer.get(), 
        StringSerializer.get(),
        HFactory.createMutator(Bootstrap.keyspace, UUIDSerializer.get()));
¿Fue útil?

Solución

No debería importar qué API se utiliza para hacer la ABM en los registros; CompositeType (o DynamicCompositeType) es otro tipo (por ejemplo, similar a UUID) que tiene un serializador correspondiente (CompositeSerializer). Así, el ejemplo podría llegar a ser:

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

Sólo adicional sería la de crear el compuesto antes de usar la plantilla (suponiendo compuesta de UUID y Larga):

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

Cuando ir a buscar resultados, una manera de conseguir los componentes de la tecla:

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

Otros consejos

Si se define una clave compuesta, también hay que decir Cassandra (> 0.8.1) para utilizar CompositeType como elemento de comparación. Aquí está un ejemplo completo a partir de la definición de esquema CompositeType a programar una consulta rango: http://randomizedsort.blogspot.com/2011/11/cassandra -range-consulta-using.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top