4
我有一個內存中緩存它通過聚集一定程度存儲一組信息 - 在學生下面的例子讓我們說我把它存儲由年,主題,老師:降低數據的粒度集
# Students Year Subject Teacher
1 30 7 Math Mrs Smith
2 28 7 Math Mr Cork
3 20 8 Math Mrs Smith
4 20 8 English Mr White
5 18 8 English Mr Book
6 10 12 Math Mrs Jones
不幸的是,我的緩存沒有GROUP BY或類似的功能 - 所以當我想要在更高級別的聚合中查看事物時,我將不得不自己「滾動」數據。例如,如果我按年彙總的學生,受上述數據看起來像這樣:
# Students Year Subject
1 58 7 Math
2 20 8 Math
3 38 8 English
4 10 12 Math
我的問題是這樣 - 我最好怎麼會在Java中做到這一點?從理論上講,我可以從這個緩存中取回數以萬計的對象,因此能夠快速「收集」這些集合可能變得非常重要。
我最初的(也許是天真的)想法是按照以下方式做一些事情;
直到我用盡的記錄列表:
- 每一個「獨一無二」的記錄,我來 跨越添加爲關鍵, HashMap中。
- 如果我遇到一個記錄是 有聚集的這個新的水平 相同的數據,其添加量 現有的一個。
現在我知道這是一個相當普遍的問題,有很多更好的方法來做到這一點。所以我很歡迎任何關於我是否指向正確的方向的反饋。
「獲取新的緩存」我怕:)
戴夫不是一個選項。
我認爲這是數據庫發明的主要原因......所以關於這個主題有大量的文獻。我認爲你需要一個索引(或hashmap),用於你想在緩存上執行的每個'查詢'。 – sje397 2011-06-07 15:40:01