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、分散ストレージがなぜ注目されているかを知る