十亿行mysql表/ cassandra模型 - (和一点生物学:))

Pie*_*rre 5 mysql cassandra nosql

我正在研究生物实验室,我必须设计一个数据库,以便存储许多DNA微阵列实验结果.

每个实验由许多微阵列(平均约10个)组成,每个微阵列包含超过5百万个探针.每个探针都映射到特定的基因id,当然在所有实验中相同的探针匹配相同的gene_id.目的是存储每个微阵列的强度值,以便能够在特定实验中快速检索特定基因id的探针的强度值.

实际上一个简单的mysql表就足够了,它看起来像这样:

强度表:| probe_id | experiment_id | microarray_id | gene_id | intensity_value

使用由(probe_id,experiment_id,microarray_id,gene_id)组成的主键

问题在于:每个实验都有许多微阵列,其中有超过5百万个探针.通过1000次实验,平均10个微阵列(估计值很低,有些有数百个),其1000*10*5M = 50亿行.我想这会很慢.我完全不知道如何处理数十亿行的mysql表.那可能吗 ?有小费吗 ?

我也对noSQL数据库感到好奇.我从未使用过cassandra,但在我看来,这对于这项任务来说是完美的,对吗?我可以想象这样的一个shema:

{
experiment_id_1:{ <- thats a super collumnFamilly ?
    gene_id_1:{ <- thats a collumnFamilly ?
        probe_id_1:{ value_microarray_1, value_microarray_2, ... }, <- thats a superCollumn ?
        probe_id_2:{ value_microarray_1, value_microarray_2, ... },
        probe_id_3:{ value_microarray_1, value_microarray_2, ... },
        ...
    },
    gene_id_2:{
        probe_id_1:{ value_microarray_1, value_microarray_2, ... },
        probe_id_2:{ value_microarray_1, value_microarray_2, ... },
        probe_id_3:{ value_microarray_1, value_microarray_2, ... },
        ...
    }
}
experiment_id_2{
    ...
}
...
}
Run Code Online (Sandbox Code Playgroud)

我操纵了吗?它适合cassandra模型吗?会有效吗?你觉得noSQL大师怎么样:)

谢谢.

Jas*_*n S 0

也许我错过了一些东西,但你有一个听起来像这样的系统:

  • 同质:数据库中的每个条目都有一个实验 ID、一个基因 ID、一个探针 ID、一个值选择器 ID(它是微阵列的哪个元素)和一个值。
  • 一次写入,多次读取:您将记录信息,一旦记录下来,您就再也不想更改它。

这听起来更像是关系数据库(MySQL 或 PostreSQL)而不是 NoSQL 数据库的良好候选者——NoSQL 数据库在处理异构数据库方面要好得多。