相変わらずネット系分野が好きなので、チャットより少し上の階級にあるメッセンジャーなどの動作について調べていたら、
データベースの項目がぽこぽこ出てきたので、今回は丁度良い機会にデータベースについて軽く勉強してみました。

そういえば、何か投稿したはずのデータがすっ飛んでたんですが、何かあったんですかね。
(クリップボードに退避しておいて助かった・・・)

そもそもの発端は「オンライン関係のログイン手続きは一体何を行っているのか」という事と、
「サーバに保存されたデータはどのように記録され、管理されるのか」という疑問からでした。

最初に予想した動作は、
アカウント生成→サーバ上にデータが生成される。
ログイン→サーバ上のデータから該当する個人データが読み込まれる→そのデータを使用して初期化する。
ログアウト→現在の状態を上書き保存し、ネットワークから切断する。
という様な物でした。

ここまでの予想と本来のログイン動作は余り間違ってはない・・・はずです。きっと。(例外など細かい動作は除いて)

で、予想と違ったのはデータの保存方法でした。
予想としては、個人のデータがバイナリや何かで保存され、ディレクトリ事に個人のデータが保存されている物と本気で思ってました。

簡単な説明だと、
アカウント生成→IDのようなフォルダをユーザー管理フォルダに生成。→ユーザー名のファイルをIDフォルダに保存させる。
というような、サーバーが全ての動作(データ管理など)を担当する物と思っていました。
(だからデータベースという当たり前の動作が今一ピンと来なかったのですが)

ところが、色々なメッセンジャーの事を調べてみると、どうやらサーバーはそこまでの事を行っていないようです。

大雑把に調べてみて、わかった事は、
「サーバーはデータベースに依頼をし、結果を受け取る」だけでした。
つまり「データーベースとサーバーは完全に切り離されている」という事でしょうか。

そこで、データベースを切り離す事による利点を色々と調べてみると、色々出てきました。

1.保存されたデータの移植が簡単である。(ゲームデータを別ソフトで一覧表示したり、PHP等で表示できるなど)
2.サーバーに余計な処理を埋め込む必要が無い(I/Oの同期など)
3.データ処理の手間が大きく省ける(要求はデータベースに命令を送信するだけ)

早くなるかどうかは、ちょっとよく解らなかったので書いてないです。
ただ、一人で作るデータベースもどきよりかは当然早そうですが。

更にオンラインゲームプログラミング等の本を読んでいたところ、
データベース処理をサーバーを仲介する事で、ハッキングなどのリスクをある程度下げられる事や、
不要なログ(無関係なログ)が生成されず、見やすいログができるなど、オンラインプログラミングにデータベースは欠かせないようでした。

ここまで来てやっとデータベースとは何なのかがわかった気がします。

ここまで調べてみるとID重複確認の動作やその理由、パスワードの変更処理や、
友人登録などの個人データ保存方法などの処理が一通り予測できました。

ちょっと前までデータベースなんてテキストの集合体としか思ってませんでしたが、複数のデータ保存にはかなり使えそうですね。
ただ、サンプルを見てる限り、パスワードが生で保存されていたので、暗号化なんかもできるのか、ちょっと不安でしたけど。

とりあえず挿入と更新、削除があればある程度の事はできるかなぁ、と。
まぁ、手動でデータベースを操作する事は余りないような気がするので、コマンドを覚える必要性があまり無い気がしたんですが・・・。

そういえば、squldさんがバイナリもデータベースに突っ込めると言っていたので、ちょっと試してみたいですね。
id,ps,binaryimage,
とかで、IDを指定したらその人の画像が表示できる。
など、かなり便利そうです。

カテゴリー: 技術情報

2件のコメント

squld · 2007-08-31 21:37

そういえば、何か投稿したはずのデータがすっ飛んでたんですが、何かあったんですかね。

間違えてwordpressのDBを全部消してしまいました。先ほど復活したばかりです。

ここまで調べてみるとID重複確認の動作やその理由、パスワードの変更処理や、
友人登録などの個人データ保存方法などの処理が一通り予測できました。

素晴らしい。想像力が豊かですね。

パスワードが生で保存されていたので、暗号化なんかもできるのか、ちょっと不安でしたけど。

普通、平文ではなく一方向ハッシュ関数(SHA, MD5)を使って作った値(=ハッシュ値)をデータベースに格納しておきます。
そして、ログインの時には入力されたパスワードをハッシュ値に変換してデータベースから取得したハッシュ値と比較します。ハッシュ値が同一であれば、入力されたパスワードは「ほぼ」正しいです。

Qwx · 2007-09-01 03:06

>>wordpressのDBを…
なるほどです。投稿したすぐ後にTOP画面が崩れてて、
「あら?」と思ってたのですが、そういうわけでしたか。

それよりもBlogでもデータベースを使ってるんですね。
結構色んなところで使われてるんですね…。
CGI型のBlog型システムとか見ると、全部フォルダに保存されていたので、これが勘違いの発端かも。。。

>>想像力が…
いや、実際やってみないとわからないんですけどね…w
自分の場合、頭の中でいける。と予測した物は必ずといっていいほどコードでこけるんですよorz

>>ハッシュ値に変換してデータベースから取得したハッシュ値….
これってつまり、管理者ですら本来のパスワードを知るすべはないって事ですよね。
あー。だからオンラインゲーム等のパスワード復元サポートって奴がないのかなぁ。
でもメール等でパスワード再送する機能を持ってるシステムは、本来のパスワードを知ってるんですよね。

この差は何なんだろう…。(復元可能な暗号化でもしてるのかな?)

とりあえず、自前で暗号化してデータベースに保存してやるのがメジャー。って事ですかね。
どうもありがとうございます。

現在コメントは受け付けていません。