PHP/MYSQL 将大型数据集存储在数据库中


PHP/MYSQL Store large data sets on a database

我正在构建一个收集和解析"csv"文件的平台,该文件平均包含5000行和40列;文件可以由任何注册用户上传,因此理论上应该没有可以上传和存储的文件数量限制(假设我每天上传不超过20个)。这些文件正在由定制的PHP解析器解析,这有点有效,但问题来了:存储。特别是,我想将这些数据存储在MySQL数据库中以供以后使用:我应该如何组织我的数据库?我是否应该创建一个包含每个文件一行的表,每个单元格包含原始文件每列的内容?还是应该为文件中的每一行插入一行?第一个在我看来更好,因为第二个解决方案建立了大量的行,但效率也较低,因为每当我必须提取数据库中的任何数据时,我都必须再次解析整个 blob 然后提取我需要的数据

鉴于如果同时连接太多用户,由于内存不足,我无法将数据存储在 PHP 数组中,在这种情况下哪个是最佳解决方案?

由于所有文件都具有相同的列,因此应将它们存储在一个表中,并添加另一个附加列(可能引用每个上传一行的第二个表)以唯一标识一组行。

例如:

rowId, setId, col1, col2, ...
1, 1, 'abc', 'def', ...
2, 1, 'abc', 'def', ...
3, 1, 'abc', 'def', ...
4, 2, 'abc', 'def', ...
5, 2, 'abc', 'def', ...
6, 2, 'abc', 'def', ...

这是 2 组(每组 3 行)的数据可能看起来的样子。