Help us understand the problem. What is going on with this article?

SIerにおけるDBAのしごと

More than 3 years have passed since last update.

DBAという言葉は、もっと広い意味をもつとは思うのですが、ここでは、論理的なデータモデルの設計を管理する人という意味合いで使います。データベース上の物理配置やインデックス設計についてはここでは触れません。

モデルを書く

データモデルの出来は、実際のところ大きくプロジェクトの成否を左右します。

image

プロジェクトの失敗理由は、こんなところなイメージです。(3D円グラフについてはこちら http://qiita.com/kawasima/items/ada35712b70b3ffd9e3f)

イミュータブルデータモデルは、SIerが欲する一定の手順に沿うことで、一定品質のモデルができることを目指したモデリングの手法です。

image

イミュータブルデータモデル(入門編) http://www.slideshare.net/kawasima/ss-40471672

ひとことで言うと、「更新日時」をエンティティから排除せよ、ということです。

(続編の世代編もよろしければどうぞ)

image

イミュータブルデータモデル(世代編) http://www.slideshare.net/kawasima/ss-44958468

SIの現場だと、既存のデータベース設計をどこまで見直すかが難しい判断になりますが、イミュータブルデータモデルは初期構築だけでなく、データ運用や保守でのメリットが大きいので、そこまで含めての費用対効果を算出して、判断するようにしてください。

成果物としてはER図になりますが、ObjectBrowser ERを使うと、次の工程が非常に楽になります。ObjectBrowser ERは、ER図フォーマットのEDMファイルが、非常にパースしやすく、ツール作りやすいという点が特に優れていると思います!

モデルから開発環境をつくる

データモデルができたら、実際に開発環境を作り、各開発者に業務アプリケーションを実装してもらいます。ここで考えなきゃいけないのは、たいていのプロジェクトでは、プログラミング中にも少しずつモデルの変更は入ってくる、ということです。

SIの現場では、数十人〜数百人が同時に開発するわけで、このモデルの変更をいかに安全に素早く開発者の開発環境に反映させるかが、開発進捗に大きく関わってきます。このために開発したツールがGSP DBAプラグイン https://github.com/coastland/gsp-dba-maven-plugin です。

GSP DBAプラグインでは、以下のようなことがコマンド一発で可能です。

  • DDLを作る
  • スキーマを作りDDLを実行する
  • Entityクラスを作る
  • テスト用データをロードする
  • スキーマをExportする

ExportしたスキーマはJarとして、Mavenリポジトリにアップロードします。各開発者は、MavenリポジトリからスキーマJarをダウンロードし、GSP DBAプラグインのimport-shemaを実行すると、自分のローカル環境にDBAが修正した内容が、最速で反映されます。

テストデータを含むスキーマもバージョン管理ができるというところが重要で、これが「私のところでは動いたのですが…」という事件を少なくできます。

GSP DBAプラグインの使用感や使い方は、「そこ仁」の記事をご覧いただければ、と思います。
http://syobochim.hatenablog.com/entry/2015/12/12/232318

;; TODO GSP DBAプラグインを使ったExampleプロジェクトを作る

まとめ

(ダイジェスト的になってしまいましたが…) データモデルの品質やDBAの作業速度が、プロジェクトに与える影響をもっと評価し、そこにリソース投資するようにしましょう、SIerのみなさん!

kawasima
Clojure関連のことをブログがわりに書き綴ります。 ※ここでの発言はシステムエンジニアを代表するものであって、所属する組織は二の次です。
https://github.com/kawasima/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした