2013-04-14 58 views
0

我有一個在數據存儲頂部使用JDO的GAE/J應用程序,並且我已經能夠使用遊標對查詢結果進行分頁。默認的實現是我們在我的團隊中稱爲startCursor的東西(即給出從這一點開始的結果)。我現在想要的是我們所說的endCursor(即給我從開始到這一點的結果)。想象一下某種Twitter時間表(不支持PUSH的一種),其中客戶端必須輪詢某個服務器以查找新內容。現在讓我們想象一下,客戶在5分鐘前提取了一些數據;這個數據代表開始(在5分鐘前)直到光標「X」的一個點。現在客戶想要更新時間表,這意味着客戶想要從現在開始拉動新鮮內容,直到5分鐘前。 GAE/J-JDO如何實現這一點?如何實現GAE/J中的EndCursors

想象一下,根據時間戳排序,商店中有1000個實體。然後我拿到了前20個。之後,創建了7個新實體。我如何使用查詢檢索這些新的7個實體?

回答

0

更改順序,這樣的東西或許降

+0

想象一下,商店中有1000個實體按時間戳排序。然後我拿到了前20個。之後,創建了7個新實體。如何在查詢中檢索這些新的7? 操作ORDER顯然不會解決這個問題。 –

+0

「從這一點」進行查詢的唯一方法是知道「該點」,並將其放入過濾器(如最高ID或時間戳取決於類)。該O/P不清楚,所以建議你的澄清去那裏 – DataNucleus

0

設置查詢順序是在時間戳上升。當您在5分鐘前檢索查詢結果(X)時,請獲取並保存光標。

稍後,使用該遊標運行相同的查詢:可以檢索點X之後的項目。

(這個原理與您已經使用的遊標有何不同?)

+0

很酷。我明白你的意思。但是現在考慮到我有超過40,000個實體(並且迅速增加),我不確定它是否會高效地閱讀所有內容(按升序),直到達到底部20並保存遊標。運行時和成本效率都會受到影響,我不知道在AppEngine強加的30秒時間內是否可以拉動100,000個實體(僅用於獲取遊標以便重用)。或者我錯過了什麼? –

+0

我不認爲我理解你的方案正確。不過...... @DataNucleus有一點。您可能需要按時間戳不同排序的兩個查詢:一個升序,一個降序。每個查詢都需要自己的光標。每個查詢必須在沒有遊標的情況下運行,以便生成一個初始的查詢。每個生成的查詢遊標都可以保存,然後用於後續查詢,並保存結果查詢遊標。這有幫助嗎? –