我正在为微阵列数据建立一个数据库。每个病人样本都有超过1,000,000个特性,我希望将病人样本作为行存储在SQL表中,并将每个功能作为列。
HuEX Microarray Data
+----+----------+----------+-----+------------------+
| ID | Feature1 | Feature2 | ... | Feature1,000,000 |
+----+----------+----------+-----+------------------+
| 1 | 2.3543 | 10.5454 | ... | 5.34333 |
| 2 | 13.4312 | 1.3432 | ... | 40.23422 |
+----+----------+----------+-----+------------------+我知道大多数关系数据库系统对表中的列数都有限制。
+------------+-----------------+
| DBMS | Max Table Col # |
+------------+-----------------+
| SQL Server | 1,024 - 30,000 |
| MySQL | 65,535 bytes |
| PostgreSQL | 250 - 1,600 |
| Oracle | 1,000 |
+------------+-----------------+显然,这些限制对于我的任务来说太低了。是否存在增加SQL数据库表可以拥有的列的数量,或者是否有另一个DBMS可以处理如此多的表列?
更新
注意,所有列都有所有行的值。
发布于 2011-06-28 18:06:09
别。
事件,如果你能使它工作,它将是非常缓慢和笨拙的。
相反,您应该为PatientID、Feature和Value创建一个包含列的单独表。
此表中的每个单元格将有一行。
它还使得添加关于每个病人特征对的附加信息成为可能。
发布于 2011-06-28 18:07:28
通常,您会将表拆分(规范化):
Sample: ID, PatientID
Feature: ID, Name
SampleFeature: SampleID, FeatureID, valueSQL数据库不能处理很多列,但它们可以处理很多行。
发布于 2011-06-28 18:07:38
试着重新安排您的桌子,以便:
CREATE TABLE MicroarrayData (
SampleID INTEGER,
FeatureID INTEGER,
Value REAL,
PRIMARY KEY (SampleID, FeatureID)
);https://stackoverflow.com/questions/6511031
复制相似问题