最佳sql(或其他)数据库设计非常大的表,数千行数千列



我即将构建一个web应用程序从生物基因表达数据检索值。我用来填充数据库的表是27,000行标记为基因idgene_A,gene_B,gene_Cetc...,以及标记为细胞cell_1,cell_2,cell_3,etc...的50,000列。每个基因对每个细胞都有一个浮动值,范围在0到1之间。我想根据基因或细胞来查询。

我是sql新手,读到一对多的数据库设计在这里是合适的。但是,我是否需要为这5万个细胞或2.7万个基因中的每一个都制作一张新表格呢?这将如何影响性能?我能想到的唯一其他设计是将基因IDS作为行和单列'cell_expression'包含50,000个单元格值的JSON的表。但这可能会限制我对基因id的查询?

如果您能给我指个方向,我将不胜感激。

您想要一个包含两个键列的表:gene_idcell。目前尚不清楚是否还有其他数据。例如,如果数据只是一个标志,那么只要有单元格的名称就足够了。或者您可能需要一个值。

顺便说一下,许多数据库对表中的列数都有限制——这个限制通常在1000左右。根据您的数据库,您需要在导入数据之前重构数据。

我假设你有一个基因表达数据电子表格。如果您有更多,这个答案将需要一个额外的SQL表。

首先,创建一个Cell表。

Cell
----
Cell ID
Cell Name or descriptor

Cell ID是一个自动递增的整数,用作表的主键。根据您的描述,这个表将有50,000行。

接下来,我将创建一个Gene表。

Gene
----
Gene ID
Gene Name or descriptor.

Gene表的结构与Cell表的结构相似。根据您的描述,这个表将有27,000行。

最后,我们创建CellValue表。

CellValue
---------
Cell ID
Gene ID
Cell Value

主索引是(Cell ID, Gene ID)。你也会有一个唯一的索引(基因ID,细胞ID)。主索引允许您检索单元格名称的所有单元格值。唯一索引允许您检索一个基因名称的所有细胞值。

如果你选择一个基因和一个细胞,你将得到一个值。

现在,该表将包含13.5亿行,用于一个电子表格。我希望你有足够的存储空间。

最新更新