世の中には様々なプログラミング言語が存在します。データベースエンジニアは何を習得すれば良いのでしょうか。データベースを操作するうえでSQLという言語の習得は必須です。SQLで日常業務がこなせるようになってから他の言語を学ぶべきでしょう。そもそも純粋なデータベース業務において他のプログラミング言語が必要とされる場面は極めて限定的です。
この記事ではSQLとプログラミング言語の違いについて解説します。
また、データベースエンジニアを志す方、あるいはデータベースエンジニアになりたての方に、
どんな仕事にどのプログラミング言語習得するのが良いか解説いたします。
SQLとプログラミング言語の違い
SQLとプログラミング言語にはいくつかの違いがあります。
私見になりますが、データベースエンジニアが意識すべき違いは以下の2つです。
- SQLは一括処理を行い、プログラミング言語では逐次処理を行う。
- SQLはデータベース処理しかできない。
それぞれについて詳しく見ていきましょう。
一括処理と逐次処理
SQL(データベース処理言語)は一括処理を行い、プログラミング言語では逐次処理を行います。
この内容は別記事「データベースエンジニア必修言語SQLの特徴メリットデメリット種類」の
「データベース言語とは? プログラミング言語との違いは?」で詳しく解説していますが
ここでも簡単に説明します。
例えばデータベース内の社員名簿表から勤続年数20年の男性社員を抽出するとしましょう。これをSQLで記述すると
SELECT * FROM 社員名簿
where
勤続年数=20 and 性別=男
;
です。
このSQLを実行すると、データベース内部を処理を意識する事なく、結果が返ってきます。
スマホの動作原理を知らなくてもスマホが使えるのと同じです。
プログラミング言語で同じことをすると、
社員名簿表からデータを1件読んできて
それが条件に合致したら出力して、合致しなかったら何しません。
それを社員名簿表の全件分繰り返します。
という処理をプログラムしなくてはなりません。
この違いはデバッグ効率に影響します。デバッグとはロジックやプログラムが間違った処理をしている場合の調査を言います。
つまりSQLでは意図しない動作をした場合の記述ミスやロジックのミスを見つけづらいという事です。
であればすべてプログラミング言語で記述すれば良いように思えます。
しかし同じことをするのであれば圧倒的にSQLの実行速度が速いのです。
そればデータが多くなればなる程、顕著になります。また通常SQLの記述の方が簡単です。
SQLはデータベース処理専用
さきほどSQLは一括処理をおこなうため、比較的簡単にデータを抽出できる事をお話しました。
データを取り出すことができたら次にどうしたいですか。
たとえば、
月ごとに売り上げ推移のデータを抽出したら、折れ線グラフにしたいですよね。
それをWeb上で見れた方がよいですよね。
対象年月を変えたり、店別の売り上げを見たりしたいですよね。
そういったことはSQLにはできません。
受け取ったデータを表やグラフで見やすくす、Web簡単に検索条件を変更したりするには
プログラミング言語でシステム化する必要があるのです。
※SQL処理結果をエクセルに貼ってエクセルの機能でグラフ化する事はよくあります。
データベースエンジニア関連プログラミング言語
データベースから情報を抽出するだけであれば、SQLが一番効率的です。
ただし、情報を必要としている一般のユーザがSQLで検索する事はかなりハードルが高いと思います。
このためデータベースから情報を引き出しつつ、ユーザが使いやすい形に直して提供するのがプログラミング言語で作るシステムの役割です。
ここで紹介する言語はどれもよく使われている人気の言語です。
他にも言語は色々ありますが、データベースとの関わりを考えるとほぼ以下に挙げる言語に尽きます。
それぞれを詳しく見ていきましょう。
python
pythonは各種データベースとの接続のためのライブラリが用意させており、プログラム内部からSQLを実行することができます。
また、pandasといわれるデータ分析ライブラリがあり、データベースから抽出したデータをpandasを利用して分析する事ができます。
私見ですが、この言語はデータベースエンジニアの中でもデータを分析に興味がある方、あるいはデータベースエンジニアからデータサイエンティストを目指す人向きです。
pandasが便利だと私が感じる点は、データフレームというデータ型があり、データベースから抽出したデータを表形式でそのまま保持できる点です。
特にAI関連のライブラリが充実しているので、機械学習によるAI分析も容易にできます。
Java
JavaはJDBCと言われるライブラリがあり、データベースとの接続が容易であり、Javaプログラム内からSQLを実行することができます。
Javaはシステムの堅牢性が高く、大規模システム開発で使用されています。またJDBCを利用したBIツールも開発されています。
私見ですが、Javaはシステム開発向きなので、データベースを核にした大規模システムの開発に携わりたい方は、習得するとよいでしょう。
データベースベンダーもJavaで開発したBIツールを製品に添付しているもあり、データベースを利用するシステムやパッケージの開発は増えていくと考えています。
そういったシステムはデータベース本体つまりデータベース管理システム(DBMS)とは独立しています。
このため、DBMSをバージョンアップしたり、ハードを増強するだけでパフォーマンスや検索速度が向上し、システムが老朽化してしまうこともありません。
PHP
PHPはもともとPHP Tools(Personal Home Page Tools)と呼ばれていたことから分かるように、Webページの作成に特化しています。動的なWebページを作成するために使用されます。
初期のFacebookのWebサービスはPHPで記述されていました。PHP採用理由として以下があるとFacebook開発者向けサイトに書かれています。
プログラミング言語としてシンプルである故
- 習得が容易である。
- 他人の書いたプログラムがでも読みやすい(理解しやすい)
- デバッグが容易
私見ですが、このような特徴からインターネットからデータベースを検索するようなWebシステムの開発に興味のある方が学ぶとよいと思います。
まとめ
まず、データベースエンジニアとしてはSQLが最重要です。
あとはデータベースの知識をベースにどのように仕事の幅を広げていくかによって習得する言語選ぶとよいでしょう。