我正在處理Spring
應用程序,需要使用Hector
與Cassandra
對話。需要一些幫助,以便如何處理。我想使用JPA
並利用Spring的依賴注入功能。集成彈簧與卡桑德拉使用赫克托爾
任意積分幫助!
我正在處理Spring
應用程序,需要使用Hector
與Cassandra
對話。需要一些幫助,以便如何處理。我想使用JPA
並利用Spring的依賴注入功能。集成彈簧與卡桑德拉使用赫克托爾
任意積分幫助!
對於JPA合規性,我已經使用昆德拉,我可以非常容易地將其與春天整合,是的,正如Hardik Bhalani所建議的柱子家族經過精心設計以達到最高效率
對第一個問題的回答:您必須對數據模型進行設計和規範化,以便減少多個列系列之間的遍歷。對於例如如果你在CF itemlist中存儲了一些用戶ID,你應該插入用戶的具有使用細節的JSON對象,而不是該用戶ID,通過這種方式在獲取遍歷到usermaster CF時可以避免
您正在回答哪個問題?你的建議是否有助於建立Spring-Cassandra-Hector或者是否與JPA有關。我還沒有與JPA和Spring-Hector-Cassandra合作過。 – Crowie
我的答案指向「我怎樣才能查詢,因爲我需要從多個列家族中提取數據」 我的解決方案是嘗試設計數據模型,以便它需要較少的依賴關係,如我的示例 –
以及我現在用我的代碼進入生產。我使用Kundera + SPrings.Yes,正如Hardik Bhalani所建議的,柱家族設計得非常仔細,以達到最高效率。 –
我已經設法使用這個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(與組件註解)的一部分,所以一旦應用程序部署創建連接池。如您所見,我正在發起連接事件(使用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();
我希望這有助於。
您可以嘗試使用Playorm,它支持兩個列家族的SQL一樣的連接2.也爲列提供索引支持。
請告訴我們你已經嘗試過。 – krlmlr
您好我試圖將我的Spring MVC項目與我的本地Cassandra DB集成。已配置POM.xml並獲得所需的依賴關係。Dal層完成。我面臨兩個問題1.如何查詢,因爲我需要從多個列中提取數據家庭.2)如何查詢索引查詢的列 –