【发布时间】:2012-02-24 17:25:00
【问题描述】:
我有以下问题要解决。我必须构建一个图形查看器来查看海量数据集。
我们有一些特定格式的文件,其中包含数百万条表示实验结果的记录。每条记录代表一个大图表上的一个样本点。我见过的最大的文件有 4370 万条记录。
平均一个文件包含 1000 万条记录。每条记录都很小(76 字节 + 每个可选的 12 字节)。由于数据太大,无法将完整的数据加载到主存储器中。我构建了一种新的文件格式,将数据压缩到每条记录 48 个字节,并将数据组织成相互关联的块。我想通过在 2D/3D 图中显示记录来“查看”数据。由于数据非常密集,我想通过加载更多数据并从主内存中删除视图中未显示的数据来逐步提高详细程度。
我还想实时访问相关记录组并预加载类似记录,以将加载时间保持在最低限度。这将为用户提供流畅的控制来查看数据,而不是类似于在互联网连接非常慢的情况下在 YouTube 上观看视频的体验。用户不能随机,必须使用控件进行导航,我想使用此信息将相关记录加载到主内存中。
必须根据当前主存储器中的内容从光盘逐步加载数据。在当前上下文中不需要的主内存中的记录可以删除,如果需要重新加载。
如何根据一些哈希值高速访问磁盘中的数据
如果要在当前上下文中查看的数据太大,我该如何管理主内存。如果您的答案是详细程度,那么我如何为大型数据集构建它?这些数据是否应该成为文件的一部分?
过去两周我一直在研究这个问题,但由于 IO 速度,我似乎陷入了困境。
我在本地 C++ 中工作,我不能在 GPL 下使用工作。如果您需要更多信息,请告诉我。
内存
【问题讨论】:
-
此外,我可以随意更改文件格式并组织数据以适应我的目的。我使用 OpenGL 来查看数据。
-
您是否考虑过将此数据移植到数据库中?任何体面的数据库都可以解决所有这些问题。 PostgeSQL 甚至有图形相关的扩展,你可能会觉得有用
标签: c++ data-structures