私は生物学研究室で働いており、多くのDNAマイクロアレイ実験結果を保存するためにデータベースを設計する必要があります。
各実験は多くのマイクロアレイ(平均で約10個)で構成されており、各マイクロアレイには500万を超えるプローブが含まれています。各プローブは特定の遺伝子IDにマッピングされます。もちろん、同じプローブがすべての実験で同じgene_idに一致します。目的は、特定の実験で特定の遺伝子IDのプローブの強度値をすばやく取得できるようにするために、各マイクロアレイの強度値を保存することです。
実際、単純なmysqlテーブルで十分であり、次のようになります。
強度テーブル:| probe_id | Experiment_id | microarray_id | gene_id | intensity_value
(probe_id、experiment_id、microarray_id、gene_id)で構成される主キーを使用
ここに問題があります:各実験には500万以上のプローブを持つ多くのマイクロアレイがあります。1000回の実験で、平均して10個のマイクロアレイ(推定値は低く、数百個あるものもあります)、1000 * 10 * 5M=500億行。遅いと思います。そして、何十億行ものmysqlテーブルを処理する方法についてはまったくわかりません。それは可能ですか?任意のヒント ?
noSQLデータベースにも興味があります。私はカサンドラを使ったことがありませんが、それはこのタスクに最適だと私には思えます、私は正しいですか?私はこのようなシェマを想像することができます:
{
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{
...
}
...
}
私はリグスですか?それはカサンドラモデルに適合しますか?それは効率的でしょうか?noSQLの第一人者はどう思いますか:)
ありがとう。