2016-01-11 109 views
2

我有服務器安裝與nodejs和Aerospike。我想實現列出航行數據庫中所有數據的分頁。 Aerospike似乎不支持像limit,orderByskip這樣的sql查詢參數。使用LList可以部分解決問題,因爲數據默認按鍵排序。也可以使用Aerospike Lua List,我們可以部分實現UDF使用list.take(number of elements from start)。 但是,由於該集合隨着時間的推移將會變得非常大,OrderBy和Skip變得非常重要,並且無法通過UDF過濾有效地實現。 任何建議如何處理?分頁與Aerospike Nodejs客戶端

+0

採取將改變列表。我猜你想要的是一個發現? NodeJS客戶端似乎支持服務器和其他客戶端支持的功能。你可以看看如何實現findFrom(startValue,COUNT):http://bit.ly/1N3ynLg(在github java客戶端回購上檢查實現) 這一切歸結爲在服務器端調用正確的UDF如果你發現如何調用用於findFrom的udf,你可以將它用於分頁。但是,如果您不想編寫一個在同一個調用中同時提供計數和數據的UDF,則需要分別調用size()。 –

+1

Order-by不受支持,只有1個鍵可以排序。使用多個列表進行建模可能會有所幫助。 –

+0

讓我檢查並回復你 – pravin

回答

0

正如您已經提到的,Aerospike不支持限制& orderby種類的查詢。解決此限制的一種方法是在列上創建二級索引並執行二級索引範圍查詢。假設您創建一個單調增加值的列。您可以從1-50,然後51-100等進行範圍查詢。

您可以在過濾記錄的地方使用UDF。但它不會非常有效,因爲集合掃描將處理集合中的所有記錄,並且UDF過濾器只會返回50個(某些n個)結果。隨着套裝尺寸的增加,最終會浪費很多處理。