0

我需要保存大量数据 (>500GB),这些数据正在从连接到我的 PC 的另一台设备流式传输 (800Mb/s)。速度排除了使用数据库,例如 MySQl/ISAM,我正在寻找一个快速、轻量级的库,它位于“C”stdio 文件库(即 fopen/fclose/fwrite)之上,它允许我写/读一个非常大的文件(最多可用磁盘空间)。

在幕后,大文件可以分解成较小的文件,例如 1GB,我希望 API 处理这些细节。

数据以压缩的二进制格式到达 PC,在将其写入硬盘之前无需进一步处理。

该库应该适用于 Windows 和 Linux。

4

2 回答 2

1

如果您需要随机访问数据,请查看内存映射文件。

它使您可以透明地将文件(或文件的一部分)映射到内存中,而无需显式分配内存和读取数据。它适用于 Windows/Linux(有一个包含差异的 boost 库)。

在 Windows 上,您可以通过在文件中使用多个窗口来处理 32 位操作系统上的 >>4gb 文件。

编辑:对不起 800Mb/s !!我不知道有什么磁盘可以处理这个问题。您可能正在查看 SSD 驱动器的 RAID 阵列。
曾经有图像采集卡使用附加的驱动器作为一系列简单的字节,没有文件系统来获得非常高速的持续写入。我不知道你是否需要这样的东西。

于 2010-01-19T05:45:52.123 回答
0

为了获得终极速度,我建议您高度针对特定平台。

目标是尽可能接近将输入设备直接连接到硬盘驱动器。一种方法是为直接写入硬盘驱动器的输入设备编写驱动程序。

通用算法是使用非常大的循环字节缓冲区或使用多个缓冲区。您需要额外的空间来补偿输入设备和输出设备之间的速度差异;只要输入设备是不间断的。

如果您可以暂停输入设备,问题就会变得更容易。

于 2010-01-19T21:21:20.057 回答