メンテ中
■ ! しばらく止まる予定です。
■ ! しばらく止まる予定です。
タイトルのみ
タイトルのみ
apt-getとかがちゃがちゃやっていると、とっても恐ろしい事が起こってしまう事がある。
この1週間、三谷さんを交えてとっくみあい。かなり厳しい。普通の人間が普通にやっていると絶対に見れない、恐ろしい物をいろいろと見た。繰り返すようだが、あくまでこのソフトは検索を早くする、あるいはデータを維持するためのソフトウェアなので、更新が多く、なおかつパフォーマンスが必要な場合には使ってはいけない。
この1週間、サラリーマンのコスプレをやっていた。コスプレなんかやっていると目立つはずなのだが、不思議な事にまわりも同じような服装ばっかり。
タイトルの通り、ブラウザをFireFox0.9にかえる。Phoenixから考えると長いつきあいだ。
[[某所]]近況より
珍しく、文章をまとめてみる事にする。
!!論旨
RDBMSというソフトウェア市場はあまりにも広く、それだけに様々な実装が様々な価格で販売されており、比較検討の難しい分野である。その中でも、PostgreSQLは今となっては、比較的癖の無いデータベースであり、それだけに積極的に採用する理由に乏しいのは確かであるが、自分の用途を考え、正しいチョイスとしてPostgreSQLを選択する事で、みんなハッピーになれる。
!!比較検討対象となる他のアプリケーション
!!!商用RDBMS
すでに市場を確保し、莫大な利益を上げているベンダーの製品は、メジャーであると言うだけでも十分に選択肢になりうる。挙げられるのは、Microsoft SQL Server,Oracle,DB2などである。
!!!それ以外のフリーのRDBMS
Firebirdなどが選択肢に上がる。結構な数のフリーRDBMSが、実際には商用DBをベースにしていた経緯を持っていた事もあり、なかなか侮れない性能を持っている。
!!!組み込み向けRDBMS
sqlite,Berkley DBなど、極小のターゲットに対して有用な機能を提供しているDBは、きわめて小さいサイズでも動作する点で貴重である。
!!機能面での比較
よく言われる「○×形式での比較」は、実はトリックである。なぜなら、どれだけ機能がたくさんあっても、自分が使おうと思わなければ無用であり、ひどい場合には、それがある事による問題が発生する事すらあり得るというのは常に考えておくべきである。なんとなれば、多機能のソフトウェアは複雑であり、複雑なソフトウェアは大量のリソースを必要とするのである。シンプルな物を選ぶのが可能であれば、多くの場合そのほうが有用な選択肢であり得る。
貴方のサイトが本当に大規模であるか考えてからこれらの機能に目を向けた方がよい。あとで大規模でなるかもしれないと思ってわざわざ高価な物を選んだところで、無駄になる可能性は否定出来ない。人間はついつい年に一度も使わない物に高価なお金を払ってしまう傾向がある。二人しか乗らないのに七人乗りミニバンなんて必要ないのに、スペックが良さそうに見えるだけで何となく得した気分になれる。
バックアップ、とりわけバイナリ系のアーカイブロギングは「ディスクなんて腐るほどあるから、何が何でもデータは救いたい」というケースに置いてもっとも有用なソリューションである。自分が守りたいデータにそれだけの価値があるかゆっくり考え、さらにRAID等で保護出来るかについても検討してみよう。
ダウンタイムを少なくしようとすればするほどコストは指数関数的に上昇する。ダウンタイム0と口でいうのはきわめて簡単だが、実際には銀行のオンラインシステムのようながちがちの物ですら夜間バッチの山なのだ。
クラスタリング機能を使うと、きわめて大規模なデータベースでも柔軟な運用が可能になる。あなたのサイトが、増大し続けるトラフィックに対処しなければならないのが明白なら、こんなうれしい機能はない。
私の知る限り、パフォーマンスに関する最大の問題は、データベースの特徴を知らない、まずいSQL文にある。
1台からしかアクセスしない、サーバー型すら必要でない場合は、組込用DBを使う方がいいだろう。
トランザクションはRDBMSにおけるデータ保護の観点を語った素晴らしい機能だ。私はこれが無用だと絶対に思わないが、しかし世の中には「アプリケーションには絶対にトランザクションを使うな」とかいう事をする人がいる。そんな人にMySQL/MyISAMは素晴らしい選択肢だと思う。
検索の用途が特殊になると、汎用のものが専用のシステムに勝てる事はまずない。namazuのほうが絶対によいと思う。
テキストにでもはき出しておいて、ログ解析ツールなりmusashiのようなデータマイニングツールを使えばいい話だ。RDBMSのもっとも基本的な強みは刻一刻と変化していくデータを、よどみなく検索出来るという点にある。検索しないデータはRDBMSにいらない。
PostgreSQLは、vacuumあたりが特に誤解されている部分がある。実は、これをもってして悪だといいきれるほど甘くない。
PostgreSQLならではというのは、いくつかある事はある。
PostgreSQLはRDBMSではない、ORDBMSである。これは、自分の好きな型を作る事が出来る、ということである。そのためIPアドレス、幾何と言った複雑な型がそのまま利用出来るほか、自分の望む型を追加する事も出来る。
逆だ、と感じる人がいるかもしれないが、PostgreSQLに追加出来る関数記述用言語(PL)は、開発中の物も含めて、Perl, Ruby, Python, Tcl, sh, bash, PHP,そしてJavaと、もはや数えたくないぐらい多い。PL/pgSQLなんて、単なるOracleのPL/SQLによく似た1実装にすぎない。いらない物はそもそもインストールしなければよい。
PostgreSQLは教科書に忠実?な、シンプルさも信条である。したがって挙動は予想しやすく、扱いやすい部類に入る。
もちろん、PostgreSQLは、PGClusterを含めても実際には超大規模には適さない可能性がある。しかし、容量だけで言うと、先に紹介した2TBのものが世界最大だ。
インターフェースは、各社丁寧なドライバがそろっているので、つながれば大丈夫という部分はある。PostgreSQLはlibpqが良くできているが、ODBCのサポートが良くない。
PostgreSQLのライセンスはBSDである。これは貴方が自社商用製品にPostgreSQLあるいはその改造品を採用したい場合、ものすごく大きなメリットとなる。また、オープンソースであるというのは、いざとなれば、自分たちで細々と保守する事も、そのために誰かを雇う事もできる。商用製品は、販売元/開発元に生命線を握られているのも同然だ。
この間も書いたが、商用DBは実に素晴らしいサポートをしてくれる。問題を聞き、パッチを書いてリリースしてくれ、また、オープンソースのコミュニティに近い物だってあるんだから最高と言うべきだ。
このように、PostgreSQLは、自分の責任範囲を理解していれば、実に使いやすい部分を持ったシステムである。そして、基本的には自由だ。しかしながら、以下のような局面では使い勝手が悪い。
*組み込み系
*insert,update,deleteと簡単なselectしか使わない、低機能で十分なケース
*更新が異常に多いのが分かり切っている
*どれだけお金をかけても、世界最高レベルの性能が必要な場合。特に、超大規模の場合、性能/金比が悪化してしまうところはいただけない。
*以下のような機能が要件上必須な場合
**とにかくデータを救うための、過剰なまでのバックアップ体制
**二相コミット。分散データベース。
**絶対安心出来るレプリケーション
*性能や機能より、RDBMSのブランドや「このソフトはみんなが使っている」という安心感が重要な場合。
*自分の用途に合うかどうかなんて面倒なことは考えたくない。
*確固としたパッケージとサポートがないと買えない場合。
逆に言うと、これら以外は十分PostgreSQLが使えるということだ。もちろん、このようなシステムで他の自分が習熟したシステムを使う事も出来るが、リンゴの皮むきに日本刀を使うような無駄な選択などをしては、技術者としてはもちろん、管理者としても経営者としても鼎の軽重を問われるのではなかろうか。
先週は、この辺に振り回されて連日お台場まで通い。LWはたちっぱなしでへとへと。あと連日の酒でこれまたへとへと。日曜日はばたんきゅー。
FUDで商品を売れるメーカーは楽でうらやましいなあ、と思う。故意に誤った印象を植え付けるために相手の悪いところだけをあげつらうのはいいが、それでも嘘(しかも、説明の内部ですら矛盾している)を言うのは止めてほしいなぁ、と思う。
言われてみれば、私はオープンソースで飯を食う人間になってしまった。私がいかにして収支を挙げているか、と聞かれることも出てきた。まあ、私自身はいくつかそういう収支を考えての行動ではある。たとえばスキルのある人から学べる事、自分の自由が効く事、名声などは、お金以外の点で自分にとって長期のプラスになるのは間違いない。
私はこう見えても基本的にはWindows使いなので、会社用ノートPCまでWindowsにした。でも、Windowsだけだとこれまた大変不便なので、coLinuxを入れてみた。VMWare使う手はもちろんあるが、しかしいかんせんメモリ不足である。
LAMP/LAPP(Linux,Apache,PHPとMySQL/PostgreSQL)が立ち上げて一発で使えるknoppix variant。なにやら他に便利なツールも入っている。実はまいパパはかつて同僚だった人で、今はなにやら一国一城の主のようだ。回線が移動したときにもお世話になった。
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なので重い。日本語に対する考え方が比較的まとも。
OfficeFolders theme by
Themocracy