2009年01月

上記のような発言をIRCでしたら受けたので、ちょっと掘り下げて考えてみる。何故このようなことを言い出すかというと、「20世紀は統制の時代」とつねづね思っているからだ。

統制、というと非常に不愉快な、ややもすると独裁のようなイメージがあるかもしれない。しかしここでは「多数の人数が共同して一つの目標に向かって何かを成し遂げる」という意味である。戦時統制経済は当然その象徴ではあるが、統制はそこに終わっていない。

  • 日本企業を考えてみて欲しい。みんなが同じようにスーツを着、同じように大量の残業をこなし、同じような製品を必死で改良して作る。まるで軍隊ではないか。もちろん、それは当時から変わっていない。

  • ソ連の5カ年計画はどうだろう。実際に60年代をリードしたのは計画的な大量生産モデルではなかったか。

  • 発明は個人のものから集団のものにシフトした。もはや個人プレイはそれほど重要ではなく、企業や研究所での組織的な研究の集約が最大の成果になっている。


このように統制は実際には戦後もずっと続いているのだ。これを「大量の物資を動員したものが、生産性にものを言わせて生産性弱者を蹂躙した時代」と言わずしてなんだろう。振り帰ると、あれはまた血を流さない争いだったのだ、と言えなく無いか。いつの世も、持てるものが持たざるものを(平和裏にであれ、暴力的であれ、双方に利益のある形であっても)蹂躙する、それが歴史なのだ。

何が言いたいかというと、20世紀後半の礎は、多くの人が考えるWW2後に構成されたものではなく、その前段階から脈々と続いているものではないかと言うことだ。同様のことは世界史(ウィリアム・H-マクニール)あたりに書いてある、というかその受け売りである。これを今に強引に当てはめると、21世紀の変革は、我々が将来考えるであろうリーマンブラザーズ破産ではなく、それ以前からずっと続いているのではないか、ということになる。だから、金融崩壊はあくまで情報モデルの変更がもたらした結果であり、原因ではない。

ところで、同じような「持てるものが持たざるものを蹂躙した」例として、マス・コミュニケーションをあげたい。従来、画一的な意見を大規模に配信する方法として「宗教」「哲学」「法律」「民族性」など、いくつも手法はあった。しかしは決して多くなく、しかも不確実なものであった。大規模な出版から始まった流れとして、ラジオ及びテレビは、大規模配信システムとして、見事な役割をはたした。しかしこれもまた、「情報を持てるもの」から「持たざるもの」という片側通行メディアである。情報を持てるものはつねに勝者であり、敗者は持てる物から選別されたおこぼれを受け取るしかない、そういう状況であった。

その状況を変えたものは何か。ずばり「インターネット」だ。従来も中央集権でないP2P的な情報伝達手段は、うわさ話のようなものを含めいくつも存在した。しかし、インターネットはその内輪話を全世界レベルに広げてしまった。現在インターネットはテレビやラジオを超えてプライムメディアとなるべく道を進んでいるが、この過程で情報を得るコストが激減したため、今までの持てる持たざるの勢力図を次々と書き換えている。そして、久々に情報は大きな格差材料ではなくなる。そして、崩壊しつつあるのは、情報格差を元にした統制経済による「戦争」をやっていた連中ではないか。情報格差は、ネットによるコミュニケーションコストの減少と、コミュニティの巨大化により、無くなりつつある。それが無くなることにより、情報格差を利用した従来の手法(例えば、金融などその最たるものではないか)も通用しなくなる。

だから、金融崩壊の原因はインターネットにあるんじゃないか? ということなのだ。それ以前のテレビのような流れも、たぶん大きく影響しているだろう。しかし劇的なのはなんと言ってもWWWであり、Linuxであり、Googleであろう(ただし、具体的に何が劇的だったのかは異論だらけだろう)

たぶんここから本来は「では、来るべき未来はインターネットの力によりどのようなことが起こるのか」という考察に移るのだが、今日は夜10時だというのにまるで深夜のように思えるほど非常に眠いので、とりあえず次回以降に。

前回Oracle exadataについて書いたが、そのとき同時に「L.starにも考えていることがあった」と書いた。一つはpgclusterで培った経験を元に、クエリベースのレプリケーションをまともに動かそうというものなのだが、もう一つがexadataに近い、超並列を可能にするかもしれないRDBMSのアイデアだった。ここではそれを簡単にまとめることで、実際に可能かどうかをあらためて考えてみたい。

あくまで個人的な意見としてだが、超並列超高性能DBを作るうえで、考えたことは以下の通りである。

  • 原則シェアードナッシングしかあり得ない。

    • 読み込みディスクI/Oは、ディスクを増やせばいくらでも高速化可能

    • 書き込みの高速化はシェアードナッシングしか他にない

    • 分散後のデータをレプリケーションさせれば、読み込みの負荷分散まで可能である



  • クエリの今以上の高速化には、複数ノードで1クエリを実行することが可能

    • 分割できる役割は「ストレージI/Oと簡単なscan,sort」と「もっと上層部の複雑なもの」

    • 単純な検索やソートはいくらでも分散可能



  • 分散可能なものと不可能なもの、複製可能なものと不可能なものに分ける

    • 分散不可能なものはロックとトランザクション管理

    • 複製不可能なのはクエリそのものだが、もっと低位のストレージレベルは複製可能




以上より考えたのが以下3ノード式のデザインだ。まあ、ある意味Jim Gray本の教科書通りの分け方になるのであるが。

  • トランザクションマネージャ

    • トランザクションの調停処理を行う。具体的にはxidとロックの管理、2PCのcoordinatorなどなど

    • とにかく必要なのは、少ないオーバーヘッドで小規模なI/Oをこなし続けること

    • このノードは原則分散出来ない。Active-Standby方式でのHA化は望める可能性があるが、切り替えた場合には途中のトランザクションはabortしなければいけないかもしれない。



  • クエリ実行ノード

    • parser,planner,executorを行うノード。

    • parserとexecutorはロックを除いて完全に並列化可能

    • plannerではsystem catalogの取り扱いがあるので不安があるが、これは別に高コストでもかまわない。



  • リソースノード

    • storage engineである

    • DDL的には、テーブルスペースに近い位置づけとして定義可能であると考えている。

    • sequential scan, index scan, seq scan+sortを行い、その結果を返すDBである。MVCCを持つが、基本XIDを自前で持たない。

    • (たぶん64bitの)論理rowidを全てのtupleに持たせ、これが常に主キーとなる。clustered indexでいいかもしれない。

    • rowidベースのパーティショニングを備える。

    • ノード数を増やし、sortのコストを分散することでクエリの高速化を実現する

    • トランザクションログを持つ。また、ログベースのレプリケーションを持つ。




とまあ、この3つに分けて処理をしようというものだ。これならSQLの非決定性でレプリケーションが不可能にならない、クエリごとの処理並列化が可能と来ているため、基本的には破綻は無いだろう。ただ、まあ問題点は鬼のようになる。簡単に記すだけとしても

  • トランザクションログが分散して大丈夫か。

  • そもそも、バックアップはどうするのか(原則ストレージが複数ノードなので)

  • 多段のJOINが必要になるようなケースで、性能は上がらないのではないか

  • トランザクションマネージャがダウンしたときの動作はどうするか


とまあ、やっかいなのだらけだ。そしてこんなのを考えているあいだにBigTableがやってきて

  • そもそもplannerでしか実行プランが作れないというのはおかしくないか

  • 別にMVCCにこだわる必要はないのではないか


とか、そういう方向に頭が向いてしまうのである。ただ、一番の利点は分割することによって依存関係を廃し、開発を単純化できるのではないかという期待がある。何となれば

  • リソースノードは当面既存RDBMSから抜いてこれる。実装も、既存RDBMSからかなりの部分を拝借できる。

  • クエリ実行ノードは原則RDBMSそのもののうち、ストレージエンジンを持たないならそのままである。

  • トランザクションマネージャは、実装そのものだけなら簡単である


と言う具合だからだ。骨格が出来れば、インターフェースを維持したまままともな実装に変えればいい。もうちょっとかみ砕けば、それなりの実装に落とし込めるかなぁ。まあ、いずれにしてももうちょっとデザインしてみる価値がありそうだ。

オラクルが「10倍速い」DB専用機、「10年に一度の変革」と遠藤社長:ITpro.

比較的ひっそりというか、あまり知られないうちにOracle専用機、Oracle Exadataが登場した。かつてぶち上げたRaw Ironの流れだろうが、いつのまにやらひっそりと日の目を見ることなく消えていたと思っていた。まだやっていたのか。

しかし、興味深いことはいくつかある。現実問題どの程度OSが介在しているか分からないが、ストレージサーバーはiSCSIやNFSのような単純なものではないということだ。ITProの記事から引用すると
具体的には、従来はDB側だけで行っていたクエリー関連の処理をストレージ側にも担当させている。ストレージ側で該当するデータを特定、対象となる行列のみをDB側に伝送するものだ。この技術を「SmartScan」と呼んでいる。

これが意味することは、Sequential Scan(Index Scanも、かもしれない)の大部分をストレージ側で肩代わりしていることだ。ストレージ側に直接ブロックレベルのI/Oを要求せず、代わりにもっと高レベルの「スキャン」をさせることでストレージI/Oを軽減しようというのだ。物理ディスクレベルは、かねがうなるほどあるならRAID0+1の超巨大構成とかで、いくらでもスピードを上げられるようになった時代の、次のボトルネック退治である。

なお、このSmartScanが対応しているという処理はホワイトペーパーによると以下のような感じである。

  • 単純なSeq Scan

  • 条件絞り込み(Indexはたぶん効かない)

  • カラム絞り込み

  • ちょっとしたマスタテーブルのJOIN

  • 差分バックアップ(たぶんsnapshot相当の処理がストレージ城のファイルシステムにあると思われる)

  • テーブルスペースの作成(実ディスクのフォーマット処理などがストレージ任せに)


これにIndexとSortが加われば、相当なレベルになるだろう。ただ、現状のOracleがこれに対応するにはIndexとTableの関係を もっと密にする必要がある。また、ソートにはメモリが大量に必要なこととか、ストレージサーバーとDBノードの負荷のかねあいもあるのだろう。

実は、これに似たアプローチが一番良く行われているのはRDBMSのクラスタリングの一種、パラレルクエリ生成型である。こういうのはたいてい自前でプランを生成し、ばらしたSQL文を生成する。このときばらしたSQL文が単純スキャンしかしないようなシンプルなものになれば、たぶん近いレベルのアプローチになるだろう。

個人的には、RDBMSってのは性能二の次で複雑なクエリがかけるというのがより重要になってくると思う。が、なかなかどうして、まだまだデザインで改善できる部分はある。こういう「次世代デザイン」のRDBMSはこれからどんどん登場するのか、それとも衰退するのか?というのはこれまた興味深い。

オランダ在住日本人御用達のニュースサイト、ポートフォリオから


  • オランダの工業生産減、過去20年で最悪に


    昨日発表されたオランダ中央統計局CBSの統計によれば、昨年11月のオランダの工業生産高と売り上げは大幅に減少した。2008年11月の売り上げは前年同月に比較して14%の減少。生産高は同6%の下降で、これは過去20年で最大の減少率となっている。
    (中略)
    CBSによれば、2008年11月の稼働日が一昨年より2日間少ないというのもこの減少の一因であるとしている。





  • オランダ、不動産価格下落


    オランダ不動産業者協会(NVM)が木曜日に発表したところによれば、2008年の住宅平均売買価格は一昨年より1.8%下落して23万3000ユーロ(約3000万円)であった。特に第4四半期は第3四半期から2.5%下落している。



  • オランダの経済後退、EU予測


    月曜日にEUが発表した経済予測によれば、2009年オランダ経済は約2%縮小する。欧州16カ国の平均は1.8%。



とたてつづけに3本ほど景気の悪いニュースが出ている(引用は最小限にとどめているので、若干正確さを欠く。詳細はリンク先を参照されたし)2007年住み始めたときに漠然と感じたバブル末期感が現実化してしまったようだ。まあL.starは来たばっかりなので何が出来たわけではないのだが。オランダでは金持ち父さんばりの住宅転売とかもかなりあったようで、かなりのショックを持って迎えられることだろう。というか、実際に地価下落が始まったことで、これから本当の崩壊が始まるのだが。

これからオランダがどう向かうか、在住とはいえ部外者のL.starには想像も付かない。反動で今までの質素な生活に向かうだろうか。幸いにも商業主義にようやく毒されてきた頃合いなので、まだ引き返すのは楽だろうか。何にせよ、経済がやばくなれば自分の地位もやばくなるわけで、慎重な振る舞いが求められるかな。

ブッシュ大統領の任期二期八年が終了し、これからオバマ大統領の任期が始まる。ブッシュについては評価が分かれている、というかむしろぼろくそに言われているようだが、個人的には結構評価している。

ただしそれは「アメリカ大統領という彼の立場を考慮すれば」である。インターネットの誕生あたりが契機になったのだろうか、非常に激動していく社会の中で、ブッシュの取った行動はややもすれば保守的で、アメリカ覇権主義の象徴のようにとられただろうが、あのとき、他にどんな選択肢があったと言うのだろう。

弱腰な行動は、アメリカの敵をつけあがらせただけだろう。優しげな行動は、敵を逆上させ硬化させただろう。結局ああいう強攻策しかなかったのではないか。その点において、いくらか愚策はあったものの、及第点だっだだろう、と言いたいわけだ。アメリカが世界の犠牲になればいい、という類の意見を聞く。が、そんなことが実際にできるとは到底思えない。夢物語が実現しなかったからといって、それを責める気にはなれない。

ただ、強攻策になった結果として、アメリカ経済が崩壊し、世界も不安定になっている。だが、これはもうWW2以前から続く歴史の積み重ねの結果である。むしろ間違った政策でそれを加速しなかった(かどうか、本当には分かりようないのだが)点は評価してしかるべきではないか。現段階で強引につみ取ってまとめあげるのは千年に一人の英雄ぐらいが必要だっただろう。残念だが、明らかにそのクラスではなかったとは思う。

オバマの治世はそもそも就任の前からどうしようもないほど波乱になることが決まり切っている。彼の役割はブッシュがなんとかかんとか寿命を引き延ばしたアメリカの崩壊を何とか支え、適当な落としどころに持って行くことである。

落としどころと簡単に言うが、日本はバブル崩壊以降、延々と責任転嫁を繰り返すだけで、小泉が出てくるまで落としどころなどいつまでも見えてこなかった。(今回の雇用不安定を小泉失政のせいという人がいるが、彼は少なくとも大企業を救った。他の誰が大企業と民衆のどちらかを救ったというのか?)欧米は日本の二の舞にはならないと宣言しているが、実際には果たしてどうか。波乱無く過ごすことができたなら、オバマは間違いなく英雄だろう。

↑このページのトップヘ