データベースエンジニアと言えば、データベースの設計や構築・運用といった他の分野と同じようなイメージがあると思います。
しかしながら、データベースとは様々な使い方があります。
近年ではビッグデータの解析などアナリストなどの仕事もあります。
データに対するビジネスインテリジェンスが多様化している事でデータベース市場は非常に活発で上り調子だと言えます。
また、機械学習なども活発になってきているので、単純にデータベースを扱うだけではなくプログラムなども覚えた方が良いでしょう。
また、データベースという製品が利用者視点で設計されるといます。
データベースの構成についてはシステムに応じてフレキシブルに設計しています。
これはインフラエンジニアにはない特性で、アプリケーションに等しい考え方です。
そんなデータベースエンジニアの職種について書いていきたいと思います。
データベースエンジニアの職種
OracleDBの環境設計・構築・運用・保守
まず最初にデータベース製品で最も有名なOracleDBの専門職になります。
データベースの製品の導入と、それらに関わる設計から運用まで担う業務になります。
Oracle製品独自の専門性の高さから、Oracle社の製品に特化している部署を構えている企業も多いです。
ライセンスの見積もりなども複雑なため、予算を扱えるようなエンジニアになれば、ある種コンサルタントに近しい業務になります。
要件定義のフェーズで、データベースに必要な容量やメモリ、コア数、または冗長構成なども考える必要があるため、インフラエンジニアに等しい知識を有することになります。
案件数をこなすことで、構築の実績が積みやすいためOracle製品で一生ご飯を食べていく事もできます。
個人的にも、インフラエンジニアをどれだけ長く経験しようが、アプリケーションをどれだけ開発しようが、Oracleの仕組みについては全くもって経験値が活きない領域であると感じていますので、一つの知識に特化するのであればOracleは悪くはないと思います。
オープンソースデータベースの設計・構築・運用・保守
OracleDBやIBM者のDB2、日立社のHiRDBなどは全て有償ですが、無償のデータベース製品も存在します。
代表的なのがMySQLとPostgresです。
MySQLはゲームアプリなど、コストをかけずにサービスを多く作成していくような業務で多く利用されています。
オープンソースでデータベースを扱うメリットはライセンス費など購入・維持費が無い事ですが、デメリットはサポートは原則ないと思わなければいけないので、正しく扱える技術力が求められます。
近年ではサポート契約が出来たりしますが、基本的には自己解決能力が必要と思っておいた方が良いです。
ベンチャー企業に多く導入されている傾向にあり、技術志向で設備投資は極力避けたい企業に向いている製品群で、こういった製品に特化した企業ではまず間違いなくライセンス費の高いOracleDBは存在しません。
NoSQLの設計・構築・運用・保守
OracleDBやオープンソースデータベースの代表的な製品はRDBと呼ばれるリレーショナル・データベースと呼ばれるデータベース製品ですが、近年ではNoSQLと呼ばれる製品を使用している企業が多く存在します。
データベースに対して、まだ知識の少ない方もいると思いますので、少し解説すると、まずSQLというのは、データベースを操作するための言語になります。
例えば
上記は、IDが10の学生の名前を、STUDENTという表(エクセルのようなものと思って下さい)に問い合わせている記述で、それに合致するデータがあるとデータベースからNAME(名前)を教えてもらう事が出来ます。
それに対して、NoSQLとはこのようなSQL文を書く手続きをなくした製品です。
私もまだ触れて間もないので、正しい技術知識は持ち合わせていませんが、実際の業務でApache CassandraやMongoDBなどを使用している企業をたくさん見ています。
冒頭で述べたビッグデータを扱う時に、取り扱う事が多い製品です。
今、伸び盛りな市場ですので、NoSQL専門で扱えるエンジニアは増えていくと思われます。
ビッグデータ基盤設計・構築
近年、一番伸びているのがビッグデータの領域です。
ビッグデータを扱う上で、かならずデータ解析のための基盤が存在します。
大まかにデータウェアハウスと分散フレームワークの二種類に分けられます。
前者は、従来のデータベースの仕組みに大量のデータを投入する前提で、それらのデータを集計したり分析するようなSQLを使用できるような設計を行います。
その反面、従来はデータベースの応答速度はシステムにおいて重要視されていましたが、このやり方をするとデータベースサーバの応答スピードにも限界があります。
それでも、近年のハードウェアの性能向上などでインメモリー技術で高速化も出来ます。
また後者は、Hadoopなどを代表に、分析処理にかかる負荷を分散していく仕組みになります。
これらの違いは、データウェアハウスはデータを分析するためのデータベースを構築することに対して、分散フレームワークは、データの処理を分散して負荷を下げることを目的としています。
簡単に書くと、1台のPCで処理するよりも2台のPCで処理をさせた方が早いというイメージです。
データ量は変わらなくても処理を行うサーバを増設していく事でスケールアウトしていけるのが分散フレームワークです。
最後に
色々ご紹介させていただきましたが、ご自身がやってみたいような仕事はありましたでしょうか。
今回紹介した職種以外にも、たくさんの職種があると思うので、私の知っている範囲と書行ける内容で記載しているので、また書けるような内容が増えたら追記していきたいと思います。
ちなみに、私はOracleのエンジニアです。
SQL ServerとPostgresも小規模であれば設計構築しております。
これらの知識を活かして、ゆくゆくは、ビッグデータに携わりたいなと思って毎日勉強しています。
やりたいことがあるのは大事ですね。
データベースはどんなシステムでもコアになる技術なので、学んでおくと仕事の幅が広がっていくのでおすすめです。