处理文件太大而无法存储在内存中?

The*_*Cat 3 python sqlite dbm large-files

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

Read name, Start position, Direction, Sequence
Run Code Online (Sandbox Code Playgroud)

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

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

Read1, 40009348, +, AGTTTTCGTA
Read2, 40009349, -, AGCCCTTCGG
Read1, 50994530, -, AGTTTTCGTA
Run Code Online (Sandbox Code Playgroud)

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

  1. 保持文件根据第二个值排序
  2. 迭代已排序的文件

似乎可以使用数据库.

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

因此,我想知道SQLite3是否能够做1)和2).我知道我将能够使用SQL查询对文件进行排序,并使用sqlite3迭代结果集.但是,如果没有4GB的RAM计算机内存不足,我能够这样做吗?

小智 8

SQLite能够同时执行1)和2).

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

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