使用Hector将spring与cassandra集成
我正在开发一个使用Hector将spring与cassandra集成,spring,cassandra,hector,Spring,Cassandra,Hector,我正在开发一个Spring应用程序,需要使用Hector与Cassandra通话。需要一些关于如何接近的帮助。我想使用JPA,并利用Spring的依赖注入特性 任何一点帮助 第一个问题的答案:您必须设计并规范化数据模型,以便减少多列族之间的遍历。例如,如果您在CF itemlist中存储一些用户id,您应该插入具有使用详细信息的用户JSON对象,而不是该用户id,通过这种方式,在获取对usermaster CF的遍历时可以避免对于JPA合规性,我使用了Kundera,我可以很容易地将它与spri
Spring
应用程序,需要使用Hector
与Cassandra
通话。需要一些关于如何接近的帮助。我想使用JPA
,并利用Spring的依赖注入特性
任何一点帮助 第一个问题的答案:您必须设计并规范化数据模型,以便减少多列族之间的遍历。例如,如果您在CF itemlist中存储一些用户id,您应该插入具有使用详细信息的用户JSON对象,而不是该用户id,通过这种方式,在获取对usermaster CF的遍历时可以避免对于JPA合规性,我使用了Kundera,我可以很容易地将它与spring集成,是的,正如Hardik Bhalani所建议的那样,columnfamilies是经过精心设计以实现最大效率的我已经设法使用它非常容易地完成了,但是这就给您留下了SimpleCassandrado(您可以将其注入到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");
}
}
此方法是Springbean的一部分(使用组件注释进行注释),因此一旦部署了应用程序,就会创建连接池。
如您所见,我正在触发一个连接事件(使用支持)。该事件保存新创建的键空间,然后由我的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();
StringSerializer-StringSerializer=StringSerializer.get();
SliceQuery query=HFactory.createSliceQuery(this.keyspace,stringSerializer,stringSerializer,stringSerializer)
.setColumnFamily(columnFamily).setRange(null,null,false,4).setKey(rowKey);
columnsice columnsSlice=query.execute().get();
List columns=columnsSlice.getColumns();
我希望这会有所帮助。您可以尝试使用Playorm哪种1。支持两个columnfamilies 2的类似sql的联接。也为列提供索引支持。请向我们展示您的尝试。您好,我尝试将我的Spring MVC项目与我的本地Cassandra DB集成。已配置POM.xml并获得所需的依赖项。Dal层已完成。我面临两个问题1.我需要从多个列族中获取数据,如何进行查询2)如何对列进行索引以进行查询您回答的是哪个问题?您的建议是否有助于获得春季卡桑德拉·赫克托奖,或者是否有助于JPA。我还没有与JPA和Spring Hector Cassandra合作过。我的答案是“当我需要从多个列族中获取数据时,如何进行查询?”我的解决方案是尝试设计数据模型,以减少依赖性,如我的示例中所述。我现在开始使用我的代码进行生产。我使用了Kundera+SPrings。是的,正如Hardik Bhalani所建议的,columnfamilies经过精心设计,以实现最大效率。