いろいろなDBを触ってきたので、各々の特徴・強さをメモしてみる
NonStopSQL †
今の会社の売りでもある、古い人にはTandemといった方が通りが良いと思う。
サービス中一切止められない、しかも重要なデータを扱うミッションクリティカルな環境で使われる。
ポイントは、高速化された2PhaseCommit
4080ノードまで拡張できて性能の劣化が見られず、障害が発生してもサービス(どころか該当ノード上のトランザクションまで)保障するという優れもの。
OSレベルでプロセスの2重化までしているので、切り替わり・継続するために秒レベルで遅れがでる程度。
障害が起きていないノードはもちろん何事もない。
専用の割り込みレベルで通信するので、2phaseCommitの遅さを極力カバー
MFと同様にプロセスの優先度を細かく設定できるので、他の業務による性能劣化もない。
SQL/MXでSQL標準に対応、JavaのI/Fを持っているととても優秀。
Central方式でミッションクリティカル、大規模アクセスの場合は他のソリューションがないくらい。
DBのシステム上にOSが乗っている様な作りのため、実質メモリDBにもなっていて、I/Oのチューニング済み、ネットワークまわりも最適化されて、OracleTimesTenを先取りしているようなもの。
ただ、スケーラビリティでは世の中がHadoopのEcoSystemに移ってきていて、価格的にも、イメージもニッチになっているのが残念。
Greenplum †
EMCに買われ、EMCがDELLに買われ、今でもPivotalとしてビジネスを続けているBigData対応の分析用DB。
H/Wとしては、普通のIntelサーバを沢山並べて動かすため、トータルコストを下げられる。
I/Oの高速化のために、内蔵ディスクを使うことが多く、EMCのビジネスとはちょっとだけずれる。
とにかく、検索とデータローディングの高速化に特化しているため、普通のOTLPでも動くけど遅い。
高速化のポイントは、実行計画の配布による完全分業制という、SharedNothingでどうすれば高速でSQLを実行できるかを真面目に設計したDB。
どこにどんなデータがあるかという情報を集中管理していて、そこで、SQLに対してどういう実行計画で処理するとよいかを作成 → 各ノードに実行計画が配布されて、分散で実行 → 処理結果を集めてレポート。
大容量データを沢山のノードに配布、いかに高速に必要なデータを分散して読み込んで集約するかという、動作的にはHadoopのMapReduceと似ているかもしれない。
ただ、市場がニッチで、どんどん動いている(リアルタイムで高速処理も、Hadoop EcoSystemでも可能になりつつある)ので、ビジネス的には厳しいかな~、でもH/Wは親の親のDELLだったような気が。
Postgresql †
FreeSoftではありますが、ほぼ完全に商用の機能をカバーしています。
特に日本では利用者が多い。 pgpoolと組み合わせることで、レプリケーションや高信頼性クラスタも結構簡単に構成できる。 Linuxのマシンがどんどん高性能化しているので(直近でも40Coreで動かしていた)スケーラビリティも高く、運用周りの機能も充実してきている。
性能・機能的にほとんどの業務で使えるレベルで、ライセンス料が無料というのが強力。さらに、実績もどんどん増えていて、Linuxサーバ導入とともに増殖の一途。
とは言っても、数千ユーザぐらいで、Linuxのカーネルパラメータなどのリソース制限にかかってくる。
また、問題があってもだれも助けてくれない(コミュニティーにHelpを言っていいのかも微妙だし)ので、ソースコードをしっかり読む気力が必要。(逆にソースコードがあるのが心強い?!)
Oracle †
業界標準となっているDB。 一番の強みは技術者の層の厚さ。 いろいろの問題も詳しいエンジニアが各プロジェクトにいるレベルなので、自己解決しやすい。そのうえベンダーとしてのサポートもある。
(けして品質が高いというわけでは・・・)
結局共有メモリに全部置くのが速くて、複雑な処理に対応できる というのがみそ。
昔から、H/W上限で頭打ちになるという制約のもと、問題はH/Wが解決してくれるというIT業界の伝統に助けられて、Shared Nothing勢を蹴散らしてきた。
世の中はぐちゃぐちゃで、そこで結果を出すものが勝者となるという、Browser界のIEのごとし。
最近は新しい挑戦者が増えていて牙城が揺らぎつつあるが、まだまだ健在。
チューニングが難しいということで雇用を生み出しているというのはひ・み・つ。
SQL Server †
すごい名前ですね。SQLの専売特許ではもちろんないが、もともとがSybaseだったという由緒正しきDB。
WindowsとOfficeの世界にどっぷり漬かっているので、Excel、Access、SQLServerを使っていると訳が分からなくなる。
基本はGUIでの操作。VBAの開発環境と同様、いろいろとおせっかいをしてくれるので、設計が適当でも動くものが作れてしまうというのが長所なのか、短所なのか。
ただ、Sybase譲りでStoredProcedureを使うと全く別の顔をみせて、急に商用に耐えうる優秀なDBに早変わりする。Windows環境では、第一選択となるDB。
ただ、Windowsであるが故に、必ず長期間運用では再起動が必要となる宿命を持っている。(得体のしれない性能劣化+定期的なPatchをあてる必要あり)
コンソールに慣れていない今のエンジニアにとっては、生産性が高いんだろうな~と、年寄りは思う。