|
任天堂が、大画面の「ニンテンドーDSi LL」を発表。欲しいと思いますか?
|
嘘をつくコンピュータ――ある日、データベースのファイルが壊れました。
データベース屋さんに苦情を言うと、
「うちじゃないですよ、どこかもっと下の方じゃないですか?」
ということなので、
今度は OS 屋さんにそう伝えると、
またもや「うちじゃないですよ、どこかもっと下の方じゃないですか?」といいます。
しかしもう下はハードディスクしかないので、 ハードディスク屋さんに話をすると、 「うちじゃないですよ。何か全体としてうまく機能していないのでは?」 という話になってしまいました。 しようがないのでパソコン屋に行ってみると、 「あー、古いマシンだと時々ありますよ。 やっぱり最新のいいマシンを買ったほうがいいですよ」ということで、 しようがなく買い換えました。―― サポートでたらいまわしにされた! というのは誰もが経験のあることではないでしょうか。 そんな時どうやって問題を絞っていったらいいか、かなり頭が痛いですね。 実は大事なデータベースファイルが壊れてしまう、 という話は、ないわけではないのです。 しかし通常は多かれ少なかれ上の話のようになってしまって、 それ以上掘り下げるのは、専門家でも至難の技です。 果たしてそういうものなのでしょうか? 誰かが嘘をついているのでしょうか? そうだとしたら、嘘をついているのは誰なのでしょうか? 「データベースは論理的に壊れないように設計されている」 データベースやファイルシステムなど、重要なデータを扱うソフトウェアは、 論理的に壊れないように設計されています。 どういうことかというと、 1.これから行う大事な作業内容を書き留めておく 2.大事な作業を実行する 3.作業を完了する というように一連の作業を実行することで、 作業を全くやっていないか完了したか、2つに1つの状態を保証しています。 月末に月謝の振込みをしたけど、 途中でトラブルがあったので、 引き落としだけされて振り込まれていなかった、 というような状態にならないようにするためです。 例えば、万が一、2の作業実行中に突然中断されてしまったら、 再開後すぐに、 もう一度1を見ながら未完了の作業を正しくやり直すことで、 完了の状態にすることができます。 そして大事なことは、これらは順番に実行されなければないことです。 例えば作業完了を先にやってしまったら、 突然中断があった場合、完了したものだと思ってしまい、 作業途中で終わってしまいます。 コンピュータではこれを確実に実行するために、要所要所で、 「ディスクに書き込んでください」という命令(以下同期命令と呼ぶ)を出します。 こうすることで、万が一停電などで突然作業が中断されても、 どの段階まで処理が進んだか分かるので、作業を完了または元に戻すことができます。 「八方美人の同期作業」 さて、ここからが本題です。実はこの同期作業、八方美人で、終わってないのに、 終わったよなんて言ったりします。 順番だって好きなのから先にやったりしちゃいます。 いいじゃん、固いこと言わなくたって、という具合です。 どういうことかというと、 アプリケーション(データベースを含む)は通常 OS に同期命令を出します。 OS はその命令をよろしく処理して、ハードディスクに同期命令を出します。 この時、OS、ハードディスクが、嘘をつくことがあるわけです。 実はご丁寧に、 「嘘をつくことがありますのでご注意ください」というようなことが注意書きで書いてあるので、そういう意味では騙してはいないことになります。 どうしてそういうややこしい話になってしまったのかというと、 「ハードウェアがサービスの質を決める」で紹介したように、 ハードディスクはコンピュータ界のシーラカンス、 今や唯一肉体労働をしている部品となってしまったからです。 つまりまともに待ってたら遅くてしようがないので、 みんな大目で見るようになってきたというわけです。 ということで、今回は面白おかしく進めてきましたが、 ハードディスクをバカにしないでください。 逆に言うと、 今日のコンピュータの性能を担っているのはハードディスクだとも言えますので。 次回(3月6日予定)は現実的に、具体的なポイントをとり上げて、 適切な対策を紹介したいと思います。
記事提供:db4objects
|
|