質問: 下記のパターンでDBのメモリはどれくらいのスペックで見込めば良いか悩んでおります。 ■前提 データ量: 10GB~15GB テーブル数: 20程度 DB、スキーマ数: 1 ■用途 OLAP ■業務 200万行の投稿データテーブル(Aテーブルとする) 120万行の店舗データテーブル(Bテーブルとする) 上記2テーブルのリレーションテーブル(Cテーブルとする) Bテーブルの1行と結びつくAテーブルの行をテキストマイニングで、結び付けていく。 結びついたもの(AとBのID)をCテーブルに入れていく。 Cに入ったものは次の処理から外れる(Cの中のAのIDはユニークになる)。 ■パターン PostgreSQL9.6 1台 MySQL5.7 1台 MySQL Cluster 7.5 1台あたり6GBのメモリ ■個人的に考えていること MySQL Cluster 7.5を使ってみたい。 データ量が最大15GBなので、6GBのサーバを8台用意し、合計48GBなら運用できると想定。 ※管理・SQLノードは兼用 理由は約120万*200万の解析になるので、インメモリじゃないとパフォーマンスが出ないのではないかと思っています。 宜しくお願い致します。
回答: メモリが少なければ時間をかけて処理し、メモリが多ければより多くのデータを一気に扱って時間を短縮して処理できるだけかと思います。 バッチの要件で規定時間内に処理できるようテストを重ね、必要なメモリ量を割り出せばいいのではないでしょうか。 そんなに複雑な処理とは思えないので、少なめ(8-16GB)くらいでも十分かと思います。 問題は、処理した後のデータをクエリで取り出すと思いますが、そっちで利用するメモリのほうが多いと思いますが、そこは考慮しなくてもいいのでしょうか?