kuroの覚え書き

96の個人的覚え書き

リレーションが上手くいかない

とにかくカラム数も多いし、行数も160万行を超えていて動作がもっさりしている。
本当はテーブルを分けてリレーションでjoinして運用するのがいいのだろうけど、やっぱりouter joinとか動作が非常に遅くて使い物にならない。
なので、テーブルを前もってつなげたいのだけれどSQLite3ではテーブルのUPDATEが死ぬほど遅い。
というわけでもう一度MySQLにもどそうとしてみたところ、今度はMySQLの文字列バイト数制限や、カラム数の制約に引っかかってフルカラムのテーブルを操作できないと来た。
https://qiita.com/rhap/items/298cbd4b8e15a212df98
とにかくデータベースのメンテナンスをwebからボタンでポチポチと行えるようにしたいので、

1 まず素のexomeデータファイルを整形する。
2 SQLiteにインポートしてvariant_idを付与する。そこから解析に必要なカラムのみを抽出してサブテーブルを作成し、TSV形式でダウンロードさせる。
3 2のTSVをMySQLMARIADB)にインポートする。
4 MySQL上でインポートしたtableから検索に必要なハッシュ等を生成してUPDATE。
5 DB運用

という流れにしよう。
1のデータファイルの前処理はshell scriptで行えるようにしておく。
2でできたSQLiteのデータベースはサーバでローカル運用してフルカラムデータベースとして保管しておく。
3のTSVインポートはmysqlimportコマンドで実施する
https://qiita.com/aosho235/items/f52f068d3634b0521cca
4で生成するハッシュはchrとstart endを組み合わせたpositionタグとposition, REF, ALTを組み合わせたmutationタグを用意する。
そのほかサンプルID用カラム、BAMやvcfファイルのディレクトリを指定するカラムとフラグ用カラムを用意する。