相変わらずネット系分野が好きなので、チャットより少し上の階級にあるメッセンジャーなどの動作について調べていたら、 データベースの項目がぽこぽこ出てきたので、今回はちょうど良い機会にデータベースについて軽く勉強してみました。
そういえば、何か投稿したはずのデータがすっ飛んでたんですが、何かあったんですかね。 (クリップボードに退避しておいて助かった・・・)
発端は「オンライン関係のログイン手続きは一体何を行っているのか」という事と、 「サーバに保存されたデータはどのように記録され、管理されるのか」という疑問からでした。
最初に予想した動作は、 アカウント生成→サーバ上にデータが生成される。 ログイン→サーバ上のデータから該当する個人データが読み込まれる→そのデータを使用して初期化する。 ログアウト→現在の状態を上書き保存し、ネットワークから切断する。 という様な物でした。
ここまでの予想と本来のログイン動作は余り間違ってはない・・・はずです。きっと。(例外など細かい動作は除いて)
で、予想と違ったのはデータの保存方法でした。 予想としては、個人のデータがバイナリや何かで保存され、ディレクトリ事に個人のデータが保存されている物と本気で思ってました。
簡単な説明だと、 アカウント生成→IDのようなフォルダーをユーザー管理フォルダーに生成。→ユーザー名のファイルをIDフォルダーに保存させる。 というような、サーバーがすべての動作(データ管理など)を担当する物と思っていました。 (だからデータベースという当たり前の動作が今一ピンと来なかったのですが)
ところが、色々なメッセンジャーの事を調べてみると、どうやらサーバーはそこまでの事を行っていないようです。
大雑把に調べてみて、わかった事は、 「サーバーはデータベースに依頼をし、結果を受け取る」だけでした。 つまり「データーベースとサーバーは完全に切り離されている」という事でしょうか。
そこで、データベースを切り離す事による利点を色々と調べてみると、色々出てきました。
1。保存されたデータの移植が簡単である。(ゲームデータを別ソフトで一覧表示したり、PHP等で表示できるなど) 2。サーバーに余計な処理を埋め込む必要がない(I/Oの同期など) 3。データ処理の手間が大きく省ける(要求はデータベースに命令を送信するだけ)
早くなるかどうかは、ちょっとよく解らなかったので書いてないです。 ただ、一人で作るデータベースもどきよりかは当然早そうですが。
さらにオンラインゲームプログラミング等の本を読んでいたところ、 データベース処理をサーバーを仲介する事で、ハッキングなどのリスクをある程度下げられる事や、 不要なログ(無関係なログ)が生成されず、見やすいログができるなど、オンラインプログラミングにデータベースは欠かせないようでした。
ここまで来てやっとデータベースとは何なのかがわかった気がします。
ここまで調べてみるとID重複確認の動作やその理由、パスワードの変更処理や、 友人登録などの個人データ保存方法などの処理がひととおり予測できました。
ちょっと前までデータベースなんてテキストの集合体としか思ってませんでしたが、複数のデータ保存にはかなり使えそうですね。 ただ、サンプルを見てる限り、パスワードが生で保存されていたので、暗号化なんかもできるのか、ちょっと不安でしたけど。
とりあえず挿入と更新、削除があればある程度の事はできるかなぁ、と。 まぁ、手動でデータベースを操作する事は余りないような気がするので、コマンドを覚える必要性があまりない気がしたんですが・・・。
そういえば、squldさんがバイナリもデータベースに突っ込めると言っていたので、ちょっと試してみたいですね。 id,ps,binaryimage, とかで、IDを指定したらその人の画像が表示できる。 など、かなり便利そうです。
