###前提
普段はゲームプログラミングをしていて、今Webプログラミング勉強中の初心者です。
前から思っていた素朴な疑問がありまして、お答えいただければ幸いです。
##質問
データベースに関して、種類としては、MySQLのようなRDBMSやRedisなどのオンメモリのNoSQLなどがあるようですが、どちらも基盤技術として扱われているほど大層なものだとは思えません。
SQLなどの命令を解釈して、ファイルシステムから適切なデータを持ってくるシステム
オンメモリで、辞書型、リスト型で値を保持し、キーが送られてきたらバリューを返すシステム
どちらも、このような実装で簡易的に代替が効くと思っているあたり、データベースの真価を理解できていないのかもしれません。
普段データベースをお使いの方、私に必要性を説いていただけないでしょうか。
「SQLなどの命令を解釈して、ファイルシステムから適切なデータを持ってくるシステム」と「RDBMS」の違いはどこにあるとお考えですか?
秒間数千~数万の異なるクライアントからの異なる種類のデータへの参照(SELECT)、更新(UPDATE)、新規追加(INSERT)、削除(DELETE)などの各種のリクエストを矛盾も破綻もなくデータに反映させ、動き続けることを考えてみてください。データは「壊れてしまいました。ユーザーさん、また作ってください。」では済まない重要なものとします。
サーバーベースのゲームのインフラだって同じですね。
そうですね、より多くのアクセスをさばけるように、非同期処理を用いて工夫して書かれていたり、
同じ情報にアクセスできないようにロックアップを明示的にしているところなどだと考えております。
また、大量のデータから検索するための最適なアルゴリズムを選択しているところでしょうか。
dodox86様回答ありがとうございます。
では、信頼性のあるものをモジュール化して、安心して扱えるようにするため、ということですね。
それだけ、と思っていましたが、信頼性に価値があると心得ておきます。
> 信頼性のあるものをモジュール化して、安心して扱えるようにするため、ということですね。
それは結果論ではあるかな、と思います。新たなDBSが市場に投入されるのは、マーケティング的な要素もあるでしょう。あくまで状況証拠ですが、多くのデータベース(システム)が、長い時間とバージョンアップを重ねて信頼性を上げて市場にあるのが、プログラムを作るたびにスクラッチでオレオレDBSを作ることを良しとしないことに繋がると考えています。すでに質問者さんは別回答へのコメントで述べられていますが、大げさなRDBMSを使うほどでもないシステムであれば、使わないでオレオレDBSでも良いのではないでしょうか。責任の所在をどこに置くかが論点だと思います。
なるほど、自分でもそうなのではないかと思っていたところでしたが、回答者様方の意見を聞き、初めてはっきりしました。規模や責任によって柔軟に判断していきたいと思います。
良くない意味での「車輪の再発明」にならないことを願っています。(大抵、自分が作った方が既存のものより良いものができると思いがちなので)
>SQLなどの命令を解釈して、ファイルシステムから適切なデータを持ってくるシステム
と思った時に使えるsqliteってのが昔からあるのでOracleなどを使うほどでは無いし軽く使えるものをと考えた人は20年ぐらい前にいたんでしょうね
回答5件
あなたの回答
tips
プレビュー