2012-09-17 75 views
2

我甚至不確定正確的術語,所以讓我從我的目標開始:創建一個簡單的應用程序(「Data Doler」),它只會從文件讀取大量數據到內存中,然後將這些數據的片段提供給稱爲「Data Lapper」的單個多線程應用程序,或Data Lapper的多個實例。sqlite vs共享內存應用程序vs ipc vs?

Data Doler只需啓動並讀取一次數據塊,因此我希望它至少能夠堅持到大決戰。 Data Doler應該只是在那裏閒置,等待Data Lapper(s)連接並開始請求數據。 Data Doler將始終在具有> 50 GB內存的多核機器上運行。

數據是靜態的並且是隻讀的,並且它被編入索引以便Data Lapper需要做的是爲Data Doler提供一個內存地址,並立即獲取請求的確切數據片段。可以使用任何語言(C,C++,AtariBasic等)編寫數據更新程序。

我有Data Lapper的C源代碼,所以我如何連接到Data Doler是完全開放的。

我已經開始瞭解關於SqLite,共享內存應用程序,命名管道,ipc等的知識。但是我希望有人能夠通過告訴我我應該咆哮哪棵樹,或者我對這些東西太無能爲力了,我寧願呆在門廊上。

+0

閱讀還是寫作很高?閱讀競爭嗎?播放器保存數據多久? –

+1

爲什麼不直接讓Data Lappers直接讀取文件,並讓操作系統的文件緩存處理其餘的問題?而哪個操作系統? –

回答

0

根據吞吐量和數據粘滯的時間長短,可能會有一些比自己滾動更簡單的解決方案。

memcached這樣的東西,如果它符合您的要求會真的很小。它在整個網絡中都在使用。

如果您正在手工編寫代碼解決方案,您可能會考慮boost interprocess。對IPC來說這是相當合理的。