代码之家  ›  专栏  ›  技术社区  ›  Nikita Vlasenko

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

  •  0
  • Nikita Vlasenko  · 技术社区  · 6 年前

    我有多个具有相同模式的数据集,我不确定应该如何设计 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
    

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

    0 回复  |  直到 6 年前