SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新人エンジニアに贈る、SQL Training

Web開発に必要不可欠なデータベースやSQLとは? SQL習得に必要な基本のキを学ぶ

新人エンジニアに贈る、SQL Training 第1回


  • このエントリーをはてなブックマークに追加

 本連載は、これから本格的にプログラミングおよびデータベースの学習を始めようとしている方や新人エンジニアを対象に、リレーショナルデータベースとその操作言語であるSQLを中心とした体系的な学びをお届けします。第1回となる本記事では、データベースやSQLの歴史を振り返りながら、データ独立性やリレーションという重要な概念について触れていきます。

  • このエントリーをはてなブックマークに追加

データベースとは?

データベースとDBMS

 データベースの厳密な定義はありませんが、ここでは数ある定義の中から一つ、ご紹介します。“A database is an organized collection of interrelated data that models some aspect of the real-world“(CMU)。つまり、データベースとは、実世界のある側面をモデル化した、秩序だった、相互に関連したデータの集まりを指します。

 そんなデータベースとよく間違われるのがデータベース管理システム(DBMS)です。DBMSは、データベースを管理するソフトウェアです。例えば、MySQL、 SQLite、 PostgreSQL、 Oracle Database、MongoDBなどがDBMSに該当します。DBMSの目的は、アプリケーション(データベースの利用者)とデータベースの間に入り、アプリケーションが容易にデータの出し入れできるようにすることです。

DBMSの立ち位置
DBMSの立ち位置

初期DBMSの問題

 容易に出し入れさせることが目的と言いましたが、初期のDBMSは論理層と物理層が密結合しており、DBMSの開発者も利用者もさまざまな苦労をしていました。ここでは、初期のDBMSを利用するアプリケーション側での問題について順を追って説明したいと思います。

 (1) まず、データベースは、実世界のある側面をモデル化した存在です。この例では、学生クラブの部員名簿がモデル化されています。(2)データベースは、2つのCSVファイルから構成されます。学生データと学生が参加するクラブのデータがそれぞれCSVファイルとして表現されています。

 (3) 初期DBMSは、データベースの抽象化がうまくできないため、物理ファイルであるCSVファイル単位でやり取りをします。(4)すると、アプリケーション側は、データのread/updateの度に、CSVファイルをパースする必要があるほか、CSVファイルの構成が変わったらそれに追随する必要があります。このようにしばらくの間、DBMSというのはアプリケーションにとって使いやすいと言えるものではありませんでした。

論理層と物理層の密結合問題の例
論理層と物理層の密結合問題の例

リレーショナルモデルとRDBMS

 1970年代、この密結合問題がある革新的なアイデアによって鮮やかに解決されます。1970年に、IBMで働いていたエドガー・F・コッド博士がリレーショナルモデル(関係モデル)を提唱しました。リレーショナルモデルには大きく3つの特徴があります。

 1つ目は、シンプルなデータ構造です。データベースは、リレーション(イメージ的には列と行で構成される表)の集まりとして表現されます。2つ目は、高水準な言語によるデータ操作。クエリ言語というものが理論ベースで提案されました。最後は、データの​​独立性。これは、アプリケーションをデータベースの物理的な側面から分離し、その改変から無関係にすることを指します。つまり、データを物理的にどう表現するかやどこに格納するかなどが関係モデルから切り離されたことで、データの物理構造が変化してもアプリケーションが影響を受けにくくなるということです。

 リレーショナルモデルは、データベースをうまく抽象化することで、初期DBMSと比較にならないぐらいデータの出し入れを容易なものにしてくれました。当時、関係モデルのアイデアは非常に革命的だったことから、数多くの議論が生まれましたが、彼の論文発表以降、関係モデルに準拠するDBMSの開発・商業化はどんどん進み、結果的には業界のデファクトになりました。そういう背景もあり、DBMSと言えば、伝統的に関係モデル準拠を指します (正確にはRDBMSです)。

データモデル

 次にデータモデルの話をします。リレーショナルモデルは、データモデルの一種です。データモデルとは、対象の実世界をデータで表現するための概念の集まりを指します。そして、データモデルで記述された具体的なデータの集まりは、スキーマと呼ばれます。下図は、データモデルを使用したデータベースのデータモデリングを表しています。

データベースのデータモデリング
データベースのデータモデリング

 リレーショナルモデル登場以前には、ネットワークモデルや階層モデルというデータモデル準拠のDBMS もありました。それらのDBMSを第一世代DBMSと呼ぶ場合もあります。RDBMSはそれに続くものなので第二世代DBMSとも呼ばれます。

 リレーショナルモデル登場以降、何十年もの間、アプリケーション開発においては、リレーショナルモデルが主に使われていました。しかし、2000年代以降、柔軟性、スケーラビリティ、機能性などの面でリレーショナルモデルより優れたデータモデルが採用されるケースが増えてきました。これらの新しいデータモデルをそれまでと区別するためにNoSQLという用語が登場しました。非リレーショナルという意味です。代表的なNoSQLには、ドキュメント、キーバリュー、グラフベース、カラムファミリーなどが含まれます。

 この連載の中心はリレーショナルなもの(リレーショナルモデル、RDB、RDBMS、SQL)なので、非リレーショナルなNoSQLは触れません。しかしながら、アプリケーション開発をする方なら、今後触れる機会が増えていくに違いないので、ぜひチェックしていただきたい技術領域です。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
SQLとは?

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
この記事の著者

三宅 悠太(ミヤケ ユウタ)

 海外の大学でコンピュータサイエンスの学士を取得後、株式会社サイバーエージェントに入社。チャットボットプラットフォームのバックエンド開発などを経て、現在は、株式会社メルコインで、暗号資産やブロックチェーンに関するサービス開発に従事。その他、TechTrainのメンタリングも務める。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16513 2023/01/20 17:19

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング