2014-12-02 63 views
0

我有一個數據存儲區,用於存儲客戶的出租車預訂詳細信息。在管理控制檯中,我需要向管理員顯示統計信息,例如最繁忙的地點,高峯時段,特定日期特定地點的預訂總數。對於最繁忙的位置,我需要從大多數出租車預訂位置取回位置。我是否應該迭代整個數據存儲並保持計數,或者是否有任何方法知道哪個位置具有最大和最小重複值。如何查找使用Java的應用程序引擎數據存儲中具有最大重複值的值?

我正在使用ajax調用java servlet,它應該返回最繁忙的位置。

而且我還需要一個建議來維護這樣的統計頁面。我是否應該爲計數器和統計信息保留一個單獨的實體類型,並且每次客戶預訂出租車時都要更新它,或者對於統計信息頁面遍歷整個數據存儲是否是邏輯正確的。提前致謝。

+0

我不確定它是不是你要找的,但是['Collections'](https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html )類有一個方法['frequency'](https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#frequency(java.util.Collection,%20java.lang。對象)) – 2014-12-02 06:14:05

回答

1

有太多關於您的數據模型和使用模式的未知數來提供特定的解決方案,但我可以提供一些提示。

  1. 每次創建新記錄時更新一次計數器會增加2次寫入操作的成本,這可能或可能不重要。

  2. 使用按鍵查詢非常便宜且快速。這是計算某種東西的首選方法,因此您應該嘗試使用按鍵查詢可以給出答案的方式對數據建模。例如,如果「旅行」實體具有「起始點的ID」屬性,並且此屬性已建立索引,則可以使用按鍵查詢循環遍歷您的位置,以計算從每個位置開始的旅行次數。

假設你記錄車次很多,而一個管理頁面會被訪問/刷新不是很頻繁,純鍵查詢方法是要走的路。如果每小時訪問/刷新多次管理頁面,則最好使用計數器。

+0

感謝您的回覆。我的BookingDetails實體種類有BookingID(主鍵),cabType,customerID,dateOfBooking,pickup日期,pickup位置,dropLocation,pickup時間和contactDetails。現在我只是獲取所有實體並顯示統計信息。就像檢索某個特定客戶的預訂歷史記錄一樣,我使用查詢和過濾功能,併爲totalBooking今天我將今天的日期與pickup日期進行比較以顯示預訂今天的統計信息。那麼獲取整個數據存儲並遍歷每個實體是否好? – 2014-12-02 06:29:39

+1

這一切都取決於你有多少實體,你創建新實體的頻率以及你需要多少次統計。這裏沒有寫或錯的答案 - 只根據您的具體使用情況進行優化。如果您沒有太多實體,請從最簡單的解決方案開始,然後在必要時進行優化。 – 2014-12-02 07:20:06

相關問題