
データベースという言葉は聞いたことがありますでしょうか?
私たちが普段使っているサービスやシステムでは必ずと言っていいほど利用されているのがデータベースです。
プログラミングを行っていくうちにデータをずっと保存しておきたいことが必ず出てくるようになります。
それを保存しておくために利用する道具をデータベースと呼んでいます。
データベースとは何か? どんな種類のデータベースがあるのか説明します。
少し難しいのでプログラミングをやっていくとデータベースという入れものを利用することになるんだなぐらいのことがわかればOKです!
データベースとは?
エクセル(Excel)またはスプレッドシート(Google Sheets)という表計算ソフトはご存知でしょうか?
何かのデータを一覧にしてまとめておいたり、グラフにしたりととても便利な道具です。
例えば図書館でどの本が誰に貸し出されているかなどを管理することなどに使えます。
上記のような表があるとどの本を借りることができるのかパッとわかりますね。
図書館の貸し出した本などを管理したい場合にはエクセルでも十分そうですね。
ただもし貸し出し表を先生ごとに持っていたらどうなるでしょうか?
例えば2番目の『Code Complete』を山本太一くんが借りたとします。
その時に斎藤先生が自分のエクセルファイルを使って状態を『貸し出し中』に貸している人を『山本太一』に変更したとします。
そんなところに三井先生のところに『Code Complete』を借りたいという生徒がやってきました。
三井先生は自分のファイルをみたところ『貸し出しできる』とあったので本を探しますがありません。
これは斎藤先生が記入した、『貸し出し中』に貸している人を『山本太一』に変更した内容が三井先生のファイルには反映されていなかったからです。
データの内容に変更があった場合は全てのファイルが同じ内容になっていないとおかしなことになってしまいます。
このようなデータを1つにまとめてみんなで共有し、管理するものをデータベースといいます。
データを1つの場所にまとめることで誰がみても『Code Complete』は『山本太一』くんが借りているということがわかるようになります。
データベースの種類
一般的にデータベースと呼ばれているものにはいくつか種類があります。
ここでは代表的な5つのデータベースを紹介します。
- リレーショナルデータベース
- キー・バリューストア
- 階層型データベース
リレーショナルデータベース(RDB)
現在最もよく利用されているデータベースです。
関係データベースと呼ばれているもので一般的にプログラマの会話で『データベース』という単語が出てきた場合はリレーショナルデータベースを指します、
特徴は理解しやすい二次元表で管理されているので直感的にわかりやすいことが挙げられます。
用途に応じて二次元表を作りそれぞれを連携させることでデータベースを作り上げていきます。
イメージとしては先ほど出てきたエクセルのイメージとほとんど変わりません。
キー・バリューストア(KVS)
最近ではよく使われるようになってきたデータベースです。
データをKeyとValueの組み合わせだけで保存しているデータベースです。
それだけではなんか役にたたなさそうと思った方鋭いですね。
確かにデータを管理するにはちょっと難しいのですが最大の特徴は高速にデータにアクセスできることにあります。
大量の単純なデータを高速に探し出したいというような処理をする場合によく使われています。
なのでメインでいろんなデータを保存するのにはリレーショナルデータベース。
ある一部のデータの管理はキー・バリューストア。
といった具合に合わせ技を使うのが一般的です。
階層型データベース
データを階層構造(木構造)で表現しているデータベースです。
現在ではあまり利用されておらずリレーショナルデータベースが現れる前に利用されていました。