我有一個'黑匣子'的應用程序,獲取值的地圖作爲參數,執行重和長(至多5s)的計算,並生成單個的Result
可以保存在數據庫中。 我所知道的有關應用程序是:RDBMS作爲緩存,需要設計建議
- 結果是相對於設置地圖AF唯一值
- 參數是與字符串>字符串地圖與已知maximun長度兩者 鍵和值
- 參數圖的長度是可變的(從2-3到1000個條目或 左右)
- 可能的密鑰值的列表的大小是大約1000
個樣品參數是:
Map: {'k1'->'a', 'k2'->'b'}
Map: {'k1'->'a', 'k2'->'b', ... 'k100'->'zzz'}
Map: {'k1'->'x', 'k8'->'y'}
Map: {'k6'->'z'}
中的每一個上面會產生獨特Result
對象。
現在想象另一種服務,它建立在緩慢的庫之上,需要每秒處理數十個計算請求。 如果不對已經計算的結果進行緩存,這是不可能的。我對可能的緩存大小總數的估計大約有100-500百萬條記錄,這導致我將RDBMS用作緩存存儲。
由於提供的映射唯一標識了結果,我可以通過鍵對參數映射進行排序,並將其連接到字符串'k1:a:k2:b ....'。這將definetely是緩存鍵,但:
- 緩存關鍵將是巨大的,上面的按鍵大小限制了許多RDBMS和 需要索引CLOB的
- 我將沒有使用的事實,關鍵值限制在 可能的值。
你的建議是什麼?性能是我的主要關注點。
實際上兩張不同的地圖不可能產生相同的結果嗎? –
@Catchall,不同地圖產生相同結果的情況是可能的,但不在問題的範圍之內。 – Osw