2013-08-21 46 views
1

我正在尋找的想法如何更好地做到以下幾點:谷歌App Engine的大型查詢,顯示排名

我存儲在谷歌App Engine的數據存儲區萬個單位(Java對象)。 實體有許多領域,其中之一是「銷售」,並表示一個人的美元銷售量。

我正在構建一個網頁,顯示銷售排名的兩個表格,按其銷售額排名。我正在爲這個站點使用Java對象,Java Servlets和JSP。

第一個表格將顯示人員列表及其銷售排名。人員名單將是人員將登錄到該網站的人員的團隊中的一組特定人員。例如,一家商店的經理朱莉登錄該網站,並有五名銷售人員。她將看到一張表格,顯示她的五名員工以及他們在數據存儲中所有人員中的銷售排名。例如:

等級,名稱,銷售 23,Alea的古曼森,$ 1,875 37,湯姆·瓊斯,$ 1,550 77,茉莉花約翰遜,$ 1,325個 283,克里斯Mowles,$ 1,100 643,南希克利佩爾,$ 650

該頁面還會顯示第二張表,顯示每個人在下表中排名爲1-250。我將爲觀衆提供鏈接,以便在完整的結果列表之間前後移動,每次250條記錄。例如,「Previous 250」和「Next 250」鏈接將可用。我還會有鏈接跳轉到特定範圍的記錄,如「1,250-1,500」或「1,750-2,000」,一直到列表中的最大值。

我需要顯示的不僅僅是網頁上的「銷售」數據點。我還將從檢索到的對象中顯示十幾個其他字段。所以我需要從數據存儲返回的完整對象。

數據存儲每晚更新一次新數據,但在人們查看該頁面的那一天沒有更新。

什麼是最有效的方式來確定頂級表中特定同事的排名?

爲了確定任何人的排名,我需要查詢按銷售排序的所有記錄,並查找特定人員在該順序中的位置。

我應該執行哪些查詢?我應該考慮將什麼放入緩存中?每次我需要確定人員子集的排名時,我都想避免查詢所有記錄。

我是否應該查詢所有人員ID(按銷售額排序),然後遍歷結果,並且如果其中一個人員ID匹配,則將循環的索引保存爲該人員的等級?然後爲前250個完整對象發出額外的查詢?我還必須查詢頂層表的特定人員的完整對象。

謝謝!

回答