2016-10-18 70 views
1

我有以下表/列族卡桑德拉通過時間(後裔)的有序儲存交易,每個交易屬於一個帳戶:卡桑德拉尋呼通過時間交易表排序

CREATE TABLE transactions (
    transaction_id uuid, 
    description text, 
    account_id uuid, 
    category text, 
    sub_category text, 
    date timestamp, 
    amount bigint, 
    PRIMARY KEY (account_id, date, transaction_id, amount) 
) WITH CLUSTERING ORDER BY (date DESC); 

我想有在事務中分頁,爲特定帳戶提取按日期排序的25個事務組。

這是可能的這個定義或我需要其他額外的CF來幫助此功能?你會建議什麼。

在此先感謝。

回答

1

所以我不確定你爲什麼在你的PK中有數量但現在應該不重要。

您可以針對某個給定的帳戶取得按日期排序的結果25。 Datastax Native驅動程序將允許您通過分頁選項執行此操作。

//Expected inputs account_id and if not the first page a state 
//string from the last page of data 

Select query = select().from('keyspace', 'transactions') 
.where(eq('account_id', account_id)) 
.orderBy(desc('date')) 

if (state) { 
    query.setPagingState(PagingState.fromString(state)) 
} 

query.setFetchSize(25) 

ResultSet resultSet = session.execute(query)  

String newState = resultSet.getExecutionInfo().pagingState?.toString() 

//This will get you just the 25 rows you requested first 
resultSet.getAvailableWithoutFetching() 

//When sending data back to the page you will need to make sure you also 
//send back the paging state so it can help you go to the next 25. 
+0

問題是我使用erlang的cqerl,不知道是否可以採用相同的方法。當我設計表格時,這個數量可能是一個錯誤。 – lealoureiro

+0

因此,分頁狀態是cqerl支持的cql版本的一部分,我不知道他們是否公開了這些信息,但是如果不是,您應該可以添加它。 –

+0

我只是不知道erlang的語法抱歉。 –