在SQL中正确存储多个断开连接的数据集

时间:2018-10-17 23:33:17

标签: sql database-schema

我有多个具有相同架构的数据集,并且不确定在这里如何正确设计SQL。这个问题很简单,但是我只是没有SQL的经验。假设有40个表将矩阵数据存储为row_num, col_num, val。每个此类表都有其自己的名称。由于表具有数亿行,因此从性能的角度来看,将所有表都放入一个表中似乎是错误的。因此,我正在考虑创建40表,但是我不确定在这种情况下最佳方案的外观。每个这样的表(代表矩阵)将依次具有不同模式的相关表:

table_of_type_MATRIX_1 --> table_of_type_BIRDS (relevant for table_of_type_MATRIX_1 only!)
table_of_type_MATRIX_2 --> table_of_type_BIRDS (relevant for table_of_type_MATRIX_2 only!)

因此,基本上,我想将一堆断开连接的数据存储在一个数据库中,但我不确定如何组织它。当然会有查询,需要查询具有相同模式的多个表。任何建议将不胜感激。

  

示例

矩阵看起来像这样:

       gene                      cell_id       expr
0  0610005C13Rik  GCTAAGTATTTN_CTL-6_OPC   0.000000
1  0610007N19Rik  GCTAAGTATTTN_CTL-6_OPC   0.000000
2  0610007P14Rik  GCTAAGTATTTN_CTL-6_OPC   3.593143
3  0610009B22Rik  GCTAAGTATTTN_CTL-6_OPC   3.593143
4  0610009D07Rik  GCTAAGTATTTN_CTL-6_OPC  10.779429
...
other dozen millions of rows

这是基因表达的矩阵:在第一列中,我们有在第二列中显示的细胞中表达的基因,在第三列中显示了表达水平。在执行降维和聚类算法后,单元(第二列)也被分组为聚类,因此,我们具有与第一个表相关的第二个表:

  cell_id                     cluster
  GCTAAGTATTTN_CTL-6_OPC        1
  GCTGGGTATTTN_CTL-6_OPC        2
  GCTAAGTATAAN_CTL-6_OPC        2
  GCTAAGTATTTN_CTL-6_OPC        3
  ...
  and so on for all of the cells

因此,这两个相关的表:基因表达矩阵和细胞的簇分配将自身形成一个断开的数据集。将需要存储许多这样的2表组。

0 个答案:

没有答案