はじめに
今回は、サービスの要になる『データベースサーバー(DBサーバー)』について解説していきます。
では、『データベースサーバー』とはどのようなものなのでしょう?
結論から言えば、サービス内で使用した『あらゆるデータログを貯めておく』サーバーです。
データベースとは何なのか?
あなたは『データベース』と聞いて、何を思い浮かべるでしょうか?
ほとんどの方はデータがいっぱい入っている何かだろう?と考えると思います。
確かにそれは間違いではありません。
ただ、サービスにもよりますがHTMLファイルや画像がいっぱい入っているかというと、そうではありません。
データベースのデータは、どちらかというと毎日のサービスを運営した結果(データログ)であり、それらをデータベースサーバーに保存していきます。
つまり、提供されたサービスをユーザーに使われない限り、データベースというのは埋まっていかないわけです。
そして、データの形は、PCに保存するような目に見えるファイルではなく、エクセルで見るような『行』毎になります。(詳しくは後述)
以下は、クライアントからサービスにアクセスがあった際に取得する、『アクセスログ』のイメージです。
- 111.111.111.111 -[01/Sep/20XX:01:01:01 +0900] GET /XXX/XXXXXXXX/HTTP/1.1 302 -Mozilla/5.0
(Windows NT 6.3; WOW64) AppleWebKit/537.36 - 111.111.111.111 -[01/Sep/20XX:01:01:01 +0900] GET /XXX/XXXXXXXX/HTTP/1.1 302 -Mozilla/5.0
(Windows NT 6.3; WOW64) AppleWebKit/537.36 - 111.111.111.111 -[01/Sep/20XX:01:01:01 +0900] GET /XXX/XXXXXXXX/HTTP/1.1 302 -Mozilla/5.0
(Windows NT 6.3; WOW64) AppleWebKit/537.36
このように、行毎にログをデータベースサーバーに保存していきます。
この表での内容は、IPアドレス、日時、HTTPステータスコード、ブラウザのバージョンなどが記されています。
そして、データベースサーバーはこれらのデータを管理することで、様々なアクセスデータの抽出が可能になり、セキュリティ対策やサービスに活かされるものになるわけです。
もちろん取得しているログはサービス毎によって変わりますし、一種類のみというわけではありません。
まぁ覚えておくといいのは、世にあるインターネットのサービスにアクセス(クリック)すると、ほとんどこのようにアクセスログがデータベースに取得されているってことです。
データベースサーバーは守られる存在
世にあるサービスのデータベースは、自社のビジネスの内容に直結するものになります。
そのため、セキュリティ観点上、データベースは専用のデータベースサーバーとして単独で構築することが基本です。
もし、単独ではなく、データベースとWebサービスが同じサーバーに入っていた場合、クライアントは直接データベースにアクセスできてしまいます。
これではセキュリティはおろか、自らそのサービスの情報を公開していることになってしまい、その企業は存続が危ぶまれることになるでしょう。
ですから、そのような危険を回避するために、例えばクライアントがアクセスできるWebサーバをインターネット側に配置していたら、Webサーバーから見て下の階層にDBサーバーを構築するわけです。
こうすることで、DBサーバーが守られる形になり、データベースサーバーにはクライアントからの直接アクセスを受けなくて済みます。
イメージ的には、データベースサーバーは裏方で動き守られる存在になります。
データベースサーバーの役割と価値
データベースサーバーにはどのような役割と価値があるのでしょうか?
まず、サービスの初期構築時、WebサーバーにはWebサイトを構築するファイルや画像などのデータが最初から含まれているのに対し、データベースサーバーの中は基本的に『空』です。
そして、サービスが稼働すると、このサーバーにデータがどんどん保存されていきます。
そのデータは、どのアカウントが、いつ、何をしたかというログデータや、ベンダー(サービス提供者)がそのサービスに必要なものを保存したデータ(情報や数値など)、そのサービスでプログラムが処理したデータ、その日のバックアップなどが含まれます。
これらは、構築前に必要だと考えられたものを保存していくので、想定していなかったデータは保存されません。(必要なら後から追加する形で保存させることになります)
先ほど『ベンダー(サービス提供者)がそのサービスに必要なものを保存したデータ(情報や数値など)』と書きましたが、これにあなたは疑問を持たれたかもしれませんね。
そこで、イメージを含めて解説していきます。
ショッピングサイトをイメージしてください。
このようなサービスでは、ショッピングサイトを運営するベンダー専用の『管理画面』というものをWebサーバー側にあらかじめ作られています。
管理画面は、ベンダーが売る商品情報や金額などを入力できる画面であり、一般の方は入ることができないようになっています。
そして、ベンダーばそういった情報を入力することで、一般のお客さんを迎えているWebページ側に反映されるようになります。
この、ベンダーが入力する情報もまたデータベースに保存されるものになっているわけです。
また、お客さんが何をカートに入れ、何を購入したかなどのログも残します。
そして、プログラムが組んであればその商品を配送できるように、店側に通知し、配送が終わったらそれを自動的にお客に通知するなどもおこなわれます。
こうした内容も含めて、毎日のデータを保存していくのがデータベースサーバーの役割であり価値になります。
データベースサーバーの仕組み
データベースサーバーは、その名の通りデータが入る器でしかないので単体では何もできません。
そのため、『DBMS(Database Management System)』というデータ管理システムを使ってデータを操作することになります。
つまり、データベースサーバーには『データ本体』に加え、『DBMS』がデータを管理できるように構成されています。
そしてクライアントからリクエストを受けると、DBMSはそのリクエストを解析して処理し、データベースエンジンを使ってデータベースを操作します。
操作するデータベースのプログラム言語は、現在『SQL』が主流になっています。
また、データの管理方法は、今では『リレーショナルモデル』というデータモデルがほとんどです。
リレーショナルモデルのイメージとしては、上記で書いたようにエクセルの表みたいなもので、行を表す『レコード』と列を表す『フィールド』に分けて管理します。
ただエクセルと違うのは、リレーショナルモデルは、複数の表を関連付けることができるので、エクセルよりもより細かくデータを抽出できる点です。
これは『リレーショナル代数』と呼ばれる演算処理を使用していることによって可能になっています。
まとめ
データベースサーバーのイメージはなんとなくついたでしょうか?
データベースサーバーはサービスで培った情報が全て保存されるので、とても貴重なものになります。
データベースが無くなれば、そのサービスの多大な損失につながるからです。
開発者でない限り直接DBサーバーを触ることはありませんが、データベースという存在は知っておいた方がいいでしょう。