jump to navigation

[DB] PostgreSQL編 10月 20, 2009

Posted by hyhy in 技術情報.
Tags:
comments closed

前回のMySQLに引き続き、今回はPostgreSQLです。

■各バージョン(10月20日現在)
・8.4.1
・8.3.8
・8.2.14
・8.1.18
・8.0.22
・7.4.26
・7.3.21

■概要
PostgreSQL(ぽすとぐれすきゅーえる)は、BSDライセンスにより配布されています。
オープンソースのオブジェクト関係データベース管理システム (ORDBMS) 。

近年においては、機能、信頼性ともに目覚ましい発展を遂げています。→勢いアリ!

オープンソースDBに限定するとMySQLに次ぐ第2位のシェアを占めています。

■機能
・ストアド(PL/pgSQL)
・豊富なインデックス
・トリガ
・バキューム

■バキューム (VACUUM)
追記型アーキテクチャにおける不要領域を回収し、再利用またはOSに返却する処理。
バージョン8.3からはHeap-Only Tuples (HOT) が採用され、インデックスの変更を伴わない更新については、削除された行を直ちに再利用することが可能となり、バキュームの必要な頻度は下がりました。
バージョン8.3より自動バキューム機能が標準で有効化されています。

・全文検索
LIKE 述語と正規表現による文字列検索のほか、全文検索の機能を持つ。バージョン 8.3 以降は組み込みで、
それ以前のバージョンでは contrib/tsearch2 として提供されている。

・副問い合わせ(サブクエリ)
・結合(NATURAL JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN)
・制約(外部キー、ユニーク制約、CHECK制約)
・トランザクション
・オンライン・バックアップ
・SSLでの接続
・表領域

・CPU スケーラビリティ(拡張性)

・PostgreSQL は他の関係データベース管理システム (RDBMS) と比較して更新処理が遅いと言われてましたが、バージョン 8.3 にて Heap-Only Tuples (HOT) と呼ばれる機能が採用され、インデックスのキーとなっています。
列の値に変更が無い場合にはインデックスの更新を回避できるようになりました。

・PostgreSQL のレプリケーションは、サードパーティー製のオプションソフトウェア(ミドルウェア)を使うことで実現できます。

PostgreSQLの概要とアーキテクチャ
PostgreSQLの進化に迫る
最新版PostgreSQLバージョン8.4の機能
クラスタリングでPostgreSQLの可用性と信頼性を高める
PostgreSQLとOracle Databaseそれぞれの特徴

[9月版]PostgreSQLの今を知る
PostgreSQLの機能を他のデータベースと比較してみてみよう
PostgreSQLの利用事例と情報収集
PostgreSQLの導入と初期設定
PostgreSQL でのデータベース構築の際に必要となる物理設計のポイント
PostgreSQLのトラブルシュートとチューニング
PostgreSQL Conference 2009 Japanの見所に迫る
PostgreSQL安定運用のコツ2009

MySQL/PostgreSQL+Sennaで行うラクラク全文検索……Tritonn&Ludia導入のポイント

広告

[DB] MySQL編 10月 20, 2009

Posted by hyhy in 技術情報.
Tags:
comments closed

知らないうちに、DB製品もバージョンアップを繰り返し、現状何ができるのか、把握しないといかんなーと思いまして、まずMySQLよりまとめてみました。

■各バージョン(10月20日現在)
・MySQL5.4
・MySQL5.1.39
・MySQL5.0.86
・MySQL4.1.22

■概要
RDBMS(リレーショナルデータベースを管理、運用するためのシステム)の実装の一つで、オープンソースで開発されており、GNU GPLと商用ライセンスのデュアルライセンスとなっています。

市場シェアではPostgreSQLよりも高いが、日本ではPostgreSQLが高い、とされています。

他のフリーRDBMSと比較して高速性に定評があり、特に更新よりも参照の頻度の高いアプリケーションに向くとされています。
データストレージエンジンはSQLエンジンとは分離独立しており、用途に応じた機能を持つストレージエンジンを選択できる「マルチストレージエンジン」方式となっています。

■テーブルタイプ
MySQLはほかの多くのデータベースと違って複数のテーブルタイプを提供しており、用途に応じてテーブルタイプを使い分けることができるようになっています。
デフォルトのテーブルタイプはMyISAMですが、ほかにもInnoDBを選択することもできます。
○MyISAM
・特徴: デフォルトのテーブルタイプ
・特徴: シンプル
・特徴: 高速に動作
・特徴: フルテキスト検索に対応
・欠点: トランザクションや外部キー制約をサポートしない
・欠点: REPAIR TABLEで修正できることが多いがクラッシュ時に使えなくなる
・欠点: テーブルレベルでロックをかけるという点でロックの粒度が荒い

○InnoDB
・特徴: トランザクションをサポート
・特徴: 外部キー制約をサポート
・特徴: クラッシュ時のリカバリに対応
・特徴: 列レベルでロックを実施
・欠点: 複雑さが増す
・欠点: フルテキスト検索ができない
・欠点: パフォーマンスが悪い
・用途例: オンラインショップ、金融アプリケーション、データ整合が求められる用途

MyISAMの特徴で十分な場合にはそのまま使い、トランザクションのサポートやデータ整合性が必要とされる場合にはInnoDBを採用するという指針になります。
なおひとつのデータベースで複数種類のテーブルタイプを使うこともできるとされています。

■トランザクション
MyISAMでは、トランザクションをサポートしていません。InnoDBでトランザクションをサポートしています。
InnoDBはメディア障害時の更新ログによるリカバリもサポートしています。
トランザクションの概念がなかったMyISAMベースのテーブルを検索する場合の高速性は、InnoDBの場合は即座に得ることはできず、チューニングが必要です。
MySQL 5.0 では、InnoDBの方が、MyISAMよりも読み込みが速いことも多いとされています。

■レプリケーション(念のため)
データベース管理システムが持つ負荷分散機能の一つ。
あるデータベースとまったく同じ内容のを複製(レプリカ)をネットワーク上に複数配置し、通信回線や1台1台のコンピュータにかかる負荷を軽減する仕組みのことを言います。
マスターデータベースとレプリカは、ネットワークを通じて互いにデータを交換しあい、常に内容が一致するようにできているため、一ヶ所でデータを更新すると、マスターとすべてのレプリカに自動的に更新内容が伝播します。

■その他の機能
○バージョン3.2以降
標準でマスタスレーブ方式の「レプリケーション機能」を備えており、
堅牢なデータストレージの構築が比較的容易でとされています。
○バージョン4.1以降
「副次問い合わせ(サブクエリ)」
○バージョン5.0以降
SQL99に「ストアドプロシージャ」、「ビュー」、「トリガー」が実装

■Tips
プログラムのコード量を減らす MySQL 関数
データベースサーバリプレイスの考え方
実録、ほぼ無停止なMySQLのフェイルオーバ
リアルタイムにMySQLの監視を行う「Jet Profiler for MySQL」
よりシンプルで高速、より強力に:MySQL 最適化のヒント(1)
よりシンプルで高速、より強力に:MySQL 最適化のヒント(2)
MySQLのクエリキャッシュ機能