使用Hector将弹簧与cassandra整合在一起

时间:2013-05-31 21:32:20

标签: spring cassandra hector

我正在使用Spring应用,需要使用CassandraHector对话。需要一些帮助,如何处理。我想使用JPA并利用Spring的依赖注入功能。

任何一点都有帮助!

4 个答案:

答案 0 :(得分:1)

回答您的第一个问题:您必须设计并规范化您的数据模型,以便减少多列族之间的遍历。对于例如如果你在CF项目列表中存储了一些用户ID,你应该插入用户的JSON对象,而不是那个用户ID,通过这种方式获取遍历到用户管理员CF可以避免

答案 1 :(得分:0)

对于JPA合规我使用昆德拉,我可以非常容易地将它与弹簧整合,是的,因为Hardik Bhalani已经建议仔细设计柱系列以实现最高效率

答案 2 :(得分:0)

我已经设法使用这个documentation很容易地完成它,但这会让你得到SimpleCassandraDao(你可以注入你的DAO) - 这是非常有限的。

我所做的是务实地创建连接:

@PostConstruct
public void connect() {
if (Boolean.parseBoolean(isActive)) {
    CassandraHostConfigurator cassandraHostConfigurator = new CassandraHostConfigurator(this.socket);
    cluster = HFactory.getOrCreateCluster(clusterName, cassandraHostConfigurator);
    ConfigurableConsistencyLevel consistencyLevelPolicy = new ConfigurableConsistencyLevel();
    consistencyLevelPolicy.setDefaultReadConsistencyLevel(getConsistencyLevelPolicy());
    keyspace = HFactory.createKeyspace(keyspaceName, cluster, consistencyLevelPolicy);
    if (isConnected())
    fireConnectionEvent(true);
    else {
    LOG.error("Could not connect to socket " + this.socket + ". Connection to Cassandra DB is down!!!");
    }
} else {
    LOG.info("Cassandra connection is not active hence could not connect to socket " + this.socket
        + ". Please activate the connection before trying to connect");
}
} 

此方法是spring bean的一部分(使用 Component 注释进行注释),因此一旦部署了应用程序,就会创建连接池。 如您所见,我正在触发连接事件(使用Spring Application-Event支持)。该事件保存新创建的密钥空间,然后由我的Dao捕获。这样,我的Dao可以初始化所需的查询。例如:

StringSerializer stringSerializer = StringSerializer.get();
SliceQuery<String, String, String> query = HFactory.createSliceQuery(this.keyspace, stringSerializer, stringSerializer, stringSerializer)
        .setColumnFamily(columnFamily).setRange(null, null, false, 4).setKey(rowKey);

    ColumnSlice<String, String> columnsSlice = query.execute().get();
    List<HColumn<String, String>> columns = columnsSlice.getColumns();

我希望这会有所帮助。

答案 3 :(得分:0)

您可以尝试使用Playorm,它支持两个列系列的sql类连接2.也为列提供索引支持。