4

我有一个 20 GB 的文件,如下所示:

Read name, Start position, Direction, Sequence

请注意,读取名称不一定是唯一的。

例如,我的文件片段看起来像

Read1, 40009348, +, AGTTTTCGTA
Read2, 40009349, -, AGCCCTTCGG
Read1, 50994530, -, AGTTTTCGTA

我希望能够以一种允许我存储这些行的方式

  1. 保持文件根据第二个值排序
  2. 遍历排序的文件

似乎数据库可以用于此。

该文档似乎暗示dbm不能用于对文件进行排序并对其进行迭代。

因此我想知道SQLite3是否能够做到 1) 和 2)。我知道我将能够使用 SQL 查询对文件进行排序,并使用 sqlite3 遍历结果集。但是,我能否在不耗尽 4GB RAM 计算机上的内存的情况下做到这一点?

4

2 回答 2

8

SQLite 能够做到 1) 和 2)。

我建议您尝试并报告您遇到的任何问题。

默认页面大小为 1024 字节,SQLite 数据库的大小限制为 2 TB(2 41字节)。即使它可以处理更大的数据库,SQLite 也将整个数据库存储在单个磁盘文件中,并且许多文件系统将文件的最大大小限制为小于这个值。因此,如果您正在考虑这种规模的数据库,您最好考虑使用客户端/服务器数据库引擎,该引擎将其内容分布在多个磁盘文件中,并且可能跨越多个卷。

于 2012-11-08T17:06:34.560 回答
2

请参阅有关大型 SQLlite 数据库的这个问题。

重要的一点:

我试图将多行插入到只有一个表的 sqlite 文件中。当文件大约 7GB 时(对不起,我不能具体说明行数)插入花费的时间太长了。我曾估计插入所有数据的测试需要 24 小时左右,但即使在 48 小时后也没有完成。

使用的样本约为 50GB 数据,但未提及系统规格。

于 2012-11-08T17:18:54.733 回答