ITの世界は進化が速い事は言うまでもありません。
これまでの最先端だったテクノロジーや技術もあっという間に陳腐化する事も珍しくありません。
それはプログラム言語においても同じことが言えます。
1970代ほぼFOTORANとCOBOLで書かれたシステムしかありませんでした。
1972年にC言語が誕生してから新しいシステムはC言語で書かれることが多くなっていきます。
その後C言語をベースにC++やJava、Pythonが開発され主流になっていきます。
しかしデータベース言語は1970年代にSQLが誕生して以来、他の追随を許していません。
そしてデータベース言語としてこれからも主流であり続けると考えています。
この記事ではSQLの特徴とそのメリットデメリットについて解説いたします。
SQLが今なお主流であり続ける
前述のようにプログラミング言語の主役はこの50年で激しく移り変わってきました。
それなのにデータベース言語はSQLのままだったのは不思議ですよね。
その理由について私は以下のように考えています。
データベース言語は新規開発か既存言語の利用か
データベースを制御するためのデータベース言語は必要です。
初期のデータベースサーバはハードウエアの処理能力が非常に低かったのですが、処理能力が技術革新で年々性能が上がっていきました。
その性能向上によりデータベース管理システム(DBMS)の高機能高性能化が実現できました。
現在シェア上位のDBMSベンダーの創立は次の通りです。
DBMS | 現在のベンダー | 設立時の社名 | 創立年 | 備考 |
Oracle Database | Oracle Corporation | SDL | 1977 | |
SQL Server | Microsoft | Sybase | 1984 |
SybaseのSQL Serverがもとになっている。
|
MySQL | Oracle Corporation | MySQL AB | 1995 |
つまり各社設立時ばベンチャーであり、独自のデータベース言語を開発する余裕がなかったと考えています。
既にSQLが存在し、それに大きな不満がなかった事も大きいでしょう。
ただし、DBMSが商業的に成功し高機能高性能化するに従い各社SQLを独自に拡張していきました。
これがベンダーごとにSQLの方言(差異)がある原因と私は考えています。
現在SQLは国際標準化機構ISOで統一標準規格が制定されています。
DBMSベンダーは最新機能を競い独自拡張を行い、それISOが後追いし規格化する流れです。
データベース言語と最新技術
データベース言語はデータベースを操作する以上の事はできません。
つまりデータベースに新しい機能や技術がない限り、操作するためのコマンドやそれに最適化された新しい言語は不要です。
最近(2021年現在)最も使われているプログラミング言語ははJavaです。SQLはデータベース言語なので直接比較はできませんがJavaの特徴を取り込めるか以下で考えてみます。
Javaの特徴はオブジェクト志向ですが、オブジェクト志向のカプセル化概念とデータベースの概念には根本的に不整合があります。
詳細は省きますが、オブジェクト指向はデータベースと相性が悪いという事です。
また、Phythonも豊富なライブラリで人気の言語ですが、データベースで使用できるライブラリはSQLの関数として増やすかプログラミング言語でユーザ定義関数として使用するのが普通です。
つまりこれらに最適化された新しい言語を必要としていないと私は考えています。
SQLが使えるメリット・デメリット
SQLは宣言型の言語です。
このため以下のようなメリットがあります。
データの抽出から分析まで自分で行える(データサイエンティストに依頼する手間を省ける)
分析モデルを決めずに、対象データの内容を確認しながら動的に分析方法を変えていける
ベンダーの異なるデータベースでも検索方法は変わらない。
デメリットは複雑な抽出や条件づけは、集合論を用いた数学の知識が必要で習得に時間がかかる。
データベースエンジニアはSQLを使えてある程度使えて当たり前なのですが、データ分析業務に興味があれば、さらに深くSQLを学ぶとよいでしょう。
またデータ分析ユーザもSQLを学んで欲しいです。
例えば地域単位の売上データで売上げが低い地域の県別や市町村別のデータが必要になってきます。その場合、データ抽出の追加を他の人に依頼することなく分析作業を進められるので効率が断然違います。
まとめ
SQLはデータベースエンジニアにとって必須の言語であり、これからも廃れることはないでしょう。
また、SQLも機能追加をおこなっており、SQLだけで複雑な分析もできるようになってきました。
一般ユーザでも学ぶ価値があります。データベースエンジニアであればデータサイエンティストになる際も役立つでしょう。