1

我想在 C++ 中读取一个包含 600M 记录的文件,并根据给定的字段标准(例如empl.loacation='FL' and empl.dept=3)执行聚合。

使用 C++ 是一个可行的选择吗?我可以走数据库路线,但想知道,鉴于我的要求是只读的 - 聚合,我可以只使用 C++ 吗?

我看到了boost 多索引库。它比普通的 C++ 或 DB 更适合这种操作吗?

4

1 回答 1

4

要确定 Boost.MultiIndex 是否符合您的要求,请问自己以下两个问题:

  1. 您的目标计算机是否有足够的能力将结构保存在内存中?您大致需要 N*(I*3*p + sizeof(element)),其中 N 是元素的数量(在您的情况下为 600M),I 是索引的数量,p 是指针的大小(4 字节在 32 位架构中,8 在 64 位环境中。)
  2. 查询模式的数量是否相对较少且固定?至于什么是查询模式,您提到了示例“location=A and dept=B”。你会有多少这样的?(模数一些优化,每个查询模式都需要一个索引。)

如果这两个问题的答案都是肯定的,Boost.MultiIndex 可以为您提供帮助。

于 2012-09-19T20:32:53.963 回答