簡體   English   中英

地圖上的Aerospike Secondery指數

[英]Aerospike secondery index on map

我對Aerospike DB和二級索引有疑問。

我有一組學生,每個學生(記錄鍵為StudentId)都有一個地圖(箱),該地圖由<CourseId ,Grade>

我只想選擇參加特定課程Ids的學生。 我該怎么做 ? 我應該在地圖上添加二級索引嗎? 使用UDF?

謝謝。

您可以使用兩種方法-一種使用二級索引,另一種不使用二級索引(僅使用主索引進行鍵值操作)。

沒有二級索引

實際上,我們假設您有三種類型的應用程序,每種類型在Aerospike中都有自己的一套- coursesstudentsroster 課程對象保存有關課程的信息,學生對象保存有關學生的信息。 roster對象具有與課程相同的密鑰,或者可能具有復合課程ID |學期 該課程應有一個bin 學生 ,其中包含學生ID列表。 要獲取課程的學生,您會獲得roster記錄,然后將其學生鍵列表變成針對students的單個批量讀取操作。

當然,您也可以將其折疊起來,只有兩個集合- coursesstudents ,並將課程學生列表作為bin保留在課程對象中。 此處不需要多對一的聯接,因為您可以使用列表映射復雜的數據類型

如果您想在沒有二級索引的情況下進行更復雜的查詢,則可以將謂詞過濾器應用於courses集的掃描(請參見以這種方式使用Java客戶端的示例 )。

有二級索引

您可以在課程中向學生對象添加垃圾箱,其值是課程ID的列表(這意味着您可以輕松地從ID中獲取課程對象)。 您可以在該課程ID 列表上建立二級索引 要獲取學生的課程,您可以通過其鍵獲取學生對象,然后查看課程箱。 要使所有學生都進入特定課程,請對students集中的那個記錄bin進行二級索引查詢。

您可以將謂詞過濾器應用於此二級索引查詢找到的記錄,以進一步根據其他條件過濾學生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM