he "descubierto" este nuevo tipo de bases de datos, he leído un poco la documentación y ahora estoy haciendo algunas pruebas... para cogerle soltura y eso... Buscando API's que me permitan trabajar en java, he encontrado una llamada "hector-core" y la estoy probando, comencé por la versión 0.7.0-29 pero esa versión no me permitía (o no supe como hacerlo) hacer búsquedas por un campo que no fuera clave, asi que actualice a la 1.1.4 que esa si me permite hacer las búsquedas que necesito. El problema es que ahora no consigo crear una columna para insertar un dato en el columnFamily. El codigo que tengo es este:
Código:
Y el codigo que uso para buscar es:Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", "localhost:9160"); Keyspace keyspace = HFactory.createKeyspace("AuthDB", cluster); Mutator<String> mutator = HFactory.createMutator(keyspace, stringSerializer); ColumnQuery<String, String, String> columnQuery =HFactory.createStringColumnQuery(keyspace); mutator.insert("sample", "authCollection", HFactory.createStringColumn("username", "admin")); mutator.insert("sample", "authCollection", HFactory.createStringColumn("password", "admin"));
Código:
El problema del cambio es que el objeto de tipo ThriftRangeSlicesQuery no tiene el método addEqualsExpression, por lo que tuve que actualizar a una versión en la que ese método estuviera implementado.Keyspace keyspace = HFactory.createKeyspace("AuthDB", cluster); ThriftRangeSlicesQuery <String, String, String> sliceQuery = (ThriftRangeSlicesQuery<String, String, String>) HFactory.createRangeSlicesQuery(keyspace, stringSerializer, stringSerializer, stringSerializer); sliceQuery.setColumnFamily("authCollection"); sliceQuery.addEqualsExpression("username", "admin"); sliceQuery.setRange("", "", false, 4); QueryResult<OrderedRows<String, String, String>> result = sliceQuery.execute();
El error que da es:
Código:
Como lo soluciono?23-sep-2013 21:59:49 me.prettyprint.cassandra.connection.CassandraHostRetryService <init> INFO: Downed Host Retry service started with queue size -1 and retry delay 10s 23-sep-2013 21:59:49 me.prettyprint.cassandra.service.JmxMonitor registerMonitor INFO: Registering JMX me.prettyprint.cassandra.service_Test Cluster:ServiceType=hector,MonitorType=hector Exception in thread "main" java.lang.NoSuchMethodError: org.apache.thrift.meta_data.FieldValueMetaData.<init>(BZ)V at org.apache.cassandra.thrift.Column.<clinit>(Column.java:140) at me.prettyprint.cassandra.model.HColumnImpl.<init>(HColumnImpl.java:62) at me.prettyprint.cassandra.model.HColumnImpl.<init>(HColumnImpl.java:35) at me.prettyprint.hector.api.factory.HFactory.createColumn(HFactory.java:612) at me.prettyprint.hector.api.factory.HFactory.createStringColumn(HFactory.java:633) at com.examples.cassandra.CassandraExample.insertData(CassandraExample.java:58) at com.examples.cassandra.CassandraExample.main(CassandraExample.java:161)
Gracias!