この記事では、データベースの基礎、初心者が学ぶべきデータベースとは?、ということで、
アプリケーションを作るにあたって
- データベースが必要と言うのはわかったけど
- どんなデータベースを使っていいかわからない
初心者の方に向けて、情報をまとめております。
この記事では
- データベースの種類
- Webアプリ開発初心者が使うべきデータベース
- 簡単なデータベースの設計の考え方とリレーションの概念
について説明していきます。
特典パートでは、話題のFirebase(ファイアベース)の仕組みを簡単に紹介しますので、ぜひとも最後まで特典パートを、ご覧頂ければと思います。
動画で見たい方はこちら!
このブログでは
- プログラミングスクールに通わずに
- ゼロから自分のサービスを運営してみたい
そんな人を応援しています。
記事の最後に、Youtubeの登録案内リンクも置いてあります。
目次
データベースとは?
データベースとは
- 簡単に言うと、エクセルのような表
- いっぱいデータが溜まっていくデータの塊
を示しています。
データベースの種類
そしてそのデータベースの種類というのは
- リレーショナル・データベース
- NoSQLデータベース
- 階層型データベース
- ネットワーク・データベース
などですね。
様々なデータベースの種類がありますが、今、主に使われているのは
- リレーショナル・データベース
- SQLデータベース
になります。
これらについて、詳しく説明していきたいと思います。
本日のメイン:リレーショナル・データベース
本日のメインに当たるところが、こちらのリレーショナル・データベースです。
Web界隈で最も使われているデータベースになりまして、
基本的にはどんなアプリケーションも開発することができます。
- MySQL
- MariaDB
というのが一番メジャーなデータベースになっておりまして、
こういったリレーショナル・データベースは、事前に
データを定義しておくことで、データの統一性というのがすごく高いものになります。
その代わり、ある特定の型のデータしか使えないので、プログラムの書き方によっては、結構、動作が重くなったりするので、
このあたり、
- Webアプリケーション開発者の手法が問われるところもあり
- 便利だけど、ちょっと取り扱いに注意が必要なデータベース
になってきます。
リレーショナル・データベースの仕組み
簡単にリレーショナル・データベースの仕組みを、説明
します。
エクセルの表が複数、固まったものが、リレーショナル・データベースだと思ってください。
例えば、このUsersテーブルならば
- ナンバー
- 名前
- 年齢
のような、入るデータの構造を、あらかじめ決めておく必要があります。
この例ではどれも3列のテーブルになっているんですけど、別にこれは
- 1列でも
- 10列でも
- 100列でも
大丈夫ので、この列数は自由に決めることができます。
ただし、一度決めたテーブルというのは、途中で変えることは結構難しくて、
あらかじめデータの構造をガッチリと決めておく必要があります。
大規模な開発をするときには、エンジニア間でのデータの変更などは、結構、厳密にやっておかないといけないので、
チーム開発においては、ちょっと大変だったりします。
その代わり、テーブル数は自由に決めることができるので、
多いものだと本当に50テーブル以上のデータベースで、運用しているものもあります。
こういった、
- テーブルを複数固めて
- 合体させて言ってデータを作っていく
ようなイメージです。
これをリレーションと言って、あとで詳しく説明するんですけど、
複数のテーブルを連携させて、データを作っていくので
「リレーショナル・データベース」という風に呼んでいます。
NoSQLデータベースの仕組み
続いて、NoSQLデータベースです。
これも今は、少しずつ使う頻度が高くなってきたデータベースになっておりまして、
- キー・バリュー型(Key Value Store)
- ドキュメント型
というものがあります。
まずキー・バリュー型(Key Value Store)から説明していきます。
こちらは、
- Redis
- Memchached
といったデータベースで使われるものになります。
基本、1対1のデータがずらーっと並んでいるような、そんなイメージになっております。
例えば、キーならば
- 「ネーム」をキーにしておいて
- 「打田」というのがバリューになるような
- 見出しと
- 中身
そんなイメージの構造にしています。
“name”: “uchida” のようなイメージです。
そのため複数のテーブルを合体させる、リレーショナル・データベースよりも、かなり高速に動作しております。
その代わり、データの統一性はありませんが、
データの統一性がない代わりに、
- すぐにデータを取り出したり
- データを入れないすることができる
ので、
かなり軽量で、高速なデータベースとなっております。
そのため、ビッグデータを扱う時なんかは、こういったキーバリュー型のNoSQLデータベースが使われることが多いですね。
NoSQLデータベース、ドキュメント型の仕組み
続いてNoSQLデータベースのドキュメント型というものになります。
上の図に示しているものが「json(ジェイソン)」という構造になります。
波かっこ{ }で囲ったあとに、これも
キー・バリュー(Key Value)
を、どんどん続けていくパターンになりまして、
キー・バリューの中に、もう一つジェイソン(json)を入れる、
いわゆる「入れ子構造」という構造もできたりしまして、
こちらは先ほどのキー・バリュー型とは違って構造化したデータも、格納することが出来ます。
こちらも、リレーショナル・データベースよりも、高速で動作します。
しかし、こういったドキュメントの形を、バンバン入れていけるので、
データの統一性は、かなり低くなってしまいます。
そのため、エンジニアが何人もいるチームだと、そのデータの統一性というのを、
あらかじめ最初に決めておかないと、収拾がつかなくなって、大変なことになります。
NoSQLデータベースのドキュメント型を使う際には、あらかじめルールの統一など、
しっかりしておく必要があるかと思います。
その他のデータベースの紹介
こちらは
- MongoDB
- よく話題になるFirebase
で対応されている型のデータベースです。
その他には
- 階層型データベース
- ネットワーク型データベース
というものがありますが、今は新規で使われることはありません。
そのため、この記事を読んでいる初心者の方は、まず勉強する必要はないと思って良いでしょう。
簡単に説明だけしておくと
階層型データベース
- データを分けないで
- どんどんデータをぶら下げていくの形
- 重複データが大量起きる
ようなデータベースです。
こういったものを使うと、かなり効率が悪くなってしまいます。
今はこういった、階層型・・・ネットワーク型データベースは、
リレーショナル・データベースに置き換えられているような、現状になっております。
結論:初心者は「リレーショナル・データベース」を学習すべき
この動画の結論としては、初心者が学習すべきデータベースは、リレーショナル・データベースに
なります。
- もっとも汎用的
- かなり多く使われていて
こういった
- MySQL
- MariaDB
- PostgreSQL
のようなオープンソースで、
無料で使えるデータベースがたくさんあります。
まずはリレーショナル・データベースから
勉強して言って頂ければと思います。
初心者がリレーショナル・データベースを使うべき理由
初心者がリレーショナル・データベースを伝えるべき理由なのですが
1つ目に
- 最初に構造を決めておくので、かなり開発がしやすく
- アプリケーション側の開発には迷いがなくなる
ということがあります。
2つ目としては、最も世界で使われているデータベースなので
- 攻略情報
- 設計の情報
なんかがかなり多くて、迷うことが少ないです。
3つ目は、単順に仕事が多いことですね。
日本でも一番多く使われているデータベースなので、
このデータベースを知っておくと、リレーショナル・データベースで作られた
- システムの保守運用
- 開発
などを行うことができます。
これをやっぱり最初に知っておくべきかなという風に考えています。
また理由4つ目で、皆さんは
- 独学でプログラミングをして
- Webアプリケーションを開発したい方
だと思いますが、
その際に、どんなアプリでも、リレーショナル・データベースを使うと対応できますので、
NoSQLよりも、かなり対応の幅が広がると考えていて、
この4つの理由から、初心者の方には、リレーショナル・データベースをお勧めしております。
リレーションとは?
それではリレーショナル・データベースの考え方、「リレーション(relation)」について少し説明しておきます。
テーブルを連携すること
リレーションとは、一言でいうと「テーブルを連携すること」になります。
今表示しているテーブルは、ごく簡単に作った「音楽共有サービス」のテーブル構造になります。
- このようにデータごとにテーブルを分けておいて
- 必要な際にキーと呼ばれるIDを使って
- テーブル同士をくっつけて連携する
ことを、リレーションという風に言います。
このテーブルでは
- 音楽と
- 音楽のカテゴリーと
- いいね
と言うのを、別々のテーブルで管理しています。
これらを一気に持っていきたいとき、
例えばTwitterの投稿画面などだと、「いいね数」とかわかるじゃないですか。
その際に、どうして取ってきているかと言うと、
- 「likes」というテーブルを、リレーションしてくっつけることによって、
- 「いいね数」をカウントしている
こういったことをリレーションというふうに言います。
では、具体例としては、このように連携させていきます。
ちょっとさっきの例とは異なるんですけど、例えば、「とあるメモアプリ」だとします。
メモアプリのメモを管理している、この
- 「Memo」というテーブルの中に
- 「ユーザーID」という項目
がありまして、
これが「誰のメモか」というのを示しているんですね。
それを
- 直接ユーザー名ではなくて「ユーザーID」で示しており、
- 右側の「Usersテーブル」と連携させることによって、
所有者を表示するという機能を実現させています。
この場合、全部ユーザーID「1」なので
- ユーザーIDの人をくっつけて
- データを取得することによって
- メモの所有者の名前を表示する
ことができます。
まとめと重要ポイント
それでは、まとめと重要ポイントに入っていきましょう。
- データベースにはいくつか種類があり、初心者はリレーショナル・データベースを使うべき
- リレーショナル・データベースには仕事が多く、かなり応用がきき、作れるアプリも多いので、おすすめ
- リレーションとは、リレーショナル・データベースの中にあるテーブルのデータをつなげて、一つのデータとして、まとめて取得すること
ここまで読んでくださった皆さんありがとうございます。
特典パート
特典パートとしては、「Firebase(ファイアベース)」の紹介を、簡単にしていきます。
Firebase(ファイアベース)とは
- Googleが作ったクラウド型NoSQLで
- バックエンドサーバをNocode化できるサービス
になります。
例えば、先程ご紹介したリレーションの部分などですね。
こういったデータ取得してくる部分というのを、実はある程度ファイアベースに任せることができます。
よく使われるのが、
- Platter・Swiftなど、スマホアプリケーションの言語や、
- Reactなどのシングルページ
- アプリケーション用のライブラリ
と組み合わせられるが多いです。
フロントエンドは、そういったSwiftやReactなどを作っておいて、
そこの通信部分を、ファイアベースに任せるイメージですね。
ファイアベースを使うと、
- SNSログインなども簡単に実装できるため、かなり重宝して、
- しかもこちらは自分でサーバーを管理する必要はないので、
アクセスが増えた時のスケーリングなども、自動で行なっている、とても便利なサービスです。
こちら、NoSQL型となりますが、NoSQLで実現できそうなアプリについては、
Firebase(ファイアベース)を使って実装するのも、かなり良い手段だと思います。
ぜひとも、こちらも興味ある方は調べてみてください。
チャンネル登録お願いします
最後までお読みいただき有り難うございました。
独学でWebサービスを開発運営してみたい方は、「Youtubeチャンネル」チャンネル登録をして、ぜひ次の動画をお待ちください。