ここ数年、データベース関連システムの開発方法に急激な変化が訪れている。そしてそれに伴い、データベース管理者(DBA)とデータベース関連システムの開発者それぞれの役割も変化している。本記事では、こういった変化が開発プロセスに及ぼす影響について考察している。
従来の役割
クライアント/サーバシステムが当たり前であった時代には、DBAの役割は(データベースのサポートを専門とする)システム管理者と、(アプリケーションが使用するさまざまなビューや、ストアドプロシージャ、関数といったものの開発を行う)開発者の役割を兼ねていた。そして、DBAはパフォーマンスを最大限に引き出せるようなハードウェア構成やOS構成の最適化方法について熟知している必要があった。また、実際にシステムのパフォーマンスを最大限に引き出すうえで、テーブルのパーティショニングや、精緻なインデックス作成、細々した調整といった小ワザをいくつも使える必要があった。さらに、DBAはセキュリティ問題への対応も行っていた。例を挙げると、DBAはデータベースに対するアクセス権限を厳格に定めたストアドプロシージャを作成し、必要に応じてそのストアドプロシージャをアプリケーションに公開し、基となるテーブルをロックダウンしておくといった作業を日常的に行っていたわけである。
一方、開発者はたいていの場合、DBAに主導権を握られていた。データベースへの完全なアクセス権はDBAが掌握しており、必要な場合にのみアプリケーションやユーザーに権限を付与するようになっていたのである。またDBAは、開発者にデータベースのモデリング作業を任せるということを嫌っていた。というのも、開発者の設計したデータベースの品質は、あまり優れたものにはならないというのが通例だったためである。さらにDBAは、データベースに対するカスタムSQLの実行を開発者に行わせるということに難色を示していた。なぜなら、開発者はDBAほどにはデータベースに精通しておらず、彼らの開発したSQLコードのパフォーマンスが高くないことも多かったためである。
とは言うものの、多くの組織ではこういった区別や役割分担が存在していなかった。開発者に対してデータベースシステムへのフルアクセス権限を付与しているIT部門もあれば、開発者が基本的にDBAを兼ねており、サーバ管理担当者がその他の作業を受け持つというケースもあった。しかし大企業では、上記のような役割分担が一般的であり、そういったことは当分変わらないだろうと考えられてきた。