妻にIT業界の仕事を教えるシリーズ。
今回はデータベースエンジニアについて紹介します。
夫(筆者)のプロフィール
30代の現役システムエンジニア。IT業界に入り十数年。 クライアントへの企画提案、少しコンサルティング、PM、要件定義・設計・開発・テスト、保守・運用まで一通り経験。 詳細な経歴はこちらから。
そもそもデータベースとは?
データを格納する箱をイメージしてください。
例えばショッピングサイトでは自分の情報とか商品の情報、閲覧履歴、購入履歴、。。いろいろな情報があります。
これを必要なときに必要な情報を取り出したり更新・削除できる箱のイメージです。
最初はExcelなどの表計算アプリのシートがいっぱいならんで格納されている箱とイメージしてもいいかもしれません。
データベースについては妻も勉強中なので別の機会でまとめたいと思います。
どんな仕事?
データベースの設計・構築・運用を行います。
データベースの設計
拡張性、修正のしやすさ、パフォーマンスいろいろ考えて設計します。
たとえばショッピングサイトの購入履歴のデータに商品名を入れてしまうと、販売側が商品名マスタを変更したときにデータに矛盾が発生します。
また、販売側が商品名を変えた際、購入履歴のデータを全て書き換えようとすると、100人が商品を買っていたら100回分の更新処理を実行しなければなりません。
これを商品名ではなく購入履歴をIDで管理しておくことで、データの書き換えは一回のみで済みます。
データベースの構築
データベースもサーバの中で動いています。
サーバにデータベースのソフトウェアをインストールして設定します。
そして、設計したデータベースの空の箱を作っていくイメージです。
データベースの保守運用
たとえばショッピングサイトで全部を検索したらなかなか結果が表示されない、という経験があるかもしれません。
これは箱から大量のデータを引っこ抜こうとして、データ量が増えてしまうことが原因です。
レスポンスが悪いとユーザがイライラしてサイトの離脱の原因となり、売りたかったものが売れない機会損失ということになります。
システムとしての品質が下がるということです。
他にもテーブルのリレーションのつけ方やSQLの書き方が良くなくて…などパフォーマンスが下がる原因はいろいろあります。
もちろんアプリ側から大量のデータをひっこぬけないようにするなどの改善も必要です。
データベースの側でもより早く処理できるようにチューニングする必要があります。
例えば、こんなことをしています。
- SQLパフォーマンスの改善
- データベースの再設計
- メモリーの増設
どんなスキルが必要なの?
まずは基礎的なシステム開発の知識は必要です。
次に扱うデータベースの固有の知識、プロジェクトによってOracleだったりSQLServerだったりMySQLだったりデータベースソフトウェアが異なります。
SQLの基本的な構文は同じだけど、それぞれ固有の機能があります。
あとはアプリケーション・システムの仕様を正確に理解できる言語能力と、仕様を作った人と円滑に会話で切るコミュニケーション能力が必要です。
どのIT業界ではたらけるの?
データベースはシステムを作る上で絶対必要になるもので、どの業界でも必要になります。
ブログ(Wordpress)などもデータベース使っています。
強いて言うならWebデザイナーの世界では使う機会は少ないかもしれません。
儲かるの?
データベースはどのシステムでも使うことになるのでデータベースに強いエンジニアはどの業界でも重宝されます。
設計・構築・チューニングのスキルがしっかりあれば引く手あまたです。
特に最近はビッグデータっていう言葉もありますし、会社が持っている(もしくは外部から購入できるデータ)をうまく活用して新しいことをする動きもあるから今後も需要は増えていくと考えられます。