最近思うこと

読めば読むほど,よくMark Matthews氏はこれを実装したなと思う.もともと何かのプロトコルを実装するというのは大変な作業なのかもしれないけれども.

一方でやっぱりC/Jは中身がかなりごちゃごちゃしているなとも思う.JDBC APIという最上位のレイヤーとMySQLプロトコルという最下位のレイヤーを上手くつなぐのがC/Jの仕事なわけだけど,C/Jそのものの中身はあまり綺麗にレイヤー化されてはいなくてぐちゃぐちゃしてる.また,何年にも渡っていろんな機能が逐次追加されてきてるから余計にそう感じる.

単純にOOAで考えるとあまり良くないと思う部分も目に付く.ServerPreparedStatementのfillSendPacketsとかそもそも呼ばないのが正しいし.

でもコテコテのOOAで再設計/再実装したら,ソースは読みやすくなるけど,オーバーヘッドが増えて性能はさがっちゃいそうな気もする.だからまあ,いまのC/Jはいまのままで良いんじゃないかとか思う.各Packetに対応したクラスとか作れば分かりやすくなるけど今のBuffer使いまわしのほうが速いし.

JDBCドライバに求められる要件て,たぶん一にも二にも性能ですよね.だってRDBMSに求められる要件と一緒でしょうから.