【问题标题】:sqlite vs shared memory app vs ipc vs?sqlite vs 共享内存应用程序 vs ipc vs?
【发布时间】: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


【解决方案1】:

可能有一些比自己滚动更简单的解决方案,具体取决于吞吐量和数据的保留时间。

如果符合您的要求,像memcached 这样的东西会非常好。它在整个网络上都在使用。

如果您正在手工编写代码解决方案,您可以考虑boost interprocess。对于 IPC 来说是相当合理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-02
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2011-10-27
    相关资源
    最近更新 更多