2009年02月

-ヴェネツィア旅行に行ってきた。ギリシャっぽい美術とか、ローマもびっくりの密集度合いとか、カーニバルで仮装した話はまた後日まとめる感じで。

-Wordpressのアップグレードやプラグインをインストールとか。なにしろ、アップグレード処理以外は自動で全部出来てしまうので超簡単。 Wordpressはツール単体もともかく、プラグインまで含めた連携が素晴らしい。こういうソフトウェア全体の連携は、Appleも含めて非常に頑張っ ているところであり、暫く元気なところでは無かろうか。自分でうまく食い込めないのがつらいが、その先を狙っていくしか。

- オランダのテレビで中川(元?)財務相を見る。泥酔とか以前に明らかに異様な面持ちに唖然とする。なにか恐ろしくやばいんじゃないか。大丈夫なのだろうか。しかしあの状態を見て糾弾するマスコミは、もはや他人の健康を気遣うことすら出来てない人でなしとしか言いようがない。それはともかく、今の日本にはずいぶん悲壮感が漂っているように思える。しかし彼らよりずっと問題が少ないはずの日本人は、もうこれ以上にないぐらい悲観的になっているのが、外から見ているとさっぱり分からない。

- ざっくり見て、麻生内閣&官僚の経済政策そのものはまあ「可」ぎりぎりといったところだ。それでも、とヨーロッパ諸国の絶望具合に比べれば、そんなに悪くはないはずだ。にもかかわらず、「日本は終わっている」というような話はあちこちから聞こえてくる。見通しが暗いのはどこも同じだというのに。

-ひるがえってオランダは、経済がやばいというか、オランダ人が危機感がないことがやばい。永遠に成長し続けると言う幻想が砕けるというのは、バブル崩壊後の日本で嫌と言うほど思い知った。ヨーロッパ人は「日本とは違うから大丈夫」と思っているようだが、正直何が違うのか分かっているように思えない。こちらはまた別の意味で心配である。

というか個人的な恨み辛みを込めて。日本ではすっかり大ブームのNetbook、L.starも欲しいと常々思っていたが、現状は遠い。まずオランダで見るのは

  • Eee701(これも、去年5月頃ようやくお目見えした)

  • Eee900/901/1000/1000H

  • AspireOne各種

  • MSI Wind各種

  • Toshiba NB100

  • Packerd Bellの怪しいの

  • Sumsungの何か


ぐらいで、日本に無いのはせいぜいEee1000ぐらい。S101無し、HP無し、IdeaPad無し。OSもほとんどWindowsで、むしろ選択肢はしょぼい。ベルギーはという、とこの間行ってきたが、上とたいした違いはない。ベネルクスという割りにルクセンブルクの話は行ったことがないので割愛するけど、まあだいたい似たようなものと推測される。ようやく最近

  • Inspiron Mini9/12 (XPのみ)


が出てきた感じなので、買おうにも途方に暮れてしまう。ベルギーではAspireOneの安いモデルがEUR199でほぼワゴンセール扱いされていて興味が出たが、ブリュッセルはフランス語圏、キーボードは悪名高いAZERTYで日本人には到底使えない代物。残念だが自重することにした。

全般的に、やはりNetbookは人気が無いわけではないが、日本ほどというわけではないようだ。

笠原一輝のユビキタス情報局 - Windows 7がネットブックブームの終わりを招く にもあるが
米国の量販店などに行けばわかるが、相変わらずネットブックは299ドル(日本円で約3万円弱)、399ドル(同約4万円弱)という低価格の設定がされて いるが、あまりユーザーに注目はされていなかった。ユーザーが群がっているのは、499~699ドル(同約5~7万円)クラスのフルサイズノートPCだ。 要因としてはいくつかあるのだろうが、確かに大柄の欧米人にはあの小さなキーボードが受け入れられず、自動車での移動がほとんどのため、小さいことにもあ まり価値が見出されないのだろう。

というのはベネルクスでも当てはまる。イギリスはもうちょっとましっぽいが、10月に見たときはあまり大きな差異は見られなかった(そして、UK Keyboardも日本人には扱えない代物である)やはり最小サイズはMacBookAirぐらいとなってしまうのだろう。

そんなこんなで新しいPC選びは割と苦戦している・・・

前回にも書いたとおりRDBMSの重要な部分にACIDのサポートがあるが、このうちAID、つまり原子性(トランザクションのロールバック・コミットは不可分)、分離性(他のトランザクションの影響を受けない)、耐久性(一旦commitしたトランザクションは意地でも消えない)の3つをサポートするためには重要な、ログの話をしよう。

まず、この3つをサポートすると言うことは以下の3つの機能を持つことに等しいと言える。

  1. トランザクションを完全にロールバックするために、以前のバージョンに戻すことが出来ること。

  2. トランザクション実行中のデータが見えないように工夫できること。

  3. トランザクションのコミット時には、完全にデータが書き込みできるていること。


ただし、「ディスク書き込み途中にクラッシュしても」というのを満たすのは結構難しい。そこで、実現のためには実行前と実行後のデータをログとして残しておく、と言うのが有効になる。この手法はWrite Ahead Loggingと呼ばれ、強力なデータ保護を行うためのシステムでは不可欠な仕組みである。保管しているログは、クラッシュ時の復旧に、以下のように使われる。

  • ログをトランザクションの始めから終わりまで読む

  • 全部そろっていて、そのトランザクションがコミットされていれば、ログの「実行後」のデータを書き込む

  • 全部そろっていないか、トランザクションがロールバックしていれば、ログの「実行前」のデータを書き込んで戻す


ログがトランザクションの耐久性を保証するため、ログは常に完全に書き込めていなければならない。しかし、ログが書き込めていることで、実際に全体の再構成が可能になる。一般にはディスクの同期書き込みを使う。

ここでポイントになるのは「同期」というところで、いわゆるHDDの同期書き込みはすこぶる遅い。そのために、大量のデータを書き込むと遅くなると言うのはつねにRDBMSの泣き所である。とはいえ、常にあらゆるデータを同期書き込みするよりコストは低いため、WALを使うことは性能上有利である。

まあここまでは教科書に書いてある話であるが、ここからがL.star的解釈の始まりである。ポイントは、「実行前のデータ(UNDO用)」「実行後のデータ(REDO用)」を一体どこに保存するのか?というのが、その後のRDBMSの実装を理解するためのポイントだと思っている。

  • 教科書通りの実装では、REDO/UNDOともログファイル上にある。新しいデータは、常に古いデータを上書きする形で記述する。トランザクションの整合性を持つためにはただしくロックを取得して、書き込み中のデータや新しすぎるデータを読まない必要がある。が、データファイルには常に最新のデータのみが格納されるため、データファイル量が一定になり、大変扱いやすいものである。しかし、多数のロックが発生しうることは、マルチプロセッサ環境ではあまりよろしくない。

  • PostgreSQLを初めとする追記型ストレージは、つねに実行前のバージョンを削除「しない」ため、そのままこれを実行前データ格納用のログとして使うことが出来る。また、MVCCと相性が非常に良く、ロックの削減に役立つ。持っているトランザクションログは、REDOログだけを記録する。
    きわめてシンプルでスペックも素晴らしい。しかし、旧バージョンの削除という大問題がある。 しかし、ロールバックについては最も簡単である。

  • ロールバックセグメント方式というのは追記型に工夫を加え、古いバージョンを全てロールバックセグメントに移動させる。ロールバックセグメントにはUNDO用のログが用意され、通常MVCCとからめて利用できる。つまり検索可能なUNDOログである。ログは分けられているため旧バージョンの削除が容易であるが、旧バージョンと新バージョンの移動という、ロールバックセグメントの管理自体が面倒である。

  • シャドウページングと呼ばれるアルゴリズムは、WALを使わずにデータ保護を行おうというものである。いや、むしろデータファイルが無くてログだけが存在すると考えた方が良い。常にデータは追記書き込みされ、commit時点で最新バージョンを参照するように変更される。内部的にはログなので、例えばバックアップを残すことも容易である。しかし、完全な追記でもないかぎりファイルにおける論理的な位置と物理的な位置が一切一致しない。
    スペック的にはいたれりつくせりのように見えるが、今の所まだまだ確立途中であり、ファイルシステムなどで上手に使われている一方でRDBMS内部でこのようなストレージは使われていないのでは無かろうか。


最後にいくつかあったものを個人的な視点から項目にまとめて表にしてみた。















































































項目 上書き型 追記型 ロールバックセグメント型 シャドウページング
UNDOログ ログ データファイル ロールバックセグメント データファイル
REDOログ ログ ログ ログ データファイル
読み<->書きロック競合処理 行ロック なし(MVCC) なし(MVCC) なし(MVCC)
書き-書き競合 行ロック 行ロック 行ロック 行ロック
コミット時処理 ほぼ無し ほぼ無し ほぼ無し ほぼ無し
ロールバック処理 UNDO ほぼ無し UNDO ほぼ無し
1KB上書き時
データ書き込み量
2KB同期
1KB非同期
1KB同期
1KB非同期
1KB同期
1KB同期?
1KB非同期
1KB同期
上記ロールバック時書き戻し量 1KB非同期 無し 1KB非同期 無し
上記上書き時データ増加量 0 1KBデータファイルに 1KBロールバックセグメントに 1KB
増加データ管理 必要なし データファイルのパージ ロールバックセグメントによる データファイルのパージ

よく分からない理由で前回のエントリ

今回の危機の発端は、金融ではなくインターネットと言ってみる。


が非常に好評だったので続けてみる。最初に必要なのは、眠くて推敲が出来なかった後半の拾い直しから。

まず、金融はあくまで自動的に暴走するものであり、金融危機がネットのせいで起こるわけでは無論無い。いや、もしそうだったらNIFTYやASCII-NETのせいで悲惨な生活を味わった、ということになってしまうので、そんな寝言のような主張は避けたい。

今回の危機は「インターネットが発生してから最初の全世界規模の危機である」というのがポイントであろう。インターネットの発展は、残念ながらあらゆるレベルのグローバル化を推進したのではない。いや、たぶん推進したのだろうが、それにしても分野ごとに大きな差がある。一番大きいのは個人レベルのコミュニケーションだが、経済についても株取引やネットバンキング、FXなどによりずいぶん助けたのではないかと思っている。

一番小さかったのは「政治」であろう。結局、インターネットは今のところ政治をまったく変えていない。いや、国内政治は変えたかもしれないが、国際政治は変えなかった。

現在の経済が非常に混乱している理由は(知り合いの受け売りだが)、なんといっても実際の経済単位と政治的な経済単位に差がありすぎることにある。ありすぎるため、抜け道を使って相当儲けることが可能であった。このような100%合法的であるにもかかわらず犯罪に等しい行為について、旧来のやり方であればざっくり政治レベルで規制することになる。しかし、これが世界レベルで展開されると、足並みを合わせた規制が必要になるため、非常に難しくなる。

やや話が脱線するが、例えば空売りが「これは100%合法な、確立されたテクニックであって卑怯ではない」と経済人に言われるのは個人的に理解できない。いやもちろんテクニックなのだが、テクニックは合法であるから認められるのではなく、もっと政治的レベルで認められるかどうかで決められるべきではないか。もちろん時には違法となることもあり、合法になることもあろう。その点を一切加味せず「これは経済学的に正しい」と思考停止するのは、法を利用して私利私欲に走る、ローフル・イービル的悪人のありかたではないか。なぜそれを正そうとしないのだろう。

いや完全に脱線しているので話を戻すが、つまり、経済はグローバル化したが、政治が追いついていない状況で暴走したのが今の危機を説明できる状況だと思っている。そして、インターネットは経済のグローバル化を強く助長した反面、政治のグローバル化には役立たなかった。まあこれが一つの問題だろう。

もう一つの問題点は、インターネットが革命的なコミュニケーションを我々にもたらしていることにある。裏付けることはもちろん出来ないが、たぶん今までの強い規制に向かう方向で、今回の危機は収束できないだろう。P2PにしろWWWにしろ、インターネットは従来概念の規制をすべて台無しにする強さを持っている。そしてなにより今度の規制のためには政治をグローバル化する必要がある。個人的に「今回の危機に立ち向かうためには、全員が足並みをそろえる必要がある」と何度か書いたことがあるが、それを言い換えればグローバルな視野での規制が必要ということか。

では、政治のグローバル化のために必要なこと、必要でないことは何なのだろうか?イデオロギー ・民族主義 のような20世紀に猛威をふるった理想論的なものがもう求心力になりうることは暫く無いと思う。それはマスコミュニケーションの衰退が原因である。画一化したメッセージを届けられないとすれば、単純なキーワードだけではもう合意を得られないということにある。

さらなる統制か、分散かというのもトピックだと思うが、これはどっちに向くか正直分からない。しかし一つの可能性としては、現在の経済を包括支配できるような、2階層式になるのではないか。今回の70年ぐらいでできあがった企業統制経済は、企業が膨れあがるに従い統率力を失いつつある。現在の経営技術では、数万人の企業を的確に支えることが出来ないのであろう。そこだけを考えれば、統率可能なサイズまでの縮小は必須であると思う。ただし、縮小のためには多大な痛みを伴う。

政治形態は分からない。これまた個人的に考えたのだが、米国式資本主義も、日本式企業封建社会も、ソビエト式共産主義もファシズムも、すべて統制経済を牽引するための道具に過ぎなかったのではないかと言うことだ。つまり、全体の合意形成とその推進が出来れば、後は何でも良かった。今回も同じで、経済システムを肯定できるなら、政治形態なんてなんでもいいのではないか。ただ、インターネットの動きというのはなんとなく、新しい政治形態の模索と重なってくる。ポータルは独裁的だし、ブロガーは人気投票による寡頭制である。検索エンジンは意外にも民主主義か?

というところでまた寝る時間がやってきた。またとりとめのない文章をつらつらと書いてしまったが、今回は何とか力尽きずに書くべきトピックは書けた。簡単にまとめをかいつまむと

  • 20世紀は統制により世界が強化された時代であった。

  • その末期に、インターネットなる仕組みが現れ、世界を席巻した。

  • インターネットは今までの統制システムとはずいぶん相容れないため、変化が生じた

  • で、今回の危機をインターネットが引き金が引いた

  • 問題はグローバル化の進展に差があったこと、インターネットがそれを助長したこと

  • 未来のシステムは、グローバル化に適応してなければならないなぁ


と言うところで結局未来のシステムに関する考察は次回と言うことだろうか。まあ気が向いたら、ということで。

個人的にデスクトップでWindows Vistaを使っているが、世で言われるほど悪くは感じない。メインはノートなのでそんなに使ってないからだろ、と思わないでもないが、それより会社環境のXP(Banias機)のほうがよっぽど遅い。まあマシンの時代に沿ったOSを使わないと、遅く感じるのは仕方がないだろうが。

しかし、XPや2Kが褒められているのを見ていると「それ、何か違うんじゃない?」と言いたくなる。何が違うのかと考えていたら、2000とVistaは結構似ていたな、と言うことに気づいた。

  • 度重なる遅延と機能変更。2000=コードネームCairoはたぶん一番遅延したOSだし、Vista=Longhornもそれに次ぐだろう。多数の理想があって、切り捨てられ、縮小していく様はたぶん同じような変遷だろう。

  • OSのビット移行。16/32ハイブリッドのWin32s->Win32へと移行する最初の正式バージョンである2000、 Win32->Win64の移行を果たす最初の正式バージョンとなるVistaで重なっている。ただ、どっちも完全な移行は果たせなかった。

  • 互換性問題。カーネルが大幅に変更されたのを受け、互換性問題が頻発した。例えばWin98のVxDドライバは2000では一切動作しないなど。

  • 安定性重視による性能が犠牲に。特権モードをアプリケーションで平然と使うDOS譲りの98に比べてNTカーネルの2000は性能で大きく劣った。一方Vistaは多くのドライバをカーネルモードから追い出して、マイクロカーネルとしての本来の姿に戻ったことが性能を大きく落とした。

  • 良い設計だが、実装がまずい。設計レベルではせっかく安定性を高めたにもかかわらず、実装上で足を引っ張る部分があったため、実際の安定性はなかなか高くならなかった。

  • ホーム向け、ロースペックPCに対する問題。2000など本当にひどく、ホーム向けに展開できないと判断された。そのため無理矢理Win32sを延命したMeを出さざるを得ず、Meは史上最悪Windowsの名を欲しいままにした。当初予定通り2000がホーム向けに対応できれば何の問題もなかったのに。一方VistaはそこまでひどくはなかったがAeroが必要とするやや時のロースペック、Netbookに十分適応できなかった。


改めて並べてみると、まるでそっくりだな。強いて言うならUIの不連続性ぐらいだが、考えてみると2Kも98から結構変わっていたように思うのだが。結局Vistaはまあ想定の範囲内のひどさのOSで、たぶん文句を言う人はいつまでも言い続けるだけなのではないかと思う。

一つだけ良いことは、Windows7ではMS自体が危機感を持っていろんなチューニングをまじめにやっているということだろう。XPと7がどの程度の共通点を持つことになるかは分からない。が、このままちゃんといけば、7は結構良い評価を受けられるのでは無かろうか。Vistaがあとで良い出来と言われるかどうかは、7のひどさに掛かっている:) 7がXPほどひどくなければ、Vistaは一生クソOSとして終わるだろう。まあでも移行期のOSなんて、ののしられて当然の代物だから仕方がない。開発者には申し訳ないと思うが。

↑このページのトップヘ