我正在金融行業工作。我們想要推出數據庫命中數據處理。這是非常昂貴的。所以我們打算採用按需緩存邏輯。 [運行時插入&運行時查找]在進程內存中緩存大量數據
有沒有人在超過1000萬記錄的緩存邏輯的實施工作?每個記錄約160 - 200字節。
我面臨着不同方法的缺點。
- 不能使用STL的std ::地圖實施的重要基地緩存註冊表。 插入和查找200000記錄後非常慢。
- 共享內存或存儲器映射文件是種開銷用於高速緩存數據, 因爲這些數據不被跨越進程使用sqlite3的
- 內存&平面文件的應用數據庫可以是 值得共享。但在2-3百萬條記錄之後,它的查詢速度也很慢。
- 進程內存對自己的內核內存消耗可能有一些限制。我的 假設是在64位機器上的32位機器上演出2演出。
如果你遇到過這個問題並且以任何方式解決,請給我一些建議。
感謝
DB索引通常通過BTrees實現,而不是std :: map(R&B二叉樹)。 BTrees對於你所談論的尺度更有效。 – littleadv
您可以在進程之間使用共享內存和內存映射文件。至少在linux上。你在使用什麼操作系統? –
這是一個關鍵價值商店還是更復雜的東西? –