1.DB2で下記のようなことをいろいろ試す
・いろいろなテーブル構造
・いろいろなSQL
・JDBCドライバ経由のクエリ
・バッチ処理を想定した重い更新系SQL
・HAクラスタ管理下のDB2の障害模擬と耐久性テスト
・バックアップとリストア
・DR環境へのレプリケーション
・参照系DB2の負荷分散とスケールアウト
2.シミュレーション環境
実際にありうるテーブル構造、実際に投げられうるSQL、実際にありうるアプリケーションからのクエリを模擬してみて、性能計測、問題分析模擬、性能評価、チューニングをしたい。
そのためには、おもちゃじゃないアプリケーション、おもちゃじゃないアプリケーションサーバ、
そこそこの負荷、そこそこのサイズのデータ、そのデータのバックアップシステム、REORG、RUNSTATSするバッチジョブなどががないと、意味のないシミュレーションに終始する。
表領域用のコンテナも実際のストレージ上の複数のLUNをアタッチして認識したブロックデバイス上に作りたい(RAWデバイスとファイルの両方試す)。
3.DB2のしくみを理解する
DB2を構成する
・プロセス(スレッド)
・メモリ領域
・ファイル
を把握する
ファイルなら、一時ファイル、日々サイズが増えていくもの、実行ファイル、ライブラリ、カーネルモジュール、表領域(ファイル上に作った場合)、トランザクションログなど
メモリ領域なら、各種キャッシュ、各種ヒープ、逼迫すると速度に影響するもの、どのくらいのサイズが必要となるかなど
■1.をするためには、おもちゃじゃないアプリケーション、アプリケーションサーバ、SQL、テーブル構造、バックアップシステム、HAクラスタ設定、ストレージを設計して2.を構築する必要がある。そして3.のしくみの理解をしたい。だがいきなり最初から合格点の2.を作れない。
下記の不足してる知識分野を攻める必要がある。
・SQL ← 中級者以上の知識が必要 ← 本読むか
・テーブル構造 ← 中級者以上の知識が必要 ← 本読むか
・TSA ← 3.のDB2のファイル構造、メモリ構造の理解なしにクラスタ内のノードをつくれない
← まずはクラスタしてないシングルサーバ上のDB2の理解から
・アプリケーションサーバとJDBC ← OLTPの何たるかを知る。JAVAじゃなくてLAMPでもいいと思うが、とにかくおもちゃじゃないアプリケーションとアプリケーションサーバからおもちゃじゃないSQLを投げさせたい。JAVAするなら、JVMをOS上で正しく走らせる、JAVA SEを正しく読み込ませてJAVAアプリケーションを動かす。そしてJAVA EEを正しく読み込ませてサーブレットをコンテナ上で走らせないといけない。
基礎知識として不足してるものは下記の通り
・SQL
・テーブル構造
・JAVA
次に
・WAS
・JDBCドライバ
・DB2
そして
・DB2 on TSA
・チューニングされたDB2
・チューニングされたWAS
・負荷分散された参照系DB2
そして、上記の2.→1.→3.を攻める。
■野望
・DB2を通してRDBMSの何たるかを知る
そこから他のRDBMS(oracle、MySQL、PostgreSQL)との比較を試みる
OSのファイルシステム、メモリ管理に使われているアルゴリズムをDB2を学んで再考する
LVM、XFS、BtrFSに対する考察を試みる
・DB2を通してデータベースの何たるかを知る
そこから、NoSQL、分散ストレージがなぜ注目されているかを知る