メンテ中

By , 2004 年 6 月 29 日

! しばらく止まる予定です。

! しばらく止まる予定です。

タイトルのみ

恐ろしい事

By , 2004 年 6 月 28 日

! 遠隔地からサーバーを操作する

apt-getとかがちゃがちゃやっていると、とっても恐ろしい事が起こってしまう事がある。

・・・まあ、日記が更新出来ているようなのでいいか。

10日間ほったらかし

By , 2004 年 6 月 25 日

! PGCluster

この1週間、三谷さんを交えてとっくみあい。かなり厳しい。普通の人間が普通にやっていると絶対に見れない、恐ろしい物をいろいろと見た。繰り返すようだが、あくまでこのソフトは検索を早くする、あるいはデータを維持するためのソフトウェアなので、更新が多く、なおかつパフォーマンスが必要な場合には使ってはいけない。

そう考えると、PostgreSQLというのは良くできたプラットフォームなのだな、と思う。

! サラリーマンコスプレ

この1週間、サラリーマンのコスプレをやっていた。コスプレなんかやっていると目立つはずなのだが、不思議な事にまわりも同じような服装ばっかり。

っていうか、私もサラリーマンのはずなのだが、これってどうよ。

FIreFox 0.9

By , 2004 年 6 月 15 日

! ブラウザ変更

タイトルの通り、ブラウザをFireFox0.9にかえる。Phoenixから考えると長いつきあいだ。

! ASIO+_inmn

[[某所]]近況より

> ということは、_inmm.dll と Lilith を組み合わせると、Windows のゲームの音質が格段に上がるってことですか?(まあ、Winamp でもいいんだけど)

同時に2音発生できないから効果音が無くなる。そして、効果音が鳴っている最中に割り込むと、サウンドデバイスが占有できなくてエラーで止まる。

Windowsミキサーを使わないでいい音というのは、つまりWindowsミキサーの恩恵を受けるアプリケーションとは相性が悪い、ということ。

そこでサウンドカード2枚差しですよ(嘘

連載の内容に困る

By , 2004 年 6 月 10 日

! なぜPostgreSQLを使うべきなのか。

珍しく、文章をまとめてみる事にする。

!!論旨

RDBMSというソフトウェア市場はあまりにも広く、それだけに様々な実装が様々な価格で販売されており、比較検討の難しい分野である。その中でも、PostgreSQLは今となっては、比較的癖の無いデータベースであり、それだけに積極的に採用する理由に乏しいのは確かであるが、自分の用途を考え、正しいチョイスとしてPostgreSQLを選択する事で、みんなハッピーになれる。

!!比較検討対象となる他のアプリケーション

!!!商用RDBMS

すでに市場を確保し、莫大な利益を上げているベンダーの製品は、メジャーであると言うだけでも十分に選択肢になりうる。挙げられるのは、Microsoft SQL Server,Oracle,DB2などである。

また、貴方が営利目的、あるいは業務で使うという前提であれば、MySQLも商用DBである事は覚えておいた方がいい。

!!!それ以外のフリーのRDBMS

Firebirdなどが選択肢に上がる。結構な数のフリーRDBMSが、実際には商用DBをベースにしていた経緯を持っていた事もあり、なかなか侮れない性能を持っている。

ややこしいが、商用目的でなければMySQLはGPLで利用出来るので、こちらに入る。

!!!組み込み向けRDBMS

sqlite,Berkley DBなど、極小のターゲットに対して有用な機能を提供しているDBは、きわめて小さいサイズでも動作する点で貴重である。

!!機能面での比較

よく言われる「○×形式での比較」は、実はトリックである。なぜなら、どれだけ機能がたくさんあっても、自分が使おうと思わなければ無用であり、ひどい場合には、それがある事による問題が発生する事すらあり得るというのは常に考えておくべきである。なんとなれば、多機能のソフトウェアは複雑であり、複雑なソフトウェアは大量のリソースを必要とするのである。シンプルな物を選ぶのが可能であれば、多くの場合そのほうが有用な選択肢であり得る。

!!!大規模向け機能

貴方のサイトが本当に大規模であるか考えてからこれらの機能に目を向けた方がよい。あとで大規模でなるかもしれないと思ってわざわざ高価な物を選んだところで、無駄になる可能性は否定出来ない。人間はついつい年に一度も使わない物に高価なお金を払ってしまう傾向がある。二人しか乗らないのに七人乗りミニバンなんて必要ないのに、スペックが良さそうに見えるだけで何となく得した気分になれる。

!!!強力なバックアップ

バックアップ、とりわけバイナリ系のアーカイブロギングは「ディスクなんて腐るほどあるから、何が何でもデータは救いたい」というケースに置いてもっとも有用なソリューションである。自分が守りたいデータにそれだけの価値があるかゆっくり考え、さらにRAID等で保護出来るかについても検討してみよう。

!!!ダウンタイム0

ダウンタイムを少なくしようとすればするほどコストは指数関数的に上昇する。ダウンタイム0と口でいうのはきわめて簡単だが、実際には銀行のオンラインシステムのようながちがちの物ですら夜間バッチの山なのだ。

もちろん、高価ではあるがPostgreSQLに対応したこの種のサービスを提供してくれるツールもある。

!!!クラスタリング

クラスタリング機能を使うと、きわめて大規模なデータベースでも柔軟な運用が可能になる。あなたのサイトが、増大し続けるトラフィックに対処しなければならないのが明白なら、こんなうれしい機能はない。

もちろん、1台でさばけるトラフィックを3台に任せてしまう損失がいくらになるか、考えてみればこのソリューションが恐ろしい金食い虫であることは間違いない。

!!!パフォーマンス

私の知る限り、パフォーマンスに関する最大の問題は、データベースの特徴を知らない、まずいSQL文にある。

この文章はもちろん「うちのほうが機能がいっぱいあるから」という商用ベンダーへの皮肉だが、同じ事はPostgreSQL自体にもあてはまる。RDBMSというのが、そもそも多機能を要求されすぎているのだ。

!!!サーバー

1台からしかアクセスしない、サーバー型すら必要でない場合は、組込用DBを使う方がいいだろう。

!!!トランザクション

トランザクションはRDBMSにおけるデータ保護の観点を語った素晴らしい機能だ。私はこれが無用だと絶対に思わないが、しかし世の中には「アプリケーションには絶対にトランザクションを使うな」とかいう事をする人がいる。そんな人にMySQL/MyISAMは素晴らしい選択肢だと思う。

!!!全文検索

検索の用途が特殊になると、汎用のものが専用のシステムに勝てる事はまずない。namazuのほうが絶対によいと思う。

!!!そもそも検索せずに集計だけする

テキストにでもはき出しておいて、ログ解析ツールなりmusashiのようなデータマイニングツールを使えばいい話だ。RDBMSのもっとも基本的な強みは刻一刻と変化していくデータを、よどみなく検索出来るという点にある。検索しないデータはRDBMSにいらない。

!!vacuumの誤解

PostgreSQLは、vacuumあたりが特に誤解されている部分がある。実は、これをもってして悪だといいきれるほど甘くない。

PostgreSQLの追記型+MVCCは、現在ある中で、トランザクションを考慮してロック競合を回避できる最強のソリューションである。また、ロールバックの速度は、あらゆるRDBMSの中で最速であると信じて疑わない。なにしろ、古いデータはそのまま残っているから、「このトランザクション無効」と宣言するだけでよいのだ。これ以上高速な方法は「何もしない」しかあり得ない。

もちろんvacuumしないとデータが増え続ける、updateがinsertとdeleteの組み合わせだという欠点はある。だがしかし、他の方式だって似たり寄ったりなのだ。

上書き+ロック方式ではパフォーマンスがほめられた物ではないし、しかも長いトランザクションに極端に弱い。これをもってして「Oracleでは大丈夫だったのに、このDBは・・・」という人もいるぐらいだ。

ロールバックセグメント方式の場合は、データが増え続ける事はない。が、恒常的にロールバックセグメントが必要な事を思い出してほしい。不幸な事に、この領域は貴方が実行するであろう最大のトランザクションにあわせて用意する必要があるのだ。あげくのはてに、ロールバックセグメントのあまりが不足すると悲劇的な事態が発生する事すらある。

これをもって、本当にvacuumが悪なのか考えてほしい。もちろん、善でない事だけは断言出来る。個人的な意見を言わせてもらうなら、全部痛み分けだろ、と言うところだ。

!!PostgreSQLがオンリーワンな所

PostgreSQLならではというのは、いくつかある事はある。

!!!ORDBMS

PostgreSQLはRDBMSではない、ORDBMSである。これは、自分の好きな型を作る事が出来る、ということである。そのためIPアドレス、幾何と言った複雑な型がそのまま利用出来るほか、自分の望む型を追加する事も出来る。

特別な用途の場合、こういった機能が大きく効いてくる事は疑いの余地がない。事実、PostgreSQLを使った最高のシステムは2TByteの、.orgドメイン管理システムだ。

!!!ストアドプロシージャ

逆だ、と感じる人がいるかもしれないが、PostgreSQLに追加出来る関数記述用言語(PL)は、開発中の物も含めて、Perl, Ruby, Python, Tcl, sh, bash, PHP,そしてJavaと、もはや数えたくないぐらい多い。PL/pgSQLなんて、単なるOracleのPL/SQLによく似た1実装にすぎない。いらない物はそもそもインストールしなければよい。

!!!シンプル

PostgreSQLは教科書に忠実?な、シンプルさも信条である。したがって挙動は予想しやすく、扱いやすい部類に入る。

!!システムの規模

もちろん、PostgreSQLは、PGClusterを含めても実際には超大規模には適さない可能性がある。しかし、容量だけで言うと、先に紹介した2TBのものが世界最大だ。

これから大規模になるかもしれないから、というので余裕を持って事を行うのもいいかもしれない。しかし、XPには「明日出来る事を今日するな」という格言がある。1年後やっても同じなのであれば、今あわてて高価なソフトやハードを買う必要はどこにもない。

ところで、一般に知られていないが、PostgreSQLは大量のテーブルに弱い。10000以上のテーブルが避けられない場合のほうが、むしろ使わない方がよいケースではないかと思う。

!!インターフェース

インターフェースは、各社丁寧なドライバがそろっているので、つながれば大丈夫という部分はある。PostgreSQLはlibpqが良くできているが、ODBCのサポートが良くない。

!!ライセンス

PostgreSQLのライセンスはBSDである。これは貴方が自社商用製品にPostgreSQLあるいはその改造品を採用したい場合、ものすごく大きなメリットとなる。また、オープンソースであるというのは、いざとなれば、自分たちで細々と保守する事も、そのために誰かを雇う事もできる。商用製品は、販売元/開発元に生命線を握られているのも同然だ。

!!サポート

この間も書いたが、商用DBは実に素晴らしいサポートをしてくれる。問題を聞き、パッチを書いてリリースしてくれ、また、オープンソースのコミュニティに近い物だってあるんだから最高と言うべきだ。

ただし、それは莫大な保守費用を払っているベンダーに限っての事。あなたがただの1利用者だった場合、弱小ベンダーたった場合、そんな大きな金を生まないようなつまらない場所を相手にする余裕は商用DBサポートにはない。

最後に、システムの世界ではSingle Point Failureという、ここが落ちたら死すレム全体の欠点になってしまう場所の存在をものすごく嫌う。商用DBの年間サポートで、最後に動いてくれるのは結局企業サポートか、開発チームしかない(彼らしかコードを見る機会はないのだ)のだから、これがSingle Point Failureであることは明白だ。オープンソースの場合、他の企業にサポートを頼む事だって出来る。極端な話だが、開発チームそのものを一時的に雇う事だって出来るのだから、自由度は高い。

!!結論

このように、PostgreSQLは、自分の責任範囲を理解していれば、実に使いやすい部分を持ったシステムである。そして、基本的には自由だ。しかしながら、以下のような局面では使い勝手が悪い。

*組み込み系

*insert,update,deleteと簡単なselectしか使わない、低機能で十分なケース

*更新が異常に多いのが分かり切っている

*どれだけお金をかけても、世界最高レベルの性能が必要な場合。特に、超大規模の場合、性能/金比が悪化してしまうところはいただけない。

*以下のような機能が要件上必須な場合

**とにかくデータを救うための、過剰なまでのバックアップ体制

**二相コミット。分散データベース。

**絶対安心出来るレプリケーション

*性能や機能より、RDBMSのブランドや「このソフトはみんなが使っている」という安心感が重要な場合。

*自分の用途に合うかどうかなんて面倒なことは考えたくない。

*確固としたパッケージとサポートがないと買えない場合。

逆に言うと、これら以外は十分PostgreSQLが使えるということだ。もちろん、このようなシステムで他の自分が習熟したシステムを使う事も出来るが、リンゴの皮むきに日本刀を使うような無駄な選択などをしては、技術者としてはもちろん、管理者としても経営者としても鼎の軽重を問われるのではなかろうか。

オープンソース漬け

By , 2004 年 6 月 8 日

! LW/PostgreSQL conference

先週は、この辺に振り回されて連日お台場まで通い。LWはたちっぱなしでへとへと。あと連日の酒でこれまたへとへと。日曜日はばたんきゅー。

! ぼらくる

FUDで商品を売れるメーカーは楽でうらやましいなあ、と思う。故意に誤った印象を植え付けるために相手の悪いところだけをあげつらうのはいいが、それでも嘘(しかも、説明の内部ですら矛盾している)を言うのは止めてほしいなぁ、と思う。

一億以上の案件をいっぱい抱えているようなベンダーは、みんな素晴らしい対応をしてくれると言ってますね。みなさん、企業に自発的に税金支払ってご苦労様です。

あー、もちろんこの話はフィクションです。特定のRDBMSベンダーとの関係なんてありゃしません。

! OSSで飯を食う

言われてみれば、私はオープンソースで飯を食う人間になってしまった。私がいかにして収支を挙げているか、と聞かれることも出てきた。まあ、私自身はいくつかそういう収支を考えての行動ではある。たとえばスキルのある人から学べる事、自分の自由が効く事、名声などは、お金以外の点で自分にとって長期のプラスになるのは間違いない。

昔はアメリカに行こうかとも考えていたが、ストックオプション制度が崩壊した今、正直時期を逸したと感じている。さっさと行っていれば良かったのかもしれないと思うが、一方でOSSやってると、別に世界のどこに住んでいようと、世界を股にかけて仕事が出来るようにも思う。

colinux+knoppix

By , 2004 年 6 月 2 日

! WindowsとLinux

私はこう見えても基本的にはWindows使いなので、会社用ノートPCまでWindowsにした。でも、Windowsだけだとこれまた大変不便なので、coLinuxを入れてみた。VMWare使う手はもちろんあるが、しかしいかんせんメモリ不足である。

そのまま入れるのは簡単なので、とりあえずKnoppix 3.4に挑戦してみた。VMWareのパーテーションを作り、さくっとhddインストールして、パーテーションをddでコピーした。なぜかブロックサイズを指定しなかったらVMWare巻き込んで落ちたような気がするが、気にしない気にしない。

なんかモジュールをロードできてなかったような気がしなかったこともないが、適当にやってやはりあっさりブートに成功する。colinuxは偉大だ。

とりあえず、次はCygwin/Xで使えるようにしてみよう、と思う。これで気軽にハックできる。

今日は時の記念日(だから何

By , 2004 年 6 月 1 日

! [[まいパパの私家版KNOPPIX|http://home.pa-net.jp/~munetika/myknoppix/]]

LAMP/LAPP(Linux,Apache,PHPとMySQL/PostgreSQL)が立ち上げて一発で使えるknoppix variant。なにやら他に便利なツールも入っている。実はまいパパはかつて同僚だった人で、今はなにやら一国一城の主のようだ。回線が移動したときにもお世話になった。

! Becky!とスパム

LWに出て行くのを見越して、新しいノートの設定を行った。ようやく進展したという感じではある。メールはすでに移行した(飽きた飽きたと言いつつまだbecky!)ので、次はスパムフィルタをインストールしようと思い、久々に調査すると以下のような物も見つけた。

!![[bsfilter|http://bsfilter.org/]]

Ruby。実はpop proxyやimap proxyとしての動作を兼ねる上に、面倒な設定さえすれば分かち書きも完璧。この中でもっとも高機能だが、いかんせん設定などが面倒。私用メールアドレスはすでにこれで処理中。

!![[bkbsfilter|http://www.shinonon.dyndns.org/diary/20031221.html]]

すでに紹介済み。操作性はかなり低い。[[某所]]を煽って導入させた実績あり。まだ使っているのだろうか。

!![[Annex|http://www.momose.com/hirofumi/computer/annex/]]

Becky!2用プラグイン。外部プログラム使ってベイジアンフィルタでspam退治。日本語分かち書き未対応だが、UIは若干まとも。

!![[BkASPil|http://b2antispam.s33.xrea.com/]]

同じくプラグイン。ブラックリスト方式から、ベイジアンフィルタもサポートしているようだ。同じく日本語分かち書き未対応。ブラックリスト方式は嫌い。

!![[POPFile|http://popfile.sourceforge.jp/index.php]]

WebベースUIがついたproxy型。会社マシンでは使用実績があり、まあそれなり。Perlなので重い。日本語に対する考え方が比較的まとも。

とまあこんな感じにリストアップ出来た。面倒なので、また日本語spam結構多いので、結局POPFileを引き継ぐ事にする。

OfficeFolders theme by Themocracy

Performance Optimization WordPress Plugins by W3 EDGE