すべてのオープンデータベース管理システムの中で、最もインテリジェントで生産的で機能的なシステムはPostgresです。これは当然の注目を集めています。
開発者の一人であるTom Laneがpgsql-noviceメーリングリストでこの質問によく答えました。
正しい名前はPostgreSQLまたはPostgresですが、「postgre」ではありません。 おそらく、単純なPostgresの代わりにPostgreSQLシステムに名前を付けるという1996年の決定は、プロジェクトの歴史の中で唯一の大きな間違いです。 そして、何かを変えるには今では遅すぎると思います。
Postgresプロジェクトは、当時のエンドユーザーにとって便利なモジュール式でスケーラブルで生産的なデータベース管理システムを作成することを目標に、非常に古いIngres DBMSを処理する試みでした。 したがって、「POSTgres」という名前は、親プロジェクト「After Ingres」への参照であると想定されていました。 それはとても起こりました。
誰が気にしますか?
現実には、それほど多くの人は気にしません。 PHP言語の人気の急速な成長は、より「フレンドリーな」MySQLプラットフォームのかなり集中的な開発を伴いました。 はい。MySQLプロジェクトは、より厳密なPostgresプラットフォームよりも大幅に高速に進化しています。 残念ながら、友好的である代わりに、愚かさについて話さなければなりません。
これは強力な声明ですが、正当化を試みましょう。 たとえば、最近、 MySQL Dangersという名前のTekpubにアップロードしたこのビデオがあります 。 動画を視聴する機会や希望がない場合は、簡単に動画の概要を説明します。
- MySQLは厳密なDBMSではないので、設定と整合性の制限を熱心に無視します(ただ助けたいだけです)。
- 空の値の追加が禁止されている列に空の文字列
""
を簡単に挿入します。 - 空の値の追加を禁止している場合は、日付のある列に役に立たない日付(
0000-00-00
など)を喜んで挿入します。 - ゼロで除算でき、
1/0
計算時にNULL
を返しNULL
。 - 文字列をゼロで除算すると
NULL
を返しNULL
。 - 2に等しい長さの列に
1000
値を挿入しようとすると、この値が少し99
丸められます。
これはすべて、MySQLの使用を検討する理由になります。このシステムはデータをチェックしませんが、データの整合性にとって「便利な」価格のように見えます。 これはかなり悪いと思います。
上記のどれもあなたをおびえさせていないなら、私はあなたについて一つの言葉を持っています:オラクル。
高速でスケーラブルで楽しい
Postgresの機能は非常に広範囲であり、多くの人はこのDBMSの機能を認識していません。 システムには次のような構文糖質があることに注意してください。
- キーワード「無限大」は、「入力された値よりも大きい」ことを意味し、数値と日付に対して機能します。
- 日付を扱うための穏やかな表現:「今日」、「明日」、「昨日」(そしてPostgres 9.2ではすべてがさらに良くなります)。
- 素晴らしいデータ型:配列、IPアドレス(IPv6サポート付き)、および空間データ型(線、正方形、円)。
- テーブルの継承-あるテーブルを別のテーブルから継承するためのトリッキーな方法。
- 自然言語の非構造化テキストでの全文検索-箱から出してすぐに。
システムがスケーラビリティと高性能を示すことができない場合、これらの機能はすべて無意味です。 幸いなことに、Postgresにはこれに関する完全なセットがあります。
友達がいます。 彼の名前はロブ・サリバンであり、彼はDBAです。 彼と小規模な実験を行いました。600万のテキストレコードを含むPostgres StackOverflowデータアーカイブをアップロードしました。 その後、(データベースクエリ用の)ツールを発見し、その動作をSQL Serverの動作と比較することでシステムの最適化を開始しました。 Postgresは同等のパフォーマンスを示しただけでなく、多くの場合、Microsoftのソリューションを大幅に上回りました。
個別の単語は索引付け専用です。 テーブルの継承のおかげで、インデックスサイズが縮小されているため、テーブルを簡単にパーティション分割し、DBMSから最高のパフォーマンスを引き出すことができます。 もちろん、これはSQL Serverを使用して実装できますが、このタスクはそれほど明白ではなく、高価なライセンスの購入も必要です。
そして、それだけではありません! Postgresは、すぐにテーブルを圧縮できます。このアプローチは、「自動テーブル圧縮」というフレーズから派生した「TOAST」と呼ばれます。 データ圧縮により、RAMとディスク容量の両方の消費が削減されます。
TOASTのおかげで、StackOverflowのデータが占めるスペースを24ギガバイトから6ギガバイトに削減することができました。これはかなり深刻な節約です。 この機能は無料で、標準のPostgresパッケージに含まれています。 SQL Serverでこの機能を使用するには、エンタープライズライセンスを購入する必要があります。
知らない5つのこと
Postgresの機能について多くのことを書くことができます。 代わりに、NDC 2012カンファレンスからの私のレポートへのリンクを提供します。「 PostgreSQLについて知らない5つのこと 」 レポートでは、次のようなニュアンスを調べました。
- 外部データラッパーメカニズムを使用したTwitterリクエストの実行。
- GoogleのV8エンジンを使用してJavaScriptで関数を記述します。
- MySQLのキラートリック。
- Postgresの組み込みスナップショットメカニズムを使用したブロッキング防止。
- テーブルの継承。
- ペストデータ型。
楽しんでいただければ幸いです。