レンタルサーバーのデータベースとしてほぼ100%利用されている「MySQL」ですがレンタルサーバー初心者の方でも理解できるように分かりやすく解説してみました。
MySQLは事実上、デファクトスタンダードになった
私はインフラ系エンジニアをやっていますが、MySQLはサーバー構築のデファクトスタンダードになっています。
「RFP(提案依頼)」や「要件定義」や「要求定義」の段階で必ず「MySQL」を提案しています。
たまに「Oracleがいいのでは?」とか「PostgreSQLを使っているんだけど」という意見も出てきますが、「金額(コスト)」や「リスク」や「スキル見合い」や「情報量」などいろいろ理由を付けて最終的には「MySQL」に持っていきます(笑)
確かに昔は「Oracle」とか「PostgreSQL」など選択肢がありましたが今は「MySQL」一択です。
その理由はいつくかありますが、
- フリー・無料
- プログラムとの連携が優れている
- 処理が速い
- 冗長化も可能
- 情報量が豊富で不明な点がない
です。
やはり一番の理由は「無料」である点です。
Orableに数千万円掛けても利益が出るようなシステムなら使ってもいいのかもしれませんが、それでも私は「Oracleに数千万円お金をかけるくらいなら、サーバーやサポートや人間にお金をかけるべきだ」と主張して無駄なお金を使わないように提案します。
実際Oracleでしか実現できないことはそんなに多くなく、Oracleでしか実現できないようなシステムなら最初から私の出る幕は全くないので、そもそもOracleにはほとんど触ったことがありません。
これは現場のエンジニアの一つの意見です。
MySQLはデータベースである
MySQLの解説を続けますが、MySQLはデータベースです。
データベースとは「データの格納庫」です。
山ちゃんやタマちゃんの住所や連絡先など様々な情報が大量に格納されています。
そのデータの格納庫を「データベース」と言います。
情報がたくさん入っている「データベース」を管理するのが「データベースサーバー」である
データベースは単純にたくさんの情報が入っている倉庫のようなものだとイメージしてください。
そのたくさんの情報が入っている倉庫(データベース)を管理するアプリが必要です。
そのデータベースを管理するアプリが
- MySQL
- Oracle
- PostgreSQL
- Microsoft SQL Server
などです。
データベースを管理するアプリを「データベースサーバー」と言います。
データベースの情報はデータベースサーバーによって極めて組織化されているので、必要な情報を最短時間で取り出す頃ができます。
データベースサーバーとデータベースは「SQL」で会話をしている
「データベースサーバー」と「データベース」は、「この情報が欲しい」とか「こういった情報を作ってほしい」など会話をしなければいけません。
その「データベースサーバー」と「データベース」が会話をする言語が「SQL」です。
SQLは「Structured Query Language(構造化問い合わせ言語)」と言います。
データベースサーバーは通常、Webサーバーと連携を取りながらデータの問い合わせに対して回答するといった形式でデータを提供しています。
MySQLのデータベースは「テーブル」の形式で情報を格納している
MySQLのデータベースは「テーブル」の形式で構成されています。
テーブルの形式とは、「Excel」の表をイメージしてもらえば分かると思いますが、「行」と「カラム(列)」から構成されています。
たとえば、この表は「山ちゃん」の行に「東京都」や「yama@example.com」などの情報が入っています。
また、住所1のカラム(列)には「東京都」という情報が入っています。
電話帳のような単純なデータベースなら1つの表だけで十分ですが、複雑なシステムになると1つの表だけでは足りなくなります。
MySQLではこの表を「テーブル」と呼びます。
通常のシステムではテーブル(表)は複数で構成され、問い合わせに対して様々な組み合わせで必要な情報を提供します。
例えば、こんな感じで問い合わせが来ます。
- 東海道新幹線に乗りたい
- 行先は大阪
- 4月9日の午前10時~午前11時30分の間
- 指定席
- 窓側に座りたい
実際に日常生活の中でいろいろなシステムを使うと思いますが、かなり複雑に指定しますよね。
例えば宅急便の再配達だって「4月9日~4月16日の中でいつでもよい」ではなく「4月10日午後16時~18時の間」など複雑な指定をしていると思います。
このようにいろんな条件を加えていくといつの間にかテーブルの数も多くなってしまいます。
データベースとテーブルの違いは何?
データベースもテーブルもどちらもデータを格納するためのものです。
例えると
データベース → マンション
テーブル → 部屋
でしょうか。
たとえば、住人を収容するとして、マンションに各部屋がなくて体育館のような広い空間に収容することもできます。
しかし、かなりカオスな状況になりますよね(笑)
いろんな家族がごちゃまぜになって、子供もどこにいるのかよく分からないです。
しかし各家族ごとに部屋を作り、そこに家族単位で収容すればまとまりますよね。
だからイメージとしては、大きな入れ物が「データベース」で、細かく分類した入れ物が「テーブル」だと思ってください。
MySQLデータベースにアクセスするための2つの手段
MySQLデータベースを通してデータベースを操作しますが、具体的にはどうやって「データベース」にアクセスすればいいのでしょうか。
以下の2つのツールを使ってデータベースにアクセスしてデータを操作します。
- MySQLターミナル
- phpMyAdmin
MySQLターミナルの場合
通常はTeratermを利用してDBサーバーにログイン後、「mysql」コマンドでMySQLデータベースにアクセスします。
$ mysql -u xxxx -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2729 Server version: 5.7.17 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement. mysql> ←MySQLにログインしてMySQLターミナルにアクセスした状態 |
MySQLターミナルとはコマンドラインインタフェースからMySQLサーバーにログインしてアクセスする方法です。
ちなみに「ターミナル」とは「端末」の意味で、情報の「入力」や「出力」を担当するツールのことです。
phpMyAdminの場合
phpMyAdminはWebアプリ化されています。
ブラウザよりphpMyAdminにアクセスしてアカウントとパスワードを入力して利用します。
phpMyAdminはWebアプリケーションです。
通常、レンタルサーバーにはphpMyAdminが付属していますが、このWebアプリケーションは以下のサイトから無料でダウンロードできます。
この「phpMyAdmin」というWebアプリケーションでMySQLデータベースへのアクセスが可能です。
PHPで開発されていて、WebサーバーにインストールしてWebサーバー経由でデータベースにアクセスします。
だから自分のパソコンにインストールする必要はありません。
ただ、「MySQLターミナル」や「phpMyAdmin」を利用する機会はそうはないでしょう。
あるとすればWordPressの引越の際くらいでしょうか。
結論
データベースの役割については何となく理解できたでしょうか。
WordPressでは多くの情報を扱っています。
- 記事タイトル
- 記事コンテンツ
- カテゴリ
- 投稿日
- タグ
など、これらの情報はすべてテーブル(表)の中に規則正しく格納されています。
サイトの閲覧者がアクセスすると、その都度WordPressがデータベースの中から該当する情報を引っ張ってきて、WordPressのサイトを構築して閲覧者に情報を提供しています。
もしこれがデータベースがなくてファイルの中にごちゃ混ぜになっていて、その中から選択して組み立ててという手順だったらサイトにアクセスしても表示されるまでに長い時間が掛かりそうですよね。
データベースとはこのようにいかに組織的に管理して1秒でも高速に必要な情報を見つけて回答することに特化したアプリケーションです。
コメント