WordPress初心者向け講座・詳細解説データベースとは何か?
2017/03/12
初心者向け講座・データベースとは何か?
データベースは、具体的なファイルの中身を見ることが難しいため、プログラムの開発経験がない方にとってデータベースはちょっと取っつきにくい存在だと思います。
ですが、最初の取っつきにくささえクリアできれば、それ以降は比較的すんなり理解が進むのではないか、とも思っていますので、たぶんこんなところが分かりにくさの原因なんじゃないか、と考えつつ解説をしていきます。
データベースは難しくないですよ。
なぜなら、エクセルを使ったことがある方なら、データベースの仕組みも基本的に同じなんだ、ってわかってもらえると思いますから。
まずはじめに、データベースの取っつきにくさの原因となる言葉の説明から始めましょう。
データベースとは何か?言葉の意味の説明
まずはじめに「データベースとは何か?」という話から始めましょう。
データベースは、データのベース、つまり、データの基地、データの拠点といった感じの意味です。
つまりは、データがいっぱい集まっているもの、ということです。
広い意味でデータベースとは、上記の通り、データの集まりのことを言いますので、例えば、エクセルに交通費の一覧表を作ってその中にデータを書き込んでいったものもデータベースですし、名刺を集めた名刺入れのファイルもデータベースと言えます。
ですが、WordPressを含めたシステム開発の現場においてデータベースという場合は、狭い意味でのデータベースのことを言っていまして、RDBMS(Relational DataBase Management System、リレーショナルデータベースマネジメントシステム)を指しています。
WordPressのユーザの方であれば、WordPressで標準的に利用するデータベースである MySQLという名前を聞いたことがあると思いますが、この MySQLこそがここでいう狭い意味でのデータベースです。
WordPressのユーザであれば、「データベースは MySQLなどの RDBMSのこと」という理解で問題ありません。
「MySQLなどの」という表現をしましたが、RDBMSであるデータベースには WordPressの標準データベースである MySQLの他に、プラグインをインストールすることで使えるようになる SQLiteというものや、Oracleや PostgreSQL、MS-SQL(Microsoft SQL Server)、MS-Access(Microsoft Access)など様々なデータベースがあります。(「Oracle」は会社名も「Oracle」のためややこしいですが。)
いくつか名前は聞いたことがあるのではないでしょうか。
データベースは、それぞれが一つの製品(有料のものやオープンソースのものなど様々ですが)として提供されていまして、それぞれアプリケーションとして名前が付けられています。
そして、それをサーバにインストールすることで、サーバでアプリケーションである MySQLなどのデータベースを利用できるようになるのです。
例えば、
「データベースは何を使いますか?」
「WordPressで使うデータベースは MySQLです。」
といった表現の時に使われる「データベース」は、この RDBMSのシステム(プログラム、製品)のことをさして「データベース」と言っています。
ここでは、RDBMS(リレーショナルデータベースマネジメントシステム)としていますが、DBMS(データベースマネジメントシステム)は、意味合いとしては同じです。
「RDBMS」の方が「R」が付いているだけ条件を制限した DBMSなのですが、一般的な Webサイト構築などでは RDBMS ≒ DBMSなので、同じと思っておいて問題ありません。
データベースの中にデータベースが
改めて「データベース」ですが、データベースの理解を妨げる一つとして、言葉の問題があります。
先に述べたように、MySQLや SQLiteなども「データベース」と表現しますが、データベースで管理している中身も「データベース」と言います。
そのため、どれのことを言っているのか分からなくなることなどが取っつきにくさの原因になりますので、ここではそれについて説明します。
RDBMSの仕組みとしては、データが入っている入れ物としての「データベース」と、その「データベース」を管理する管理アプリケーションとに分かれます。
まず一点、「データベース(RDBMS)」で管理されているものも「データベース」というのが分かりにくくなる点ではないでしょうか。
ここでいうところのデータが入っている「データベース」の意味で使われる例として、
「このレンタルサーバで利用できるデータベースの数は 5個です。」といった場合や、
WordPressのインストール時に「データベース名」の入力を求められますが、ここでいう「データベース名」というのがデータを入れておく「データベース」の名前の意味になります。
ここでの意味は、MySQLといったアプリケーション、RDBMSの意味での「データベース」ではありません。
そして、さらに「データベース」の中は、実際にデータを入れる入れ物である「テーブル」というものに分かれています。
「テーブル」は「表」という意味で、エクセルの一覧表のような状態でデータが入っているものを想像してもらうといいでしょう。
WordPressの場合は、wp_posts、wp_postmetaといった「テーブル」が作成され、その中には、投稿データが「投稿者」「投稿日」「タイトル」「本文」といった項目に分かれて保存されています。
【上記は phpMyAdminの画面です】
先ほど説明したように、「テーブル」の中にはデータが入っているのですが、このデータを取り出すには取り出すためには決められた手続きを踏む必要があります。
その手続きというのが SQLなのです。
SQLは、データベースを操作するデータベース言語で、厳密にはプログラム言語ではありませんが、プログラムのような感じの SQL文を記述することで、その記述内容に基づいてテーブルからデータを取り出したり、データを更新したりすることができるようになっています。
そして、この SQL文を受け付けて処理を行ってくれるものが、データベースのマネジメントシステムである RDBMSと呼ばれるアプリケーションの部分なのです。
RDBMSに対して SQLを送ると、その SQLを解釈してデータベースに対してアクセスをしてデータを取得します。
そして、取得したデータを私たちが利用しやすい形で画面に表示してくれたり、csvファイルとしてダウンロードできる状態にしてくれるのです。
また、SQLは ISO(国際標準化機構)で標準化されていますので、基本的にどのデータベース(RDBMS。MySQLとか SQLiteとか。)で利用する場合も同じ記述方法で同じ結果を得ることができます。
ただ、実際の作業を行う際は、RDBMSに対して直接 SQLを入力するのは面倒ですので、多くの作業をブラウザの画面から操作できるようにするツールが用意されています。
WordPressで利用される MySQLには、phpMyAdminという管理ツールが用意されていて、MySQLを使うユーザには広く使われていますし、多くのレンタルサーバでも導入されています。
ちなみに、phpMyAdminのインストールは、WordPressをインストールするくらい簡単....というのはちょっと言い過ぎですが、一部の設定をする際に DBの仕組みの理解が必要になる個所はありますが、時間としては数分でインストールできてしまいます。
データベースの仕組みをエクセルに置き換えて説明
これまで説明した内容を分かりやすくエクセルで説明をすると、エクセルの本体プログラムが、RDBMSのデータベースを管理する管理プログラム(MySQLなど)となります。
そして、エクセルのファイル一つ一つが、RDBMSで管理されている「データベース」となります。
さらに、エクセルファイルの中の実際のデータは、それぞれシートごとに分かれて入力されていますが、これがデータベースの中に入っている「テーブル」ということになります。
また、各シートに記述されているデータは、エクセルのシート内に式や関数などを記述することでいろいろな加工をして、希望のシートに値を編集することができるようになっていますが、これが RDBMSでいうところの SQLの役割ということになります。
ちなみに、実際のデータはどんな感じになっているか、というと、MySQLをインストールすると、サーバ上に「mysql」というフォルダが作成され、プログラム一式が設置されます。
そして、例えば「wordpress」という「データベース」を作成すると「mysql」フォルダの中の「data」フォルダの中に「wordpress」というフォルダが作成されます。
そして、「wordpress」の中に「wp_posts」「wp_postmeta」というテーブルを作成すると「wordpress」フォルダの中に「wp_posts」「wp_postmeta」というファイルが生成され、データを入力するとそのファイルの中に保存されていきます。
MySQLの場合は、「wp_posts」ファイルはオリジナルのフォーマットで保存されていますので、中身を見ても何が書いてあるのか分かりませんが、昔の PostgreSQLという RDBMSは単純にカンマ区切りのデータとして保存されている時期がありました。
MySQLは独自のフォーマットで保存されているため、テキストエディタで簡単に中身を見ることはでき前sンが、「wp_posts」ファイルの中身もカンマ区切りのような感じでデータが保存されていることには変わりありません。
実は、難しいように見えるデータベースも、エクセルファイルの各シートにデータが入っていて、そのデータを SQLというデータベース言語を用いて取得している、と考えることで理解が進むんじゃないかと思います。
いかがだったでしょうか?
少しでもデータベースって?という部分が減っていけば嬉しいですね。
データベース・RDBMSにアクセスするために ID、PASSが必要
少し視点を変えたデータベースの説明をしてみます。
また、WordPressは MySQLという RDBMSで動いていますので、ここでは RDBMSと同じ意味で MySQLと書いていきます。
MySQL(および、関連するファイル)は、一般的に FTPで接続してみることができるような場所にはおいてありません。
また、MySQLはそれ自体で一つのアプリケーションとして動いていて、アプリケーション自体は一つのサーバには一つしか入っていません。
それを複数人で使うこともできるようになっていますので、MySQLを使う際にはログイン認証を受ける必要があるわけです。
そのため、phpMyAdminなどで MySQLにアクセスする際には ID、PASSを入力してログインをする必要があります。
これは、FTPでファイルをアップロードするプログラムとはまた別のアプリケーションとして動いていますので、別途ログインをする必要があるわけです。
そして、ログイン認証を受けると、MySQLを利用できるようになり、また、あなたの IDにヒモづいている「データベース」および「テーブル」を利用できるようになるワケです。
また、phpMyAdminなどの管理画面からアクセスする際だけではなく、WordPressなどのアプリケーションからデータベースにアクセスする際も MySQLを使う際にはログイン認証を受ける必要があり、それらデータベースに接続するための情報は、WordPressの場合は、WordPressがインストールされているルートフォルダの中にある「wp-config.php」に記述されています。
下記は、この記事を書いている Windowsの PC上に設定しているテスト環境の WordPressの設定ファイル「wp-config.php」の一部です。
———————–
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define('DB_NAME', 'wordpress'); /** MySQL データベースのユーザー名 */ define('DB_USER', 'user'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', 'password'); /** MySQL のホスト名 */ define('DB_HOST', 'localhost'); /** データベースのテーブルを作成する際のデータベースの文字セット */ define('DB_CHARSET', 'utf8'); /** データベースの照合順序 (ほとんどの場合変更する必要はありません) */ define('DB_COLLATE', ''); |
———————–
このような形で、WordPressから MySQLにアクセスできるような設定がファイルに保存されているわけです。
簡単な SQL文の解説
データベースからデータを取得するには SQLを使います、と説明しましたが、ここでは SQLについて簡単に説明をしておきます。
SQL文は簡単な構造でできていますので、理解ができれば、「何だそんなことか!」と思えるのではないでしょうか?
よく使う SQL文は、下記の 4つです。
Select
Insert
Update
Delete
それぞれ何となく意味は分かりますよね?
Select 選択(取得)
Insert 挿入
Update 更新
Delete 削除
Selectは、データを取得する際に使います。
Insertは、データを新規追加する際に使います。
Updateは、データを更新する際に使います。
Deleteは、データを削除する際に使います。
このうち、圧倒的に使う頻度が多いのは Selectなので、それについて説明しておきます。
例えば、下記のような SQL文。
1 2 |
SELECT post_title, post_content, post_date FROM wp_posts; |
これは「wp_posts」というテーブルから「post_title, post_content, post_date」の 3項目を取得して一覧表示させてください、というメッセージになります。
1 2 3 4 |
SELECT post_title, post_content, post_date FROM wp_posts WHERE post_date < "2014-01-01 12:00:00" ORDER BY post_date DESC; |
少し長くなりましたが、これは「wp_posts」というテーブルから「post_title, post_content, post_date」の 3項目を取得して一覧表示させてください、という部分は上記と同じです。
加えて、取得する条件は「post_date」の項目が「2014-01-01 12:00:00」より小さいもので、「post_date」の項目で降順(日付が新しい方が上)に並べてください。というメッセージになります。
このように、データを取得するときは、「SELECT」に続いて取得する項目、取得するテーブル名で記述します。
さらに取得する条件があるときは続けて条件を記述する、という方法形式になります。
そして、これらの SQL文を MySQLに渡すと、その条件にマッチするデータを指定された順番で表示してくれます。
レンタルサーバの機能一覧のデータベースの数
レンタルサーバなどの機能一覧などで、「データベースの数」が書かれている場合があります。
http://lolipop.jp/service/about/
例えば、上記のロリポップサーバ。
「データベース(MySQL5)」の欄ですが、「コロリポ」では「-」、「ロリポ」では「1」、「チカッパ」では「30」となっています。
これは、MySQL(RDBMS)で管理するデータの入れ物としての「データベース」の数が書かれています。
例えると、エクセルのファイルをいくつ用意しましょうか?ということです。
「ロリポ」プランは、データベースは 1つです。
イメージとしては、エクセルファイルが一つで、その中にシートを複数設置して利用する、というイメージです。
このブログは、「ロリポ」プランで運営していますので、利用できるデータベースは 1つです。
ですが、WordPressの場合は、テーブル名称の最初に付ける接頭辞(デフォルトは「wp_」)を自由に設定できますので、これをインストールする WordPressごとに違うものを設定することで、データベースは 1つでも複数の WordPressをインストールすることができます。(1つのデータベースの中に名前が同じテーブルは作成できません。)
テーブル一覧を表示した際に、多くのテーブル名が並びますので、管理は多少面倒にはなりますが、データベースが 1つであっても複数の WordPressを運用する上では何の問題もありません。
(どんな感じで面倒なのかは、1つのエクセルファイルに 100個くらいのシートが入っていて、それを管理する感じになりますので、シートを探すのが面倒になる、といった感じです。)
サブドメインを設定し、複数のサイトとして WordPressを運用していますし、コーポレートサイトや自社メディアなども 1つのデータベースで運用していますが、全く問題はありません。
理由の一つとして、現時点では、全く問題にならない程度のアクセスしかないから。ということですけどね。
※「ECCUBE」は、1つのデータベースに一つしかインストールできませんので、ECCUBEを運用する場合は、複数のデータベースを利用できるレンタルサーバを利用するしかありません。
※「ECCUBE」は、簡単に ECサイトが作れるオープンソースのプルグラムです。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
PoeditでWordPressの日本語対応方法。英語プラグインの日本語翻訳ファイル作成
プラグインの日本語化の手順のまとめ。.pot、.po、.moファイルの解説や便利ツールの Poeditの紹介を行いつつ、手順、ファイル設置場所、注意ポイントなども紹介。
-
WordPressの投稿データ(記事データ)の管理方法
投稿の登録の方法、投稿データの管理方法の解説。MetaManagerなどのプラグインを入れた場合の入力ボックスを表示させる方法についても解説します。
-
WordPressのおすすめの確認画面付きお問い合わせフォームプラグイン・MW WP Form
MW WP Formは確認画面が付いているオススメのフォームプラグインです。企業サイトを CMSとして構築する際にも利用できる実力派です。
-
Custom Post Type UIでカスタム投稿を設定し編集する方法解説
カスタム投稿を追加、管理するプラグインCustom Post Type UIの使い方の解説です。プラグインの解説ではあるものの、カスタム投稿の仕様の解説でもあります。
-
BackWPupでバックアップ・機能の基本設定 Settings
BackWPupその5。バックアップ設定のベースになるBackWPup自体の設定解説です。
-
highlight.jsの設定方法を解説。 Syntax Highlighterから乗換え、高速化にも最適
Crayon Syntax Highlighterの代替案としてhighlight.jsを試してみた。highlight.jsは設置簡単で軽量なシンタックスハイライト。デザインもCSS変更だけの簡単変更。
-
WordPressのアップグレードの英語版と日本語版の公開のタイムラグは?
WordPressのアップグレードの英語版と日本語版の公開のタイムラグについて説明しています。
-
BackWPupでバックアップ・Jobの設定・保存する情報の設定
BackWPupその2。Jobのバックアップの基本部分と対象の設定についての解説。
-
BackWPupでWordPressのDBもファイルもバックアップ
BackWPupその1。BackWPupとWordPressのバックアップについての解説。
-
WordPress 画面が真っ白になる不具合があった場合の対応の一つ
WordPressで画面が真っ白になる不具合があった場合の対応方法の説明です。PHPでエラーが起こっている場合がほとんどですがその対処方法です。