【发布时间】:2012-05-10 08:21:43
【问题描述】:
在 C++11 中,我可以使用什么来将数据快速序列化为多个文件(为避免数据冗余,我假设我会将数据拆分为多个表并根据其 ID 号连接它们)?
我考虑使用:
- 使用
fstream.read()、fstream.write()访问的简单二进制文件。 - 使用
mmap。 - function google
protobuf(如果我可以访问随机元素而不是遍历所有元素)。
所有表都将包含具有以下数据类型的列:
uint8, uint16, uint32, uint64, string.
【问题讨论】:
-
序列化和 I/O 是不同的东西。当您必须处理文件时,我不会太担心序列化速度本身..
-
我的第一个想法是考虑SQLite。
-
SQLite 不是一个选项,当我必须处理大量数据时(sqlite 文件大约有 8GB)。
-
@MiniKarol:我不知道 SQLite 的文件大小限制这么小。事实上,我很确定this is not true. 它说 1 Tera-pages 是默认的最大大小。而一个页面是几个字节;我不知道有多少,但如果是 1KB,那么最大文件大小就是 1024 Tera-bytes。
标签: c++ serialization c++11