2012-10-09 45 views
0

鑑於我在Cassandra中有一行具有多個列,這些列具有Integer作爲鍵和一些值。在Hector中使用SliceQuery使我能夠獲得這一列的一個範圍。是否有可能通過一個查詢獲得多個範圍?從Cassandra中的一行通過Hector獲取多個列範圍

例卡桑德拉行:

columns 3, 7, 12, 34, 45, 46, 59, 98, 99 
---------------------------------------- 
values a, f, e, v, a, r, r, o, k 

如何使用赫克託獲得來自20個按鍵中的所有列30 50至90 一個查詢?

回答

2

我不這麼認爲。要將其保留在一個查詢中,您必須使用包含所有感興趣切片的單個切片,然後在客戶端側逐列決定列是否屬於您感興趣的範圍之一

您應該注意,如果在一次調用中有太多數據來處理該大片中的所有列,那麼您可以使用分頁來減少客戶端數據的佔用空間,但隨後您也可能只是爲每個原始切片進行個別調用。

2

爲了解決我們做到這一點上PlayOrm開源項目...

確實赫克託有異步調用像astyanax不這樣就可以做到這一點

for(Query q : queryList) { 
// this next call is non-blocking..sends requests and returns immediately not waiting for response 
    Future f = q.executeAsycn(); 
    futures.add(f); 
} 

//Now, both column slices are happening in parallel at the SAME time 

for(Future f : futures) { 
    Result r = f.get(); //this will block for the first result 
} 

通過這種方式,它是就像api只有一次api調用一樣快,所以不需要一次調用。

院長

+0

正確回答我的問題來自克里斯Gerken,但你的答案包含了一個很好的建議如何解決這個問題。謝謝。 – unnu

相關問題