【发布时间】:2012-09-17 18:00:12
【问题描述】:
我什至不确定正确的术语,所以让我从我的目标开始:拥有一个简单的应用程序(“Data Doler”),它只会将大量数据从文件读取到内存中,并且然后将该数据的切片提供给名为“Data Lapper”的单个多线程应用程序,或提供给 Data Lapper 的多个实例。
Data Doler 只需要启动并读取一次数据块,因此我希望它至少在世界末日之前一直存在。 Data Doler 应该坐在那里闲置,等待 Data Lapper(s) 连接并开始请求数据。 Data Doler 将始终在具有 > 50 GB 内存的多核计算机上运行。
数据是静态的并且是只读的,并且它被编入索引,因此 Data Lapper 需要做的就是给 Data Doler 一个内存地址,它会立即取回所请求的确切数据片段。
Data Doler 可以用任何语言(C、C++、AtariBasic 等)编写。
我有 Data Lapper 的 C 源代码,所以我连接到 Data Doler 的方式是完全开放的。
我已经开始自学 SqlLite、共享内存应用程序、命名管道、ipc 等。但我希望有人可以告诉我应该叫哪棵树,或者我是否应该为我节省一些时间。我对这些东西一无所知,我还是呆在门廊上比较好。
【问题讨论】:
-
是高读还是高写?阅读是否有争议?施舍者保留数据多长时间?
-
为什么不让Data Lappers 直接读取文件,让操作系统的文件缓存来处理剩下的事情呢?以及哪个操作系统?
标签: sqlite ipc shared-memory named-pipes