ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

トランザクション処理ができなきゃ、DBを仕事でつかえないですよねえ。。でPHPの場合

2005-11-05 17:43:34 | JavaとWeb

 データベースを仕事で使う場合、DBを個人だけのものとして、検索ファイル代わりに使うケースと(Accessなどで、このケースがある)、みんなで共用して使うケースがある。本来のDBの目的としては、後者であり、Webで使う場合、原則、後者と考えられる。

 さて、DBを共有して使う場合には、トランザクション処理が重要である。複数のDBを更新しする場合、そのデータの一貫性をたもつため、一度に更新し、もし、途中でおかしくなったら、そのとき更新しようとしていたものを、全部の(更新しようとしていた)DBに対してキャンセルがかけられなければならない。

 もちろん、その他に排他制御、そして、参照と更新時の一貫性を保つため、タイムスタンプや更新カウンタなどによる、更新しようとしているデータに関して、他者が更新していないかどうかの確認方法も重要である。

 したがって、WebからDBアクセスをする仕事の場合、トランザクション処理は必要不可欠であり、この方法がない、あるいは分からないようでは、それは仕事に使えない。


。。この意見に、賛成な人だけ、以降みてください。
 反対意見の人は、以下、そのような人たちからみると、不快な文章が含まれていると思われるため、そういう人は見ないでください。反対意見をコメントしていただく必要はありません。




 そこでなんですけど、ここ2、3日、わけあって、PHPの調査してます。

 で、気付いたんですけど。。。
 PHPの本で、トランザクション処理について、書いてある本が少ないんですよ。

 書いてある本としては、たしか、10日でおぼえるPHP5入門教室がSQLLiteを使って、ちゃんと書いています。

 なんで、この本はいいです。

 でも、問題はこれ以外の他の本です。

 SQLLiteでも、mySQLでも、トランザクションについて、ぜーんぜんかいてない気がするんです。
 mySQLの場合、InnoDBの説明もないです。
 mysqliの説明はある本もありますけど、トランザクションの部分はかいてなくて、プレースメントホルダーについてです。

 うーん。。。

 mySQLの場合、トランザクション処理させるには、InnoDBにして、mysqliでアクセスしてとか、いろいろあると思うんですよ。。なんで、その部分が書いてないと、仕事になんないと思うんですけどねえ。。(この文は、上記の「トランザクション処理がわかんないと仕事にならない」と思う人だけ読んでもらってることを前提に書いています)




 逆に、もっと怖いのは、トランザクションについて書いてなくても、DBについては書いてあるので、そういう本を読むと、ひととおりPHPができる気分になるわけです。

 で、仕事をとってくる

 トランザクション処理しない。

 もちろん、更新カウンタやタイムスタンプによる、データ変更の矛盾処理もしない。

 で、みんないっせいにアクセス!とか。。

 そうすると、どうなるか。。

 。。。やばいとおもうんですよ。

 まあ、そんなやついねーよ!といえば、そうかもしんないですけどね。。。

 でも、ですよ、ひょっとしてありえない話じゃないですよね。
  



 最近、「同時に行われたとき、ほかの人のデータが見えてしまう」という障害が良くニュースになる気がします。

 このミスは、一般的には、Javaにおいて、メソッド内でなく、クラスのところでstatic変数で取ってしまったとき、おこるミスと思われています。

 でも、もっと、基本的なミス、

・トランザクション処理とか排他を意識しないで、
・DBからIDの最大値を取ってきて、1足した値を自分のIDとして登録し、
・そのID更新が同時に2箇所から行われたにもかかわらず、
   DB上、エラーにならなかった(主キーにしていない場合にありえる)
   もしくは、エラー処理もしてなかった

 なーんてことも、トランザクション処理について書いてない本をみて、作ったら、ありえちゃうよーな気が。。。。しないかなあ??


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

母親毒殺未遂事件にみる、検索サイトのキャッシュの意義

2005-11-05 12:04:57 | Weblog

 最近、母親を毒殺しようとして逮捕された女子高校生(ブログでは、「岩本亮平」と男性名を使ってる)が話題ですよね。
 その女子高生は、楽天にブログ(「グルムグンシュ」)を公開していたが、そのブログは削除された。。。

 なので、見れない。。

 わけではなく、googleのキャッシュにそのブログが入っていて(こことか

 実際、日記の内容をブログに書いている人もいる

 この人とか
http://panda2go.mine.nu/log/2005/11/glmugnshu.html


 この人とか
http://blogs.yahoo.co.jp/wide38ch/15173796.html


 同じ内容なので、たぶん、間違いないでしょう。




 つーことで問題なのだが、最近は、キャッシュされているので、結局、オリジナルを削除しても、あんまり意味なかったりする。

 キャッシュまで、警察が取り締まれるのかあ??っていう問題があるし(つまり、キャッシュは機械的に自動的に行われるとしたら、それを削除するには、全世界のキャッシュに対して、行わなければならない。。。日本語も通じない国がキャッシュしてるかもしれないのに。。。無理!)

 インターネットの社会になって、一度出た情報をなくすのは、むりなのかもお。。。




 となると、逆に考えられるのが、都合が悪い人が削除したとしても、キャッシュに残っているので、無理なのでは。。。って言う問題がある。
 たしか、平成電電の匿名組合のページの場合、平成電電は、民事再生法の申請をしたときに削除したけど、キャッシュに残っていて、見れたみたいな話があったり。。。

 まあ、よしわるしですな。。

 ただ、もはや、オリジナルを削除しても情報は残っている時代になったと思ったほうが、いいのかも。。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする