2011-09-14 163 views
1

我有8 TB的數據組成〜5000個小尺寸元素數組(每個元素不超過100字節)。我需要將這些數組的各部分(每次幾十meg)加載到內存中,以便儘可能快地在算法中使用。內存映射文件是否適合此用途,如果不是,我還應該使用哪些內容?內存映射數據庫

+0

訪問主要是隨機還是順序? –

+0

順序。另外如果可行的話,我想從多個線程查詢,並在它們的末端增長數組。 – David

+0

因此,您不需要複雜的數據庫功能,如索引和搜索鍵,排序等?這基本上是一個順序訪問平面文件問題?我認爲,您可以非常仔細地編寫應用程序的需求,而不需要生成通用API。 –

回答

1

鑑於您的要求,我肯定會去與內存映射文件。這幾乎就是他們所做的。由於內存映射文件消耗的物理資源很少,與其他方法相比,您的超大文件對系統的影響不大,特別是因爲在執行I/O之前可以將較小的視圖映射到地址空間中(例如,那些元件)。另一大好處是他們給你最簡單的工作環境。您可以(主要)只是將您的數據視爲大型內存地址空間,讓Windows擔心I/O。顯然,你需要構建鎖定機制來處理多個線程,但我相信你知道這一點。