Commit c650d52e authored by Bruce Momjian's avatar Bruce Momjian

Update Japanese FAQ, from Jun Kuwamura.

parent 55c6f069
PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ) PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ)
原文最終更新日: Thu Aug 22 19:20:40 EDT 2002 原文最終更新日: Sun Oct 13 23:15:09 EDT 2002
現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us) 現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us)
Maintainer of Japanese Translation: Jun Kuwamura (juk@postgresql.jp) Maintainer of Japanese Translation: Jun Kuwamura (juk@PostgreSQL.jp)
この文書の最新版は http://www.PostgreSQL.org/docs/faq-english.html で見ることが この文書の最新版は http://www.PostgreSQL.org/docs/faq-english.html で見ることが
できます。 できます。
...@@ -19,13 +19,13 @@ docs/faq.html ...@@ -19,13 +19,13 @@ docs/faq.html
日本語版のこの文書は 本家 "User's Lounge" の "Collection of FAQs" の 日本語版のこの文書は 本家 "User's Lounge" の "Collection of FAQs" の
"Japanese" という見出しのところにあります。また、以下のサイトにも "Japanese" という見出しのところにあります。また、以下のサイトにも
あります。 あります。
http://www.postgresql.jp/subcommittee/jpugdoc/ http://www.PostgreSQL.jp/subcommittee/jpugdoc/
http://www.rccm.co.jp/~juk/pgsql/ http://www.rccm.co.jp/~juk/pgsql/
http://www.linux.or.jp/JF/ http://www.linux.or.jp/JF/
この和訳についてお気づきの点は(juk@postgresql.jp)までメールでお寄せ下さい。 この和訳についてお気づきの点は(juk@PostgreSQL.jp)までメールでお寄せ下さい。
2002年08月25日 桑村 潤 2002年10月16日 桑村 潤
] ]
...@@ -54,7 +54,7 @@ docs/faq.html ...@@ -54,7 +54,7 @@ docs/faq.html
2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか? 2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポートジ 2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポートジ
ェネレータや埋め込み問い合わせ言語インターフェースはありますか? ェネレータや埋め込み問い合わせ言語インターフェースはありますか?
2.4) PostgreSQL と通信するにはどんな言語が使えますか? 2.4) どのような言語で PostgreSQL と通信できすか?
管理上の質問 管理上の質問
...@@ -70,8 +70,7 @@ docs/faq.html ...@@ -70,8 +70,7 @@ docs/faq.html
いですか? いですか?
3.7) どのようなデバグ機能が使えますか? 3.7) どのようなデバグ機能が使えますか?
3.8) 接続しようとするときに 'Sorry, too many clients' が出るのはなぜですか? 3.8) 接続しようとするときに 'Sorry, too many clients' が出るのはなぜですか?
3.9) 自分のデータベース・ディレクトリにある pg_sorttemp.XXX ファイルは何ですか 3.9) pgsql_tmp ディレクトリの中には何がありますか?
3.10) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしな 3.10) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしな
くてはならないのはなぜですか? くてはならないのはなぜですか?
...@@ -118,6 +117,8 @@ docs/faq.html ...@@ -118,6 +117,8 @@ docs/faq.html
4.25) 関数で複数のロウまたはカラムを返すにはどうしますか? 4.25) 関数で複数のロウまたはカラムを返すにはどうしますか?
4.26) なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することがで 4.26) なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することがで
きないのでしょうか? きないのでしょうか?
4.27) どのようなリプリケーションオプションを利用できますか?
4.28) どのような暗号化オプションを利用できますか?
PostgreSQLの拡張についての質問 PostgreSQLの拡張についての質問
...@@ -132,7 +133,7 @@ docs/faq.html ...@@ -132,7 +133,7 @@ docs/faq.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一般的な質問 一般的な質問
1.1) PostgreSQL とは何ですか? 1.1) PostgreSQL とは何ですか?何と読みますか?
Post-Gres-Q-L.(ポスト - グレス - キュー - エル) と発音します。 Post-Gres-Q-L.(ポスト - グレス - キュー - エル) と発音します。
...@@ -142,10 +143,10 @@ PostgreSQL ...@@ -142,10 +143,10 @@ PostgreSQL
張した SQL のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利 張した SQL のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利
用できます。 用できます。
PostgreSQL の開発は、PostgreSQL 開発メーリングリストに参加しているインターネッ PostgreSQL の開発は、PostgreSQL 開発メーリングリストに参加している開発者達のチ
ト上の開発者チームですべて行なわれています。現在の座長は Marc G. Fournier ( ームですべて行なわれています。現在の座長は Marc G. Fournier (
scrappy@PostgreSQL.org )です。(以下に参加の仕方があります。)現在、このチームが scrappy@PostgreSQL.org )です。(下記の1.6節に参加の仕方があります。)現在、このチ
PostgreSQL 開発のすべての面倒をみています。 ームが PostgreSQL 開発のすべての面倒をみています。
Postgres95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen でしたが、その他大勢 Postgres95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen でしたが、その他大勢
の人々がこのコードの移植、テスト、デバグ、および、改良に参加しました。 の人々がこのコードの移植、テスト、デバグ、および、改良に参加しました。
...@@ -186,7 +187,6 @@ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A ...@@ -186,7 +187,6 @@ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
POSTGRESQL データベース管理システム POSTGRESQL データベース管理システム
部分的著作権 (c) 1996-2002, PostgreSQL国際開発チーム 部分的著作権 (c) 1996-2002, PostgreSQL国際開発チーム
...@@ -221,9 +221,6 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ...@@ -221,9 +221,6 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1.3) PostgreSQL の動作環境は? 1.3) PostgreSQL の動作環境は?
著者らは PostgreSQL のコンパイルとテストを次のプラットホーム上で行ないました。
(これらのうちのいくつかはコンパイルに gcc が必要です):
一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずです 一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずです
。リリースの時点で実際にテストを行なったことの報告がなされたプラットホームにつ 。リリースの時点で実際にテストを行なったことの報告がなされたプラットホームにつ
いてはインストール手引書に列挙してあります。 いてはインストール手引書に列挙してあります。
...@@ -232,21 +229,22 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ...@@ -232,21 +229,22 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
クライアント クライアント
MS Windows プラットホーム上で、libpq C ライブラリ、psql、それとその他のインター MS Windows プラットホーム上で走せるために、libpq C ライブラリ、psql、その他のイ
フェースはコンパイル可能で、バイナリーが走ります。この場合、クライアントを MS ンターフェース、および、クライアントアプリケーションをコンパイルすることは可能
Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走 です。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートさ
るサーバと通信します。 れている Unix プラットホーム上で走るサーバと通信します。
Win32 libpq ライブラリと psql を作るために、win31.mak が配布に含まれてます。 Win32 libpq ライブラリと psql を作るために、win32.mak が配布に含まれてます。
PostgreSQLは ODBC クライアントとも通信できます。 PostgreSQLは ODBC クライアントとも通信できます。
サーバ サーバ
現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベース 現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベース
サーバは Windows NT と Win2k 上で稼働しています。配布に含まれるpgsql/doc/ サーバは Windows NT と Win2k 上で稼働しています。配布に含まれるpgsql/doc/
FAQ_MSWINあるいはウェブサイトにある MS Windows FAQ をご覧下さい。Microsoft の素 FAQ_MSWIN、あるいは、http://www.PostgreSQL.org/docs/faq-mswin.htmlにある MS
のプラットホームに移植する計画はありません Windows FAQ をご覧下さい
MS Win NT/2000/XP ネイティブ版への移植が現在進行中です。
[訳注: [訳注:
...@@ -263,30 +261,25 @@ Win32 ...@@ -263,30 +261,25 @@ Win32
1.5) PostgreSQL はどこから入手できますか? 1.5) PostgreSQL はどこから入手できますか?
PostgreSQL の元の anonymous ftp サイトです: PostgreSQL の大元の anonymous ftp サイトは ftp://ftp.PostgreSQL.org/pub/ です。
・ ftp://ftp.PostgreSQL.org/pub/
ミラーサイトについては、我々のメイン Web ページをご覧下さい。 ミラーサイトについては、我々のメイン Web ページをご覧下さい。
[訳注: [訳注:
以下は日本のミラーサイトです: 以下は日本のミラーサイトです:
Japan: ftp://mirror.nucba.ac.jp/mirror/postgresql/pub/ Japan: ftp://mirror.nucba.ac.jp/mirror/PostgreSQL/pub/
Japan: ftp://ring.ip-kyoto.ad.jp/pub/misc/db/postgresql/ Japan: ftp://ring.ip-kyoto.ad.jp/pub/misc/db/PostgreSQL/
Japan: ftp://ring.crl.go.jp/pub/misc/db/postgresql/ Japan: ftp://ring.crl.go.jp/pub/misc/db/PostgreSQL/
Japan: ftp://ring.saitama-u.ac.jp/pub/misc/db/postgresql/ Japan: ftp://ring.saitama-u.ac.jp/pub/misc/db/PostgreSQL/
Japan: ftp://ring.astem.or.jp/pub/misc/db/postgresql/ Japan: ftp://ring.astem.or.jp/pub/misc/db/PostgreSQL/
Japan: ftp://ring.exp.fujixerox.co.jp/pub/misc/db/postgresql/ Japan: ftp://ring.exp.fujixerox.co.jp/pub/misc/db/PostgreSQL/
Japan: ftp://ring.jah.ne.jp/pub/misc/db/postgresql/ Japan: ftp://ring.jah.ne.jp/pub/misc/db/PostgreSQL/
Japan: ftp://ring.etl.go.jp.jp/pub/misc/db/postgresql/ Japan: ftp://ring.etl.go.jp.jp/pub/misc/db/PostgreSQL/
Japan: ftp://ring.asahi-net.or.jp/pub/misc/db/postgresql/ Japan: ftp://ring.asahi-net.or.jp/pub/misc/db/PostgreSQL/
Japan: ftp://ring.so-net.ne.jp/pub/misc/db/postgresql/ Japan: ftp://ring.so-net.ne.jp/pub/misc/db/PostgreSQL/
Japan: ftp://ring.aist.go.jp/pub/misc/db/postgresql/ Japan: ftp://ring.aist.go.jp/pub/misc/db/PostgreSQL/
] ]
1.6) サポートはどこで受けられますか? 1.6) サポートはどこで受けられますか?
主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に関す 主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に関す
...@@ -311,16 +304,11 @@ pgsql-general-request@PostgreSQL.org ...@@ -311,16 +304,11 @@ pgsql-general-request@PostgreSQL.org
開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メ 開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メ
ールの本文に: ールの本文に:
subscribe subscribe
end end
と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。 と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。
PostgreSQL についてもっと詳しく知りたければ、次の postgreSQL WWWホームページか http://www.PostgreSQL.org
らたどれます:
http://www.PostgreSQL.org
EFNet に #PostgreSQL という IRC チャンネルもあります。 UNIX コマンドでirc -c '# EFNet に #PostgreSQL という IRC チャンネルもあります。 UNIX コマンドでirc -c '#
PostgreSQL' "$USER" irc.phoenix.net を使います。 PostgreSQL' "$USER" irc.phoenix.net を使います。
...@@ -330,7 +318,7 @@ PostgreSQL' "$USER" irc.phoenix.net ...@@ -330,7 +318,7 @@ PostgreSQL' "$USER" irc.phoenix.net
JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場です。 JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場です。
正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営を助けています。 正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営を助けています。
詳しくは、JPUG のWeb サイト: 詳しくは、JPUG のWeb サイト:
http://www.postgresql.jp/ http://www.PostgreSQL.jp/
をご覧ください。会員登録も可能となっています。 をご覧ください。会員登録も可能となっています。
1990年代中ごろより、ポストグレスの日本語メーリング・リストを石井 達夫さんが主催しています。詳細は、 1990年代中ごろより、ポストグレスの日本語メーリング・リストを石井 達夫さんが主催しています。詳細は、
http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html
...@@ -340,18 +328,18 @@ PostgreSQL' "$USER" irc.phoenix.net ...@@ -340,18 +328,18 @@ PostgreSQL' "$USER" irc.phoenix.net
] ]
商用サポート会社のリストはhttp://www.postgresql.org/users-lounge/ 商用サポート会社のリストはhttp://www.PostgreSQL.org/users-lounge/
commercial-support.htmlにあります。 commercial-support.htmlにあります。
[訳注: [訳注:
日本では、SRA Inc. オープンシステム事業部 にて商用サポートが行なわれています。 日本では、SRA Inc. オープンシステム事業部 にて商用サポートが行なわれています。
ミラクル・リナックス株式会社 で "Miracle Linux for PostgreSQL" の販売とサポートが ミラクル・リナックス株式会社 で "Miracle Linux for PostgreSQL" の販売とサポートが
開始されました。 開始されました。
] ]
1.7) 最新版はどれですか 1.7) 最新版はどれですか
PostgreSQL の最新版はバージョン 7.2.2 です。 PostgreSQL の最新版はバージョン 7.2.3 です。
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。 我々は、4カ月毎にメジャーリリースを行なうことを計画しています。
...@@ -375,8 +363,11 @@ docs/awbook.html ...@@ -375,8 +363,11 @@ docs/awbook.html
にて翻訳されました。 にて翻訳されました。
] ]
および、 http://www.commandprompt.com/ppbook/ です。購入可能な書籍の目録は、 および、 http://www.commandprompt.com/ppbook/ です。購入可能な書籍の目録は、
http://www.postgresql.org/books/ にあります。 PostgreSQL 技術情報記事も、http:/ http://www.jp.PostgreSQL.org/books/ にあります。 PostgreSQL 技術情報記事も、
/techdocs.postgresql.org/ にあります。 http://techdocs.PostgreSQL.org/ にあります。
[訳注: 和訳文書は、日本ポストグレスユーザー会のhttp://www.postgresql.jp/
document/ をごらん下さい。 ]
psql も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴らしい psql も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴らしい
\d コマンドを持ちます。 \d コマンドを持ちます。
...@@ -433,21 +424,23 @@ McGraw-Hill ...@@ -433,21 +424,23 @@ McGraw-Hill
1.12) 開発チームにはどのように参加しますか? 1.12) 開発チームにはどのように参加しますか?
まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に含ま まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に含ま
れている PostgreSQL Developersの文書を読みます。2番目に、pgsql-hackers と れているPostgreSQL Developersの文書を読みます。2番目に、pgsql-hackers と
pgsql-patches メーリング・リストを購読(subscribe)します。3番目に、高品質のパッ pgsql-patches メーリング・リストを購読(subscribe)します。3番目に、高品質のパッ
チをpgsql-patchesに発信します。およそ十人ちょっとの人達が、PostgreSQL CVSアーカ チをpgsql-patchesに発信します。
イブにコミットする権限を持っています。そのそれぞれの人達が沢山の高品質なパッチ
を発信するので、現在コミッターとなっている人達はそれに追い付くのが大変ですが、 およそ十人ちょっとの人達が、PostgreSQL CVSアーカイブにコミットする権限を持って
我々は彼らがコミットしたパッチは高品質であると確信しています。 います。そのそれぞれの人達が沢山の高品質なパッチを発信するので、現在コミッター
となっている人達はそれに追い付くのが大変ですが、我々は彼らがコミットしたパッチ
は高品質であると確信しています。
1.13) バグレポートはどのように発信しますか? 1.13) バグレポートはどのように発信しますか?
バグを報告する仕方についてのガイドラインと方向づけがあるPostgreSQL BugTool (バ http://www.PostgreSQL.org/bugs/bugs.phpPostgreSQL BugTool (バグツール)のページ
グツール)のページを訪れてみて下さい を訪れてみて下さい。バグレポートを提出する仕方についての手引と指針があります
その前に http://postgreSQL.orgにある最新の FAQ をチェックして下さい。 その前に http://PostgreSQL.orgにある最新の FAQ をチェックして下さい。
それと同時に ftp サイト ftp://ftp.postgreSQL.org/pub/で、もっと新しいバージョン それと同時に ftp サイト ftp://ftp.PostgreSQL.org/pub/で、もっと新しいバージョン
の PostgreSQL あるいはパッチをさがしてみて下さい。 の PostgreSQL あるいはパッチをさがしてみて下さい。
1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか? 1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか?
...@@ -457,29 +450,26 @@ pgsql-patches ...@@ -457,29 +450,26 @@ pgsql-patches
機能(Features) 機能(Features)
PostgreSQLは、トランザクション、副問い合わせ、トリガー、ビュー、外部キー整 PostgreSQLは、トランザクション、副問い合わせ、トリガー、ビュー、外部キー整
合性参照、および、洗練されたロック機構など、大規模商用 DBMSが持つ機能をほと 合性参照、および、洗練されたロック機構など、大規模商用DBMSが持つ機能をほと
んど持っています。さらに PostgreSQLは、ユーザ定義型、継承、ルール、それから んど持っています。さらに PostgreSQLは、ユーザ定義型、継承、ルール、それから
、ロック競合を縮小するマルチバージョン同時性制御など、商用DBMSも持ち合わせ 、ロック競合を縮小するマルチバージョン同時性制御など、商用DBMSも持ち合わせ
ないような機能をいくつか持ち合わせています。 ないような機能をいくつか持ち合わせています。
性能(Performance) 性能(Performance)
PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ち PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ち
ます。ある面ではより早かったり、ほかの面ではより遅かったりします。 MySQLな ます。ある面ではより早かったり、ほかの面ではより遅かったりします。MySQLなど
どの特化型データベース・システムにくらべて、PostgreSQLの挿入/更新が遅いの の特化型データベース・システムにくらべて、PostgreSQLの挿入/更新が遅いのは
は、トランザクションによるオーバーヘッドがあるからです。もちろん、MySQLには 、トランザクションによるオーバーヘッドがあるからです。もちろん、MySQLには上
上記のFeaturesの節に示すような機能はまったくありません。我々は、PostgreSQL 記のFeaturesの節に示すような機能はまったくありません。我々は、PostgreSQLに
に柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛けたりソース 柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛けたりソースコ
コードを解析したりして、性能の改善を続けています。PostgreSQL と MySQL とを ードを解析したりして、性能の改善を続けています。PostgreSQL と MySQL とを比
比較している面白い Web ページが http://openacs.org/why-not-mysql.html にあ 較している面白い Web ページがhttp://openacs.org/why-not-mysql.htmlにありま
ります。 す。
PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複 PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複
数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有し 数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有し
ます。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせること ます。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせること
ができます。 ができます。
信頼性(Reliability) 信頼性(Reliability)
我々は、DBMSの信頼性が高くなくてはその価値が無いことを理解してます。十分テ 我々は、DBMSの信頼性が高くなくてはその価値が無いことを理解してます。十分テ
ストして、安定したコードをバグを最小にしてからリリースするように勤めてます ストして、安定したコードをバグを最小にしてからリリースするように勤めてます
...@@ -487,14 +477,16 @@ pgsql-patches ...@@ -487,14 +477,16 @@ pgsql-patches
のリリースの履歴が、製品版として安定した堅固なリリースであることを物語って のリリースの履歴が、製品版として安定した堅固なリリースであることを物語って
います。この分野では、他のデータベースと比べても遜色がないことに自信を持っ います。この分野では、他のデータベースと比べても遜色がないことに自信を持っ
ています。 ています。
サポート(Support) サポート(Support)
我々のメーリングリストは、遭遇するいかなる問題についても解決への手助けをし 我々のメーリングリストは、遭遇するいかなる問題についても解決への手助けをし
てくれる、開発者やユーザの大きな集まりを提供しています。我々は問題の解決を てくれる、開発者やユーザの大きな集まりへの接点を提供しています。我々は問題
保証することはできませんが、商用データベースであっても常に解決されるわけで の解決を保証することはできませんが、商用データベースであっても常に解決され
はありません。開発者や、ユーザ・コミュニティ、マニュアル類、それに、ソース るわけではありません。開発者や、ユーザ・コミュニティ、マニュアル類、それに
コードなどへ直接アクセスできることよって、 PostgreSQLのサポートは、他のDBMS 、ソースコードなどへ直接アクセスできることよって、PostgreSQLのサポートは、
サポートよりも優れたものとなっています。御要望に答えて、事柄毎の商用サポー 他のDBMSサポートよりも優れたものとなっています。御要望に答えて、事柄毎の商
トなどもあります(サポートFAQ項目をご覧下さい)。 用サポートなどもあります(FAQ1.6節をご覧下さい)。
価格(Price) 価格(Price)
PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあるBSD PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあるBSD
スタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで商品に組み スタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで商品に組み
...@@ -503,7 +495,7 @@ pgsql-patches ...@@ -503,7 +495,7 @@ pgsql-patches
1.15) PostgreSQLを資金面で援助するにはどうすればよいですか? 1.15) PostgreSQLを資金面で援助するにはどうすればよいですか?
PostgreSQLは、我々が6年前に始めたとき以来、最高クラスの基盤を持っています。これ PostgreSQLは、我々が始めた 1996年以来、最高クラスの情報基盤を持っています。これ
はすべて、Marc Fournieさんのおかげで、彼はこの基盤を何年にもわたって創造し管理 はすべて、Marc Fournieさんのおかげで、彼はこの基盤を何年にもわたって創造し管理
してきました。 してきました。
...@@ -512,15 +504,15 @@ PostgreSQL ...@@ -512,15 +504,15 @@ PostgreSQL
もちろん、この基盤は安いものではありません。維持し続けるためには毎月あるいは一 もちろん、この基盤は安いものではありません。維持し続けるためには毎月あるいは一
時の経費がかかります。もし、あなたやあなたの会社に、こうした努力のための資金を 時の経費がかかります。もし、あなたやあなたの会社に、こうした努力のための資金を
助けるために施すことができるようでしたら、 https://store.pgsql.com/shopping/ 助けるために施すことができるようでしたら、https://store.pgsql.com/shopping/から
index.php?id=1 から寄付をお願いします。 寄付をお願いします。
また、Webページには PostgreSQL,Inc とありますが、そこの"義援 (contributions)"ア また、Webページには PostgreSQL,Inc とありますが、そこの"義援(contributions)"ア
イテムは PostgreSQL プロジェクトをサポートするためだけのためで、決して特定の会 イテムは PostgreSQL プロジェクトをサポートするためだけのためで、決して特定の会
社のための資金のためではありません。もし、手形 (check)の方が都合がよければ連絡 社のための資金のためではありません。もし、手形(check)の方が都合がよければ連絡先
先の住所へお送り下さい。 の住所へお送り下さい。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ユーザー・クライアントの質問 ユーザー・クライアントの質問
2.1) PostgreSQL のための ODBC ドライバーはありますか? 2.1) PostgreSQL のための ODBC ドライバーはありますか?
...@@ -552,8 +544,6 @@ Programmer's Guide ...@@ -552,8 +544,6 @@ Programmer's Guide
データベースを裏に持つ Web ページについての素晴らしい紹介が、 データベースを裏に持つ Web ページについての素晴らしい紹介が、
http://www.webreview.comにあります。 http://www.webreview.comにあります。
http://www.phone.net/home/mwm/hotlist/にも、もう一つあります。
Web への拡張のためには、PHP が卓越したインターフェースとなっています。http:// Web への拡張のためには、PHP が卓越したインターフェースとなっています。http://
www.php.net/にあります。 www.php.net/にあります。
[訳注: [訳注:
...@@ -570,10 +560,12 @@ www.php.net/ ...@@ -570,10 +560,12 @@ www.php.net/
ftp://night.fminn.nagano.nagano.jp/php4/ ftp://night.fminn.nagano.nagano.jp/php4/
を用意して下さってます。 を用意して下さってます。
本家の方で国際化のMLも立ち上がっています。 本家の方で国際化のMLも立ち上がっています。
PHP-4.2 からマルチバイト拡張文字列として採り入れられました。
] ]
処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。 処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm か mod_perl を使い
ます。
[訳注: [訳注:
WDB は、Web から DataBase への Perl の Interface です。 WDB は、Web から DataBase への Perl の Interface です。
wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。 wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。
...@@ -588,14 +580,14 @@ www.php.net/ ...@@ -588,14 +580,14 @@ www.php.net/
2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポートジ 2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポートジ
ェネレータや埋め込み問い合わせ言語インターフェースはありますか? ェネレータや埋め込み問い合わせ言語インターフェースはありますか?
pgaccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この PgAccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この
配布と共に出荷されます。Pgaccess にはレポート・ジェネレータもあります。Web ペー 配布と共に出荷されます。PgAccess にはレポート・ジェネレータもあります。Web ペー
ジはhttp://www.flex.ro/pgaccessです。 ジはhttp://www.pgaccess.org/です。
ecpg という C 言語のための埋め込み SQL 問い合わせ言語インターフェースもあります ecpg という C 言語のための埋め込み SQL 問い合わせ言語インターフェースもあります
2.4) PostgreSQL と通信するにはどんな言語が使えますか? 2.4) どのような言語で PostgreSQL と通信できすか?
以下のものがあります: 以下のものがあります:
...@@ -604,19 +596,19 @@ ecpg ...@@ -604,19 +596,19 @@ ecpg
・ C++ (libpq++) ・ C++ (libpq++)
・ 埋め込みC (ecpg) ・ 埋め込みC (ecpg)
・ Java (jdbc) ・ Java (jdbc)
・ Perl (perl5) ・ Perl (DBD::Pg and perl5)
・ ODBC (odbc) ・ ODBC (odbc)
・ Python (PyGreSQL) ・ Python (PyGreSQL)
・ TCL (libpgtcl) ・ TCL (libpgtcl)
・ C Easy API (libpgeasy) ・ C Easy API (libpgeasy)
埋め込みHTML (PHP from http://www.php.net) PHP ('pg_' 関数群、 Pear::DB)
その他の利用可能なインターフェースは http://www.postgresql.org/interfaces.html その他の利用可能なインターフェースは http://www.PostgreSQL.org/interfaces.html
にあります。 にあります。
[訳注: [訳注:
rubyの作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが rubyの作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが
ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。 ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。
http://webclub.kcom.ne.jp/mb/noborus/ruby/ http://www.postgresql.jp/interfaces/ruby/
PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。 PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。
http://www.psn.co.jp/PostgreSQL/pgbash/ http://www.psn.co.jp/PostgreSQL/pgbash/
Bashコマンドラインでpostgres に問い合わせできます。 Bashコマンドラインでpostgres に問い合わせできます。
...@@ -749,7 +741,7 @@ Postmaster ...@@ -749,7 +741,7 @@ Postmaster
、デバッガでプロセスにアタッチして、ブレークポイントを設定し、開始から順を追っ 、デバッガでプロセスにアタッチして、ブレークポイントを設定し、開始から順を追っ
て見てゆくことができます。 て見てゆくことができます。
postgreSQL プログラムには、デバグと性能測定にとても役に立つ -sや -Aや -t 等のオ PostgreSQL プログラムには、デバグと性能測定にとても役に立つ -sや -Aや -t 等のオ
プションがあります。 プションがあります。
何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング( 何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング(
...@@ -765,7 +757,7 @@ postmaster ...@@ -765,7 +757,7 @@ postmaster
ます。 ます。
既定の最大プロセスは32プロセスです。-Nに適切な値を引数にしてpostmasterを再起動 既定の最大プロセスは32プロセスです。-Nに適切な値を引数にしてpostmasterを再起動
するか、postgresql.conf を修正することによって、その値を増やすことができます。 するか、PostgreSQL.conf を修正することによって、その値を増やすことができます。
。既定の構成では-Nは最大1024まで設定できます。もし、もっと必要であればinclude/ 。既定の構成では-Nは最大1024まで設定できます。もし、もっと必要であればinclude/
config.hの中のMAXBACKENDSを増加させ、再構築します。もし、望むならconfigureの config.hの中のMAXBACKENDSを増加させ、再構築します。もし、望むならconfigureの
--with-maxbackends切替を使って、-Nの既定値を構成時に設定できます。 --with-maxbackends切替を使って、-Nの既定値を構成時に設定できます。
...@@ -784,7 +776,7 @@ config.h ...@@ -784,7 +776,7 @@ config.h
には、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再構築が必 には、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再構築が必
要でした。 要でした。
3.9) 自分のデータベース・ディレクトリにある pg_sorttemp.XXXファイルは何ですか? 3.9) pgsql_tmp ディレクトリの中には何がありますか?
問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし 問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし
ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大きなス ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大きなス
...@@ -792,8 +784,8 @@ ORDER BY ...@@ -792,8 +784,8 @@ ORDER BY
ルがいくつか生成されます。 ルがいくつか生成されます。
一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエ 一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエ
ンドがクラッシュしてしまうとそうはなりません。そのときバックエンドがひとつも走 ンドがクラッシュしてしまうとそうはなりません。postmasterの停止とリスタートでこ
ってなければ、pg_tempNNN.NNファイルを消しても大丈夫です。 れらのファイルはディレクトリから消しさられます。
[訳注: [訳注:
SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog
付きで走らせた後、コンパイルとインストールを行ないます。 付きで走らせた後、コンパイルとインストールを行ないます。
...@@ -801,7 +793,7 @@ ORDER BY ...@@ -801,7 +793,7 @@ ORDER BY
syslogd に HUP シグナルを送って初期化しておきます。そして、 syslogd に HUP シグナルを送って初期化しておきます。そして、
$PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S $PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S
オプション付きにてサーバモードで起動します。(バージョン 7.1 からは オプション付きにてサーバモードで起動します。(バージョン 7.1 からは
pg_options は postgresql.conf になっています。) pg_options は PostgreSQL.conf になっています。)
] ]
...@@ -810,10 +802,11 @@ ORDER BY ...@@ -810,10 +802,11 @@ ORDER BY
PostgreSQLチームはマイナーリリースでは小さな変更しか行ないませんので、7.2 から PostgreSQLチームはマイナーリリースでは小さな変更しか行ないませんので、7.2 から
7.2.1 へのアップグレードにはダンプとリストアの必要はありません。しかし、メジャ 7.2.1 へのアップグレードにはダンプとリストアの必要はありません。しかし、メジャ
ーリリースでは、システムテーブルやデータファイルの内部フォーマットの変更をしば ーリリース(たとえば、7.2から7.3へのような)では、システムテーブルやデータファイ
しば行ないます。これらの変更はたいてい複雑で、そのため我々はデータファイルのた ルの内部フォーマットの変更をしばしば行ないます。これらの変更はたいてい複雑で、
めの後方互換性を維持することができません。ダンプは汎用フォーマットでデータを出 そのため我々はデータファイルのための後方互換性を維持することができません。ダン
力し、それを新しい内部フォーマットを使って読み込むことができます。 プは汎用フォーマットでデータを出力し、それを新しい内部フォーマットに読み込むこ
とができます。
同一リリースではディスク上でのフォーマットに変更はないので、アップグレードには 同一リリースではディスク上でのフォーマットに変更はないので、アップグレードには
ダンプ/リストアではなく、pg_upgrade スクリプトを使うことができます。リリースノ ダンプ/リストアではなく、pg_upgrade スクリプトを使うことができます。リリースノ
...@@ -832,10 +825,10 @@ PostgreSQL ...@@ -832,10 +825,10 @@ PostgreSQL
てみて下さい。 てみて下さい。
たとえ、欲しいのは最初の数ロウだけでも、すべての問い合わせを評価しなくてはなら たとえ、欲しいのは最初の数ロウだけでも、すべての問い合わせを評価しなくてはなら
ないかもしれません。ORDER BY を持った問い合わせを考えてみて下さい。もし、ORDER ないかもしれません。ORDER BY を持った問い合わせを使うことを考えてみて下さい。も
BYに合ったインデックスがあるとすると PostgreSQLは要求された最初の数ロウだけで評 し、ORDER BYに合ったインデックスがあるとすると PostgreSQLは要求された最初の数ロ
価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成されるまです ウだけで評価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成さ
べてのロウを評価しなければならないかもしれません。 れるまですべてのロウを評価しなければならないかもしれません。
4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか? 4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか?
...@@ -846,7 +839,8 @@ psql ...@@ -846,7 +839,8 @@ psql
4.4) テーブルからカラムの削除はどのようにしますか? 4.4) テーブルからカラムの削除はどのようにしますか?
ALTER TABLE DROP COLUMN はサポートしていませんが、その代わりにこうします: この機能は、ALTER TABLE DROP COLUMN としてリリース7.3 から加えられました。それ
までのバージョンでは、その代わりにこうします:
BEGIN; BEGIN;
LOCK TABLE old_table; LOCK TABLE old_table;
SELECT ... -- 削除したいカラム以外のカラムをすべて選択します。 SELECT ... -- 削除したいカラム以外のカラムをすべて選択します。
...@@ -860,7 +854,7 @@ ALTER TABLE DROP COLUMN ...@@ -860,7 +854,7 @@ ALTER TABLE DROP COLUMN
4.5) ロウ、テーブル、データベースの最大サイズは? 4.5) ロウ、テーブル、データベースの最大サイズは?
制限は以下のとおりです。 制限は以下のとおりです。
データベースの最大サイズ? 制限無し (500GB のデータベースも存在します) データベースの最大サイズ? 制限無し (1 TB のデータベースも存在します)
テーブルの最大サイズ? 16TB テーブルの最大サイズ? 16TB
ロウの最大サイズ? 1.6TB ロウの最大サイズ? 1.6TB
フィールドの最大サイズ? 1GB フィールドの最大サイズ? 1GB
...@@ -949,7 +943,7 @@ psql ...@@ -949,7 +943,7 @@ psql
SELECT col SELECT col
FROM tab FROM tab
ORDER BY col [ DESC ] ORDER BY col [ DESC ]
LIMIT 1 LIMIT 1;
LIKE あるいは ~ のようなワイルドカード演算子は特別な環境でしか使えません: LIKE あるいは ~ のようなワイルドカード演算子は特別な環境でしか使えません:
...@@ -960,8 +954,8 @@ LIKE ...@@ -960,8 +954,8 @@ LIKE
□ ~ (正規表現) パターンは^.で始まらなければならない □ ~ (正規表現) パターンは^.で始まらなければならない
・ 検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。 ・ 検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。
・ ILIKE や ~* のように大文字小文字を区別しない検索は使えません。そのかわり、 ・ ILIKE や ~* のような大文字と小文字を区別しない検索は使えません。そのかわり
このFAQで後述する関数のインデックスが使えます。 、このFAQの4.12節で説明する関数のインデックスが使えます。
・ initdb においては、デフォルトでCロケールが使われなくてはなりません。 ・ initdb においては、デフォルトでCロケールが使われなくてはなりません。
[訳注:強制的にインデックスを使うには SET enable_seqscan = off を実行します。 ] [訳注:強制的にインデックスを使うには SET enable_seqscan = off を実行します。 ]
...@@ -1025,11 +1019,10 @@ GEQO ...@@ -1025,11 +1019,10 @@ GEQO
大文字と小文字を区別しない等値比較次のように表現できる: 大文字と小文字を区別しない等値比較次のように表現できる:
SELECT * SELECT *
FROM tab FROM tab
WHERE lower(col) = 'abc' WHERE lower(col) = 'abc';
標準インデックスでは使われず、しかしながら、もし関数インデックスを作ったならそ 標準インデックスでは使われず、しかしながら、もし関数インデックスを作ったならそ
れが使われるでしょう。 れが使われるでしょう。
CREATE INDEX tabindex on tab (lower(col)); CREATE INDEX tabindex ON tab (lower(col));
WHERE lower(textfield) LIKE lower(pattern) WHERE lower(textfield) LIKE lower(pattern)
...@@ -1043,8 +1036,8 @@ GEQO ...@@ -1043,8 +1036,8 @@ GEQO
Type Internal Name Notes Type Internal Name Notes
-------------------------------------------------- --------------------------------------------------
"char" char 1 character "char" char 1 character
CHAR(#) bpchar 指定された固定長となるように空白が詰められる CHAR(n) bpchar 指定された固定長となるように空白が詰められる
VARCHAR(#) varchar 最大長のサイズを指定する、詰め物無し VARCHAR(n) varchar 最大長のサイズを指定する、詰め物無し
TEXT text 長さに上限の無いテキスト TEXT text 長さに上限の無いテキスト
BYTEA bytea 可変長のバイト配列(null-byte safe) BYTEA bytea 可変長のバイト配列(null-byte safe)
...@@ -1057,9 +1050,9 @@ BYTEA bytea ...@@ -1057,9 +1050,9 @@ BYTEA bytea
れたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなり れたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなり
ます。 ます。
CHAR()はいつも長さが同じ文字列を保存するのに最適です。VARCHAR() は可変長の文字 CHAR(n)はいつも長さが同じ文字列を保存するのに最適です。VARCHAR(n) は可変長の文
列を保存するのに最適ですが、保存できる文字列の長さに制限があります。TEXT は長さ 字列を保存するのに最適ですが、保存できる文字列の長さに制限があります。TEXT は長
に制限の無い文字列の保存ためのもので、最大1ギガバイトです。 BYTEAは、部分的に に制限の無い文字列の保存ためのもので、最大1ギガバイトです。 BYTEAは、部分的に
NULL のバイトを含むバイナリデータを保存するためのものです。 NULL のバイトを含むバイナリデータを保存するためのものです。
4.15.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? 4.15.1) 通番(serial)/自動増分フィールドはどのようにつくりますか?
...@@ -1090,9 +1083,9 @@ Numbering Rows ...@@ -1090,9 +1083,9 @@ Numbering Rows
ひとつの方法は、nextval() 関数を使ってその値を挿入する前(before)に SEQUENCE オ ひとつの方法は、nextval() 関数を使ってその値を挿入する前(before)に SEQUENCE オ
ブジェクトから次の SERIAL 値を取り出し、それから実際に挿入をすることです。 ブジェクトから次の SERIAL 値を取り出し、それから実際に挿入をすることです。
4.16.1 の例で使ったテーブルを使うとすると、Perl では次のようになります。 4.15.1 のテーブルの例を使うとすると、疑似言語ではこのようになります。
new_id = output of "SELECT nextval('person_id_seq')" new_id = execute("SELECT nextval('person_id_seq')");
INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal'); execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
そうして、new_id に保存した新しい値を他の問い合わせに(たとえば、person テーブル そうして、new_id に保存した新しい値を他の問い合わせに(たとえば、person テーブル
に対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作られた に対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作られた
SEQUENCEオブジェクトの名前は、<table>_<serialcolumn>_seq のようになり、このうち SEQUENCEオブジェクトの名前は、<table>_<serialcolumn>_seq のようになり、このうち
...@@ -1100,8 +1093,8 @@ SEQUENCE ...@@ -1100,8 +1093,8 @@ SEQUENCE
あるいは、与えられたSERIAL値を、それが既定値として挿入された後で(after)、 あるいは、与えられたSERIAL値を、それが既定値として挿入された後で(after)、
currval() 関数を使って取り出すこともできます。たとえば、 currval() 関数を使って取り出すこともできます。たとえば、
INSERT INTO person (name) VALUES ('Blaise Pascal'); execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = currval('person_id_seq'); new_id = execute("SELECT currval('person_id_seq')");
最後に、INSERT文から返るOIDを使って、既定値をみつけることもできますが、しかし、 最後に、INSERT文から返るOIDを使って、既定値をみつけることもできますが、しかし、
これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の作った DBD::Pg これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の作った DBD::Pg
モジュールを使えば、$sth->execute() の後に $sth->{pg_oid_status} を経由してその モジュールを使えば、$sth->execute() の後に $sth->{pg_oid_status} を経由してその
...@@ -1110,7 +1103,7 @@ OID ...@@ -1110,7 +1103,7 @@ OID
4.15.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使わな 4.15.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使わな
いほうがよいのでしょうか? いほうがよいのでしょうか?
それはありません。Currval() は、すべてのユーザではありませんが、あなたのバック それはありません。currval() は、すべてのユーザではありませんが、あなたのバック
エンドに与えられた現在の値を返します。 エンドに与えられた現在の値を返します。
4.15.4) トランザクションが中断したときにもういちどシーケンス番号が使われないの 4.15.4) トランザクションが中断したときにもういちどシーケンス番号が使われないの
...@@ -1124,7 +1117,7 @@ OID ...@@ -1124,7 +1117,7 @@ OID
OID とは一意のロウID に対する PostgreSQL の答えです。PostgreSQL の中でつくられ OID とは一意のロウID に対する PostgreSQL の答えです。PostgreSQL の中でつくられ
るすべてのロウは一意の OID を得ます。initdb で発生される OID はすべて 16384 るすべてのロウは一意の OID を得ます。initdb で発生される OID はすべて 16384
(backend/access/transam.h から)より小さな値です。initdb 後のすべての OID (ユー (include/access/transam.h から)より小さな値です。initdb 後のすべての OID (ユー
ザ作成)はそれ以上の値になります。既定では、これらすべての OIDは一つのデーブルや ザ作成)はそれ以上の値になります。既定では、これらすべての OIDは一つのデーブルや
データベース内に留まらず、PostgreSQL インストレーション全体の中で一意です。 データベース内に留まらず、PostgreSQL インストレーション全体の中で一意です。
...@@ -1166,8 +1159,8 @@ TID ...@@ -1166,8 +1159,8 @@ TID
・ ポータル(portal), カーソル(cursor) ・ ポータル(portal), カーソル(cursor)
・ 領域変数(range variable)、テーブル名(table name)、テーブル別名(table alias) ・ 領域変数(range variable)、テーブル名(table name)、テーブル別名(table alias)
一般的なデータベース用語のリストは: http://www.comptechnews.com/~reaster/ 一般的なデータベース用語のリストは:http://hea-www.harvard.edu/MST/simul/
dbdesign.html で見つけられます。 software/docs/pkgs/pgsql/glossary/glossary.html で見つけられます。
4.18) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るのはな 4.18) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るのはな
ぜですか? ぜですか?
...@@ -1187,7 +1180,7 @@ dbdesign.html ...@@ -1187,7 +1180,7 @@ dbdesign.html
4.19) どのバージョンの PostgreSQL を走らせているかを調べるにはどうしますか? 4.19) どのバージョンの PostgreSQL を走らせているかを調べるにはどうしますか?
psql から select version(); をタイプします。 psql から SELECT version(); をタイプします。
4.20) ラージ・オブジェクトの操作でinvalid large obj descriptor を受け取りました 4.20) ラージ・オブジェクトの操作でinvalid large obj descriptor を受け取りました
。なぜでしょうか? 。なぜでしょうか?
...@@ -1213,25 +1206,27 @@ CURRENT_TIMESTAMP ...@@ -1213,25 +1206,27 @@ CURRENT_TIMESTAMP
4.22) なぜ、INを使う副問い合わせがとても遅いのですか? 4.22) なぜ、INを使う副問い合わせがとても遅いのですか?
現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキャンすること 現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキャンすること
により、副問い合わせを外部問い合わせに結合しています。当面はINをEXISTSで置き換 により、副問い合わせを外部問い合わせに結合しています。もし、副問い合わせが数行
えることです: しか返さず、外部問い合わせが沢山の行を返すなら、当面はINをEXISTSで置き換えるこ
とです:
SELECT * SELECT *
FROM tab FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2) WHERE col1 IN (SELECT subcol FROM subtab)
を、置き換えて: を、置き換えて:
SELECT * SELECT *
FROM tab FROM tab
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
とします。この制限は将来のリリースで直したいと思っています。 とします。これが手っ取り早いですが、subcolは索引付きカラムであるべきです。この
制限は将来のリリースで直したいと思っています。
4.23) 外部結合(outer join)はどのように実現しますか? 4.23) 外部結合(outer join)はどのように実現しますか?
PostgreSQL は SQL 標準構文を使う外部結合(アウタージョイン)をサポートします。こ PostgreSQL は SQL 標準構文を使う外部結合(アウタージョイン)をサポートします。こ
こに 2つの例題があります。 こに 2つの例題があります。
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
あるいは あるいは
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col); FROM t1 LEFT OUTER JOIN t2 USING (col);
これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されなかっ これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されなかっ
たロウ(t2 と一致しなかったロウ)も返しています。RIGHT 結合は t2 の結合されなかっ たロウ(t2 と一致しなかったロウ)も返しています。RIGHT 結合は t2 の結合されなかっ
...@@ -1243,7 +1238,7 @@ NOT IN ...@@ -1243,7 +1238,7 @@ NOT IN
SELECT tab1.col1, tab2.col2 SELECT tab1.col1, tab2.col2
FROM tab1, tab2 FROM tab1, tab2
WHERE tab1.col1 = tab2.col1 WHERE tab1.col1 = tab2.col1
UNION ALL UNION ALL
SELECT tab1.col1, NULL SELECT tab1.col1, NULL
FROM tab1 FROM tab1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2) WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
...@@ -1251,19 +1246,19 @@ UNION ALL ...@@ -1251,19 +1246,19 @@ UNION ALL
4.24) 複数のデータベースを使う問い合わせはどのようにすればできますか? 4.24) 複数のデータベースを使う問い合わせはどのようにすればできますか?
現行(current)を除いて、データベースへの問い合わせ方法はありません。というのも 現行のデータベース以外への問い合わせ方法はありません。というのもPostgreSQLがデ
PostgreSQLがデータベース仕様のシステムカタログを読み込むためで、そこには、たと ータベース仕様のシステムカタログを読み込むためで、そこには、たとえそのふりをす
えそのふりをするだけにしろ、データベースを越えて問い合わせをするすべがありませ るだけにしろ、データベースを越えて問い合わせをするすべがありません。
ん。
もちろん、クライアントは同時に異なる複数のデータベースへ接続してそこにある情報 /contrib/dblink はデータベース間(cross-database)の問い合わせを関数呼出しにより
をマージすることはできます。 許します。もちろん、クライアントは同時に接続を別のデータベースへも張らなくては
ならず、結果をクライアント側でマージしなくてはなりません。
4.25) 関数で複数のロウまたはカラムを返すにはどうしますか? 4.25) 関数で複数のロウまたはカラムを返すにはどうしますか?
もし、PL/pgSQL 関数でrefcursorsを使うと結果の組を返すことができます。 http:// もし、PL/pgSQL 関数でrefcursorsを使うと結果の組を返すことができます。 http://
developer.postgresql.org/docs/postgres/plpgsql-cursors.html の 23.7.3.3 節をご www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html の 23.7.3.3 節をご覧下
覧下さい。 さい。
4.26)なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することができ 4.26)なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することができ
ないのでしょうか? ないのでしょうか?
...@@ -1275,6 +1270,34 @@ PL/PgSQL ...@@ -1275,6 +1270,34 @@ PL/PgSQL
時テーブルアクセスのために使うことです。これで、毎回クエリーのパースし直しを起 時テーブルアクセスのために使うことです。これで、毎回クエリーのパースし直しを起
こすでしょう。 こすでしょう。
4.27) どのようなリプリケーションオプションを利用できますか?
マスター/スレーブのリプリケーションオプションがいくつか利用可能です。これらの
オプションではマスターのみがデータベースを変更でき、スレーブはデータベースを読
むだけです。 http://gborg.PostgreSQL.org/genpage?replication_research の最後に
それらを一覧にしてあります。マルチ-マスターのリプリケーションによるソリューショ
ンは http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php にて作業
が進められています。
[訳注
JPUG 分散トランザクション開発分科会では、永安悟史さんを中心に2相
コミットの実装を行なっています。
http://www.postgresql.jp/subcommittee/dt/index.html
http://www.snaga.org/jpug-dt/
三谷篤さんによる双方向リプリケーションPGReplicate
http://www.csra.co.jp/~mitani/jpug/pgreplicate/
]
4.28) どのような暗号化オプションを利用できますか?
・ /contrib/pgcrypto SQL問い合わせの中で使うための沢山の暗号化を含みます。
・ クライアントからサーバーへの転送をを暗号化する唯一の方法はpg_hba.confの中で
hostsslを使うことによります。
・ バージョン7.3 ではデータベースユーザのパスワードは保存される時に自動的に暗
号化されます。それより前のバージョンではpostgresql.conf中で
PASSWORD_ENCRYPTIONを有効にする必要があります。
・ サーバーは暗号化ファイルシステムを使って走ることもできます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PostgreSQLの拡張についての質問 PostgreSQLの拡張についての質問
...@@ -1307,8 +1330,8 @@ PL/PgSQL ...@@ -1307,8 +1330,8 @@ PL/PgSQL
[訳注: [訳注:
日本語版の製作については以下の通りです。 日本語版の製作については以下の通りです。
最終更新日: 2002年08月25 最終更新日: 2002年10月18
翻訳者: 桑村 潤 (Jun Kuwamura <juk@postgresql.jp>) 翻訳者: 桑村 潤 (Jun Kuwamura <juk@PostgreSQL.jp>)
このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます): このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます):
...@@ -1335,9 +1358,9 @@ Atsushi SUGAWARA <asugawar at f3.dion.ne.jp>) ...@@ -1335,9 +1358,9 @@ Atsushi SUGAWARA <asugawar at f3.dion.ne.jp>)
日本語版のこの文書は、以下からもたどれます。 日本語版のこの文書は、以下からもたどれます。
http://www.rccm.co.jp/~juk/pgsql/(FAQ和訳 PostgreSQL についてよくある質問) http://www.rccm.co.jp/~juk/pgsql/(FAQ和訳 PostgreSQL についてよくある質問)
http://www.postgresql.jp/subcommittee/jpugdoc/JPUG文書・書籍関連分科会 http://www.PostgreSQL.jp/subcommittee/jpugdoc/JPUG文書・書籍関連分科会
http://www.linux.or.jp/JF/Linux JFプロジェクト http://www.linux.or.jp/JF/Linux JFプロジェクト
http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/ http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/
なお、この和訳に関するご意見は(juk@postgresql.jp)までお寄せ下さい。 なお、この和訳に関するご意見は(juk@PostgreSQL.jp)までお寄せ下さい。
] ]
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
<H1> <H1>
PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ)</H1> PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ)</H1>
<P> <P>
原文最終更新日: Thu Aug 22 19:20:40 EDT 2002 原文最終更新日: Sun Oct 13 23:15:09 EDT 2002
<P> <P>
現在の維持管理者: Bruce Momjian (<A 現在の維持管理者: Bruce Momjian (<A
HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
Maintainer of Japanese Translation: Jun Kuwamura (<A Maintainer of Japanese Translation: Jun Kuwamura (<A
HREF="mailto:juk@postgresql.jp">juk@postgresql.jp</A>)<BR><P> HREF="mailto:juk@PostgreSQL.jp">juk@PostgreSQL.jp</A>)<BR><P>
<P> <P>
この文書の最新版は この文書の最新版は
<A HREF="http://www.PostgreSQL.org/docs/faq-english.html"> <A HREF="http://www.PostgreSQL.org/docs/faq-english.html">
...@@ -27,7 +27,7 @@ http://www.PostgreSQL.org/docs/faq-english.html</A> ...@@ -27,7 +27,7 @@ http://www.PostgreSQL.org/docs/faq-english.html</A>
<P> <P>
<P> <P>
<small><PRE> <SMALL><PRE>
(以下、訳者による注釈を [訳注: と ] とで囲んで記します。) (以下、訳者による注釈を [訳注: と ] とで囲んで記します。)
[訳注: [訳注:
日本語版製作についてのメモは最後尾へ移動しました。 日本語版製作についてのメモは最後尾へ移動しました。
...@@ -35,21 +35,21 @@ http://www.PostgreSQL.org/docs/faq-english.html</A> ...@@ -35,21 +35,21 @@ http://www.PostgreSQL.org/docs/faq-english.html</A>
日本語版のこの文書は 本家 "User's Lounge" の "Collection of FAQs" の 日本語版のこの文書は 本家 "User's Lounge" の "Collection of FAQs" の
"Japanese" という見出しのところにあります。また、以下のサイトにも "Japanese" という見出しのところにあります。また、以下のサイトにも
あります。 あります。
<A HREF="http://www.postgresql.jp/subcommittee/jpugdoc/">http://www.postgresql.jp/subcommittee/jpugdoc/</A> <A HREF="http://www.PostgreSQL.jp/subcommittee/jpugdoc/">http://www.PostgreSQL.jp/subcommittee/jpugdoc/</A>
<A HREF="http://www.rccm.co.jp/~juk/pgsql/">http://www.rccm.co.jp/~juk/pgsql/</A> <A HREF="http://www.rccm.co.jp/~juk/pgsql/">http://www.rccm.co.jp/~juk/pgsql/</A>
<A HREF="http://www.linux.or.jp/JF/">http://www.linux.or.jp/JF/</A> <A HREF="http://www.linux.or.jp/JF/">http://www.linux.or.jp/JF/</A>
この和訳についてお気づきの点は(<A HREF="mailto:juk@postgresql.jp">juk@postgresql.jp</A>)までメールでお寄せ下さい。 この和訳についてお気づきの点は(<A HREF="mailto:juk@PostgreSQL.jp">juk@PostgreSQL.jp</A>)までメールでお寄せ下さい。
2002年08月25日 桑村 潤 2002年10月16日 桑村 潤
] ]
</PRE></small> </PRE></SMALL>
<P> <P>
<HR> <HR>
<P> <P>
<H2><CENTER> 一般的な質問</CENTER></H2> <H2 align="center">一般的な質問</H2>
<A HREF="#1.1">1.1</A>) PostgreSQLとは何ですか? 何と読みますか?<BR> <A HREF="#1.1">1.1</A>) PostgreSQLとは何ですか? 何と読みますか?<BR>
<A HREF="#1.2">1.2</A>) PostgreSQLの著作権はどうなってますか?<BR> <A HREF="#1.2">1.2</A>) PostgreSQLの著作権はどうなってますか?<BR>
...@@ -60,24 +60,24 @@ http://www.PostgreSQL.org/docs/faq-english.html</A> ...@@ -60,24 +60,24 @@ http://www.PostgreSQL.org/docs/faq-english.html</A>
<A HREF="#1.7">1.7</A>) 最新版はどれですか<BR> <A HREF="#1.7">1.7</A>) 最新版はどれですか<BR>
<A HREF="#1.8">1.8</A>) どのような文書がありますか?<BR> <A HREF="#1.8">1.8</A>) どのような文書がありますか?<BR>
<A HREF="#1.9">1.9</A>) 既知のバグや未だ無い機能はどうやって見つけますか?<BR> <A HREF="#1.9">1.9</A>) 既知のバグや未だ無い機能はどうやって見つけますか?<BR>
<A HREF="#1.10">1.10</A>) <small>SQL</small>はどうすれば学べますか?<BR> <A HREF="#1.10">1.10</A>) <SMALL>SQL</SMALL>はどうすれば学べますか?<BR>
<A HREF="#1.11">1.11</A>) PostgreSQLは西暦2000年問題(Y2K)に対応していますか?<BR> <A HREF="#1.11">1.11</A>) PostgreSQLは西暦2000年問題(Y2K)に対応していますか?<BR>
<A HREF="#1.12">1.12</A>) 開発チームにはどのように参加しますか?<BR> <A HREF="#1.12">1.12</A>) 開発チームにはどのように参加しますか?<BR>
<A HREF="#1.13">1.13</A>) バグレポートはどのように発信しますか?<BR> <A HREF="#1.13">1.13</A>) バグレポートはどのように発信しますか?<BR>
<A HREF="#1.14">1.14</A>) 他の<small>DBMS</small>のと比べてPostgreSQLはどうなのですか?<BR> <A HREF="#1.14">1.14</A>) 他の<SMALL>DBMS</SMALL>のと比べてPostgreSQLはどうなのですか?<BR>
<A HREF="#1.15">1.15</A>) PostgreSQLを資金面で援助するにはどうすればよいですか?<BR> <A HREF="#1.15">1.15</A>) PostgreSQLを資金面で援助するにはどうすればよいですか?<BR>
<H2><CENTER>ユーザー・クライアントの質問</CENTER></H2> <H2 align="center">ユーザー・クライアントの質問</H2>
<A HREF="#2.1">2.1</A>) PostgreSQL の <small>ODBC</small> ドライバーはありますか?<BR> <A HREF="#2.1">2.1</A>) PostgreSQL の <SMALL>ODBC</SMALL> ドライバーはありますか?<BR>
<A HREF="#2.2">2.2</A>) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?<BR> <A HREF="#2.2">2.2</A>) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?<BR>
<A HREF="#2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェースはありますか? <A HREF="#2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?
レポートジェネレータや埋め込み問い合わせ言語インターフェースはありますか?<BR> レポートジェネレータや埋め込み問い合わせ言語インターフェースはありますか?<BR>
<A HREF="#2.4">2.4</A>) PostgreSQL と通信するにはどんな言語が使えますか?<BR> <A HREF="#2.4">2.4</A>) どのような言語で PostgreSQL と通信できすか?<BR>
<H2><CENTER>管理上の質問</CENTER></H2> <H2 align="center">管理上の質問</H2>
<A HREF="#3.1">3.1</A>) どのようにすれば <I>/usr/local/pgsql</I> 以外の場所にインストールできますか?<BR> <A HREF="#3.1">3.1</A>) どのようにすれば <I>/usr/local/pgsql</I> 以外の場所にインストールできますか?<BR>
<A HREF="#3.2">3.2</A>) postmaster を走らせると、 <A HREF="#3.2">3.2</A>) postmaster を走らせると、
...@@ -90,15 +90,15 @@ http://www.PostgreSQL.org/docs/faq-english.html</A> ...@@ -90,15 +90,15 @@ http://www.PostgreSQL.org/docs/faq-english.html</A>
<A HREF="#3.6">3.6</A>) より良い性能を得るためには、データベース・エンジンをどのように調整すれば良いですか?<BR> <A HREF="#3.6">3.6</A>) より良い性能を得るためには、データベース・エンジンをどのように調整すれば良いですか?<BR>
<A HREF="#3.7">3.7</A>) どのようなデバグ機能が使えますか?<BR> <A HREF="#3.7">3.7</A>) どのようなデバグ機能が使えますか?<BR>
<A HREF="#3.8">3.8</A>) 接続しようとするときに <I>'Sorry, too many clients'</I> が出るのはなぜですか?<BR> <A HREF="#3.8">3.8</A>) 接続しようとするときに <I>'Sorry, too many clients'</I> が出るのはなぜですか?<BR>
<A HREF="#3.9">3.9</A>) 自分のデータベース・ディレクトリにある <I>pg_sorttemp.XXX</I> ファイルは何ですか?<BR> <A HREF="#3.9">3.9</A>) <I>pgsql_tmp</I> ディレクトリの中には何がありますか?<BR>
<A href="#3.10">3.10</A>) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしなくてはならないのはなぜですか?<br> <A href="#3.10">3.10</A>) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしなくてはならないのはなぜですか?<br>
<H2><CENTER>操作上の質問</CENTER></H2> <H2 align="center">操作上の質問</H2>
<A HREF="#4.1">4.1</A>) バイナリ・カーソルと通常カーソルとの違いは何ですか?<BR> <A HREF="#4.1">4.1</A>) バイナリ・カーソルと通常カーソルとの違いは何ですか?<BR>
<A HREF="#4.2">4.2</A>) 最初の数ロウのみを <small>select</small> するにはどうしますか?<BR> <A HREF="#4.2">4.2</A>) 最初の数ロウのみを <SMALL>select</SMALL> するにはどうしますか?<BR>
<A HREF="#4.3">4.3</A>) テーブルやその他の情報のリストを <I>psql</I> で見るにはどうしますか?<BR> <A HREF="#4.3">4.3</A>) テーブルやその他の情報のリストを <I>psql</I> で見るにはどうしますか?<BR>
<A HREF="#4.4">4.4</A>) テーブルからカラムの削除はどのようにしますか?<BR> <A HREF="#4.4">4.4</A>) テーブルからカラムの削除はどのようにしますか?<BR>
<A HREF="#4.5">4.5</A>) ロウ、テーブル、データベースの最大サイズは?<BR> <A HREF="#4.5">4.5</A>) ロウ、テーブル、データベースの最大サイズは?<BR>
...@@ -109,25 +109,27 @@ http://www.PostgreSQL.org/docs/faq-english.html</A> ...@@ -109,25 +109,27 @@ http://www.PostgreSQL.org/docs/faq-english.html</A>
<A HREF="#4.10">4.10</A>) R-tree インデックスとは何ですか?<BR> <A HREF="#4.10">4.10</A>) R-tree インデックスとは何ですか?<BR>
<A HREF="#4.11">4.11</A>) 遺伝的問い合わせ最適化とは何ですか?<BR> <A HREF="#4.11">4.11</A>) 遺伝的問い合わせ最適化とは何ですか?<BR>
<A HREF="#4.12">4.12</A>) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのように使いますか?<BR> <A HREF="#4.12">4.12</A>) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのように使いますか?<BR>
<A HREF="#4.13">4.13</A>) 問い合わせの中で、フィールドが <small>NULL</small> であることを検出するにはどうしますか?<BR> <A HREF="#4.13">4.13</A>) 問い合わせの中で、フィールドが <SMALL>NULL</SMALL> であることを検出するにはどうしますか?<BR>
<A HREF="#4.14">4.14</A>) 色々な文字型のそれぞれの違いは何ですか?<BR> <A HREF="#4.14">4.14</A>) 色々な文字型のそれぞれの違いは何ですか?<BR>
<A HREF="#4.15.1">4.15.1</A>) 通番(serial)/自動増分フィールドはどのようにつくりますか?<BR> <A HREF="#4.15.1">4.15.1</A>) 通番(serial)/自動増分フィールドはどのようにつくりますか?<BR>
<A HREF="#4.15.2">4.15.2</A>) <small>SERIAL</small>データ型に挿入される値は、どうすれば得られますか?<BR> <A HREF="#4.15.2">4.15.2</A>) <SMALL>SERIAL</SMALL>データ型に挿入される値は、どうすれば得られますか?<BR>
<A HREF="#4.15.3">4.15.3</A>) 他のユーザとの競合状態を避けるためには、<I>currval()</I><I>nextval()</I> は使わないほうがよいのでしょうか?<BR> <A HREF="#4.15.3">4.15.3</A>) 他のユーザとの競合状態を避けるためには、<I>currval()</I><I>nextval()</I> は使わないほうがよいのでしょうか?<BR>
<A HREF="#4.15.4">4.15.4</A>) トランザクションが中断したときにもういちどシーケンス番号が使われないのはなぜですか?シーケンス/SERIALカラムに空きがあるのはなぜですか?<BR> <A HREF="#4.15.4">4.15.4</A>) トランザクションが中断したときにもういちどシーケンス番号が使われないのはなぜですか?シーケンス/SERIALカラムに空きがあるのはなぜですか?<BR>
<A HREF="#4.15">4.16</A>) <small>OID</small> とは何ですか? <small>TID</small> とは何ですか?<BR> <A HREF="#4.15">4.16</A>) <SMALL>OID</SMALL> とは何ですか? <SMALL>TID</SMALL> とは何ですか?<BR>
<A HREF="#4.17">4.17</A>) PostgreSQL で使われるいくつかの用語の意味は何ですか?<BR> <A HREF="#4.17">4.17</A>) PostgreSQL で使われるいくつかの用語の意味は何ですか?<BR>
<A HREF="#4.18">4.18</A>) エラーメッセージ <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>が出るのはなぜですか?<BR> <A HREF="#4.18">4.18</A>) エラーメッセージ <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>が出るのはなぜですか?<BR>
<A HREF="#4.19">4.19</A>) どのバージョンの PostgreSQL を走らせているのかを調べるにはどうしますか?<BR> <A HREF="#4.19">4.19</A>) どのバージョンの PostgreSQL を走らせているのかを調べるにはどうしますか?<BR>
<A HREF="#4.20">4.20</A>) ラージオブジェクトの操作で、<I>invalid large obj descriptor</I>と出るのはなぜですか?<BR> <A HREF="#4.20">4.20</A>) ラージオブジェクトの操作で、<I>invalid large obj descriptor</I>と出るのはなぜですか?<BR>
<A HREF="#4.21">4.21</A>) 現在の時刻がデフォルトとなるようなカラムはどのようにつくりますか?<BR> <A HREF="#4.21">4.21</A>) 現在の時刻がデフォルトとなるようなカラムはどのようにつくりますか?<BR>
<A HREF="#4.22">4.22</A>) なぜ、<small>IN</small>を使う副問い合わせがとても遅いのですか?<BR> <A HREF="#4.22">4.22</A>) なぜ、<SMALL>IN</SMALL>を使う副問い合わせがとても遅いのですか?<BR>
<A HREF="#4.23">4.23</A>) <i>外部</i>結合(<i>outer</i> join)はどのように実現しますか?<BR> <A HREF="#4.23">4.23</A>) <i>外部</i>結合(<i>outer</i> join)はどのように実現しますか?<BR>
<A HREF="#4.24">4.24</A>) 複数のデータベースを使う問い合わせはどのようにすればできますか?<br> <A HREF="#4.24">4.24</A>) 複数のデータベースを使う問い合わせはどのようにすればできますか?<br>
<A HREF="#4.25">4.25</A>) 関数で複数のロウまたはカラムを返すにはどうしますか?<br> <A HREF="#4.25">4.25</A>) 関数で複数のロウまたはカラムを返すにはどうしますか?<br>
<A HREF="#4.26">4.26</A>) なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することができないのでしょうか?<br> <A HREF="#4.26">4.26</A>) なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することができないのでしょうか?<br>
<A href="#4.27">4.27</A>) どのようなリプリケーションオプションを利用できますか?<BR>
<A href="#4.28">4.28</A>) どのような暗号化オプションを利用できますか?<BR>
<H2><CENTER>PostgreSQLの拡張についての質問</CENTER></H2> <H2 align="center">PostgreSQLの拡張についての質問</H2>
<A HREF="#5.1">5.1</A>) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうのはなぜですか?<BR> <A HREF="#5.1">5.1</A>) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうのはなぜですか?<BR>
<A HREF="#5.2">5.2</A>) PostgreSQL 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクトに貢献したいのですが?<BR> <A HREF="#5.2">5.2</A>) PostgreSQL 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクトに貢献したいのですが?<BR>
...@@ -135,58 +137,55 @@ http://www.PostgreSQL.org/docs/faq-english.html</A> ...@@ -135,58 +137,55 @@ http://www.PostgreSQL.org/docs/faq-english.html</A>
<A HREF="#5.4">5.4</A>) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか?<BR> <A HREF="#5.4">5.4</A>) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか?<BR>
<P> <P>
<HR> <HR>
<H2><CENTER>一般的な質問</CENTER></H2> <H2 align="center">一般的な質問</H2>
<P> <P>
<H4><A NAME="1.1">1.1</A>) PostgreSQL とは何ですか?</H4> <H4><A NAME="1.1">1.1</A>) PostgreSQL とは何ですか? 何と読みますか?</H4>
<P><I>Post-Gres-Q-L.</I>(ポスト - グレス - キュー - エル) と発音します。</P> <P><I>Post-Gres-Q-L.</I>(ポスト - グレス - キュー - エル) と発音します。</P>
<P>PostgreSQL は次世代 <small>DBMS</small> 研究用のプロトタイプであった POSTGRES データベース管理システムの改良版です。PostgreSQL は POSTGRES の強力なデータ・モデルと豊富なデータ・タイプ(型)を保持しながら、POSTGRES で使われた PostQuel 問い合わせ言語を、拡張した <small>SQL</small> のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利用できます。 <P>PostgreSQL は次世代 <SMALL>DBMS</SMALL> 研究用のプロトタイプであった POSTGRES データベース管理システムの改良版です。PostgreSQL は POSTGRES の強力なデータ・モデルと豊富なデータ・タイプ(型)を保持しながら、POSTGRES で使われた PostQuel 問い合わせ言語を、拡張した <SMALL>SQL</SMALL> のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利用できます。
<P>PostgreSQL の開発は、PostgreSQL 開発メーリングリストに参加しているインターネット上の開発者チームですべて行なわれています。現在の座長は Marc G. Fournier ( <A HREF="mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A> )です。(以下に参加の仕方があります。)現在、このチームが PostgreSQL 開発のすべての面倒をみています。 <P>PostgreSQL の開発は、PostgreSQL 開発メーリングリストに参加している開発者達のチームですべて行なわれています。現在の座長は Marc G. Fournier (<A HREF="mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A> )です。(下記の<a href="#1.6">1.6節</a>に参加の仕方があります。)現在、このチームが PostgreSQL 開発のすべての面倒をみています。
<P>Postgres95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen でしたが、その他大勢の人々がこのコードの移植、テスト、デバグ、および、改良に参加しました。PostgreSQL の派生元コードである POSTGRES はカリフォルニア大学バークレイ校において、 Michael Stonebraker 教授の指揮のもと、多くの学生、卒業生、本職のプログラマたちの努力により作られました。 <P>Postgres95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen でしたが、その他大勢の人々がこのコードの移植、テスト、デバグ、および、改良に参加しました。PostgreSQL の派生元コードである POSTGRES はカリフォルニア大学バークレイ校において、 Michael Stonebraker 教授の指揮のもと、多くの学生、卒業生、本職のプログラマたちの努力により作られました。
<P>バークレイにおけるこのソフトウェアのもとの名前は Postgres でしたが、<SMALL>SQL</small> の機能が追加された 1995 年にその名前は Postgres95 に変更され、1996 年の終りにその名前は PostgreSQL に変更されました。 <P>バークレイにおけるこのソフトウェアのもとの名前は Postgres でしたが、<SMALL>SQL</SMALL> の機能が追加された 1995 年にその名前は Postgres95 に変更され、1996 年の終りにその名前は PostgreSQL に変更されました。
<P> <P>
<H4><A NAME="1.2">1.2</A>) PostgreSQL の著作権はどうなってますか?</H4> <H4><A NAME="1.2">1.2</A>) PostgreSQL の著作権はどうなってますか?</H4>
<P> PostgreSQL は下記の著作権に従います。 <P> PostgreSQL は下記の著作権に従います。
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
正文は英語です。参考として、訳文を併記掲載します。 正文は英語です。参考として、訳文を併記掲載します。
] ]
</PRE></small> </PRE></SMALL>
<P>
PostgreSQL Data Base Management System</P>
<P> <P>
PostgreSQL Data Base Management System<P>
Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
Portions Copyright (c) 1994-6 Regents of the University of California<P> Portions Copyright (c) 1994-6 Regents of the University of California</P>
<P>
Permission to use, copy, modify, and distribute this software and its Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written documentation for any purpose, without fee, and without a written
agreement is hereby granted, provided that the above copyright notice agreement is hereby granted, provided that the above copyright notice
and this paragraph and the following two paragraphs appear in all and this paragraph and the following two paragraphs appear in all
copies. copies.</P>
<P> <P>
<STRONG>
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE. THE POSSIBILITY OF SUCH DAMAGE.</P>
<P> <P>
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER
IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO
OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS. MODIFICATIONS.</P>
</STRONG>
<P>
<small><PRE> <SMALL><PRE>
POSTGRESQL データベース管理システム POSTGRESQL データベース管理システム
部分的著作権 (c) 1996-2002, PostgreSQL国際開発チーム 部分的著作権 (c) 1996-2002, PostgreSQL国際開発チーム
...@@ -213,135 +212,124 @@ MODIFICATIONS. ...@@ -213,135 +212,124 @@ MODIFICATIONS.
著作権に関する正文は上記の英語による表記です。日本語訳はあくまで 著作権に関する正文は上記の英語による表記です。日本語訳はあくまで
参考です。 参考です。
] ]
</PRE></small> </PRE></SMALL>
<p>上記はBSDライセンスで古きオープンソースのライセンスです。ソースコード <P>上記はBSDライセンスで古きオープンソースのライセンスです。ソースコード
がどのように使われようとも制限しません。好ましいことなので、我々もそれを がどのように使われようとも制限しません。好ましいことなので、我々もそれを
変えるつもりはありません。</p> 変えるつもりはありません。</P>
<P>
<H4><A NAME="1.3">1.3</A>) PostgreSQL の動作環境は?</H4> <H4><A NAME="1.3">1.3</A>) PostgreSQL の動作環境は?</H4>
<P>著者らは PostgreSQL のコンパイルとテストを次のプラットホーム上で行ないました。(これらのうちのいくつかはコンパイルに gcc が必要です): <P>
<P>一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずです。リリースの時点で実際にテストを行なったことの報告がなされたプラットホームについてはインストール手引書に列挙してあります。 一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずです。リリースの時点で実際にテストを行なったことの報告がなされたプラットホームについてはインストール手引書に列挙してあります。</P>
<P> <P>
<H4><A NAME="1.4">1.4</A>) Unix以外の移植版で使えるものは?</H4> <H4><A NAME="1.4">1.4</A>) Unix以外の移植版で使えるものは?</H4>
<h6> <P><STRONG>クライアント</STRONG></P>
クライアント</h6>
<P> MS Windows プラットホーム上で<I>libpq</I> C ライブラリ、psql、それとその他のインターフェースは コンパイル可能で、バイナリーが走ります。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走るサーバと通信します。 <P> MS Windows プラットホーム上で走せるために、<I>libpq</I> C ライブラリ、psql、その他のインターフェース、および、クライアントアプリケーションをコンパイルすることは可能です。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走るサーバと通信します。</P>
<P> Win32 <I>libpq</I> ライブラリと psql を作るために、<I>win31.mak</I> が配布に含まれてます。PostgreSQLは <small>ODBC</small> クライアントとも通信できます。 <P> Win32 <I>libpq</I> ライブラリと psql を作るために、<I>win32.mak</I> が配布に含まれてます。PostgreSQLは <SMALL>ODBC</SMALL> クライアントとも通信できます。</P>
<h6> <P><STRONG>サーバ</STRONG></P>
サーバ</h6> <P> 現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベースサーバは Windows NT と Win2k 上で稼働しています。配布に含まれる<I>pgsql/doc/FAQ_MSWIN</I>、あるいは、<A href="http://www.PostgreSQL.org/docs/faq-mswin.html">http://www.PostgreSQL.org/docs/faq-mswin.html</A>にある MS Windows FAQ をご覧下さい。</P>
<P> 現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベースサーバは Windows NT と Win2k 上で稼働しています。配布に含まれる<I>pgsql/doc/FAQ_MSWIN</I>あるいはウェブサイトにある MS Windows FAQ をご覧下さい。Microsoft の素のプラットホームに移植する計画はありません。<P> <P>MS Win NT/2000/XP ネイティブ版への移植が現在進行中です。</P>
<br> <BR>
[訳注: [訳注:
<br> <BR>
<h6><font color="orange"> <h6><FONT COLOR="orange">
Win32ネイティーブ版(Win32 Native version) Win32ネイティーブ版(Win32 Native version)
</font></h6> </FONT></H6>
<pre> <PRE>
Windows-Native サーバー & クライアントパッケージが斉藤さんにより Windows-Native サーバー & クライアントパッケージが斉藤さんにより
維持管理されています。 維持管理されています。
<a href="http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html">http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html</a> <A href="http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html">http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html</A>
(Windows-Native Server&Client Package for PostgreSQL by Hiroshi Saito) (Windows-Native Server&Client Package for PostgreSQL by Hiroshi Saito)
<a href="http://hp.vector.co.jp/authors/VA023283/PostgreSQLe.html">http://hp.vector.co.jp/authors/VA023283/PostgreSQLe.html</a> <A href="http://hp.vector.co.jp/authors/VA023283/PostgreSQLe.html">http://hp.vector.co.jp/authors/VA023283/PostgreSQLe.html</A>
</pre> </PRE>
<br> <BR>
] ]
<br> <BR>
<P>
<H4><A NAME="1.5">1.5</A>) PostgreSQL はどこから入手できますか?</H4> <H4><A NAME="1.5">1.5</A>) PostgreSQL はどこから入手できますか?</H4>
<P> PostgreSQL の元の anonymous ftp サイトです:
<UL>
<LI> <A HREF="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A>
</UL>
<P> ミラーサイトについては、我々のメイン Web ページをご覧下さい。 <P> PostgreSQL の大元の anonymous ftp サイトは
<A
href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A>
です。
ミラーサイトについては、我々のメイン Web ページをご覧下さい。</P>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
以下は日本のミラーサイトです: 以下は日本のミラーサイトです:
Japan: <A HREF="ftp://mirror.nucba.ac.jp/mirror/postgresql/pub/">ftp://mirror.nucba.ac.jp/mirror/postgresql/pub/</A> Japan: <A HREF="ftp://mirror.nucba.ac.jp/mirror/PostgreSQL/pub/">ftp://mirror.nucba.ac.jp/mirror/PostgreSQL/pub/</A>
Japan: <A HREF="ftp://ring.ip-kyoto.ad.jp/pub/misc/db/postgresql/">ftp://ring.ip-kyoto.ad.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.ip-kyoto.ad.jp/pub/misc/db/PostgreSQL/">ftp://ring.ip-kyoto.ad.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.crl.go.jp/pub/misc/db/postgresql/">ftp://ring.crl.go.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.crl.go.jp/pub/misc/db/PostgreSQL/">ftp://ring.crl.go.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.saitama-u.ac.jp/pub/misc/db/postgresql/">ftp://ring.saitama-u.ac.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.saitama-u.ac.jp/pub/misc/db/PostgreSQL/">ftp://ring.saitama-u.ac.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.astem.or.jp/pub/misc/db/postgresql/">ftp://ring.astem.or.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.astem.or.jp/pub/misc/db/PostgreSQL/">ftp://ring.astem.or.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.exp.fujixerox.co.jp/pub/misc/db/postgresql/">ftp://ring.exp.fujixerox.co.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.exp.fujixerox.co.jp/pub/misc/db/PostgreSQL/">ftp://ring.exp.fujixerox.co.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.jah.ne.jp/pub/misc/db/postgresql/">ftp://ring.jah.ne.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.jah.ne.jp/pub/misc/db/PostgreSQL/">ftp://ring.jah.ne.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.etl.go.jp.jp/pub/misc/db/postgresql/">ftp://ring.etl.go.jp.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.etl.go.jp.jp/pub/misc/db/PostgreSQL/">ftp://ring.etl.go.jp.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.asahi-net.or.jp/pub/misc/db/postgresql/">ftp://ring.asahi-net.or.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.asahi-net.or.jp/pub/misc/db/PostgreSQL/">ftp://ring.asahi-net.or.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.so-net.ne.jp/pub/misc/db/postgresql/">ftp://ring.so-net.ne.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.so-net.ne.jp/pub/misc/db/PostgreSQL/">ftp://ring.so-net.ne.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.aist.go.jp/pub/misc/db/postgresql/">ftp://ring.aist.go.jp/pub/misc/db/postgresql/</A> Japan: <A HREF="ftp://ring.aist.go.jp/pub/misc/db/PostgreSQL/">ftp://ring.aist.go.jp/pub/misc/db/PostgreSQL/</A>
] ]
</PRE></small> </PRE></SMALL>
<P>
<H4><A NAME="1.6">1.6</A>) サポートはどこで受けられますか?</H4> <H4><A NAME="1.6">1.6</A>) サポートはどこで受けられますか?</H4>
<P> 主要なメーリング・リストは: <A HREF="mailto:pgsql-general@PostgreSQL.org">pgsql-general@PostgreSQL.org</A>です。PostgreSQL に関することであれば議論ができます。このリストへの参加のは、電子メールの本文(Subject 行ではありません)に次の2行を書いて、 <P>主要なメーリング・リストは: <A HREF="mailto:pgsql-general@PostgreSQL.org">pgsql-general@PostgreSQL.org</A>です。PostgreSQL に関することであれば議論ができます。このリストへの参加のは、電子メールの本文(Subject 行ではありません)に次の2行を書いて、</P>
<PRE> <PRE>
subscribe subscribe
end end
</PRE> </PRE>
<P> <A HREF="mailto:pgsql-general-request@PostgreSQL.org">pgsql-general-request@PostgreSQL.org</A> へ送って下さい。 <P> <A HREF="mailto:pgsql-general-request@PostgreSQL.org">pgsql-general-request@PostgreSQL.org</A> へ送って下さい。</P>
<P> ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"に:
<P> ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"に:</P>
<PRE> <PRE>
subscribe subscribe
end end
</PRE> </PRE>
と書いて <A HREF="mailto:pgsql-general-digest-request@PostgreSQL.org"> pgsql-general-digest-request@PostgreSQL.org</A> へ電子メールを送って下さい。 と書いて <A HREF="mailto:pgsql-general-digest-request@PostgreSQL.org"> pgsql-general-digest-request@PostgreSQL.org</A> へ電子メールを送って下さい。</P>
<P> ダイジェスト版は、メインリストで受信するメッセージが 30k 程度溜る毎にダイジェスト版リストのメンバーに送付されます。 <P> ダイジェスト版は、メインリストで受信するメッセージが 30k 程度溜る毎にダイジェスト版リストのメンバーに送付されます。</P>
<P> バグレポート用のメーリングリストもあります。このリストへの参加は "本文"といっしょに: <P> バグレポート用のメーリングリストもあります。このリストへの参加は "本文"といっしょに:
<A <A
HREF="mailto:bugs-request@PostgreSQL.org">bugs-request@PostgreSQL.org</A> HREF="mailto:bugs-request@PostgreSQL.org">bugs-request@PostgreSQL.org</A>
へ電子メールを送って下さい。 へ電子メールを送って下さい。</P>
<P> 開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メールの本文に: <P> 開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メールの本文に:
<P>
<PRE> <PRE>
subscribe subscribe
end end
</PRE> </PRE>
<P> と書いて、<A HREF="mailto:pgsql-hackers-request@PostgreSQL.org">pgsql-hackers-request@PostgreSQL.org</A>へ電子メールを送って下さい。 と書いて、<A HREF="mailto:pgsql-hackers-request@PostgreSQL.org">pgsql-hackers-request@PostgreSQL.org</A>へ電子メールを送って下さい。</P>
<P> PostgreSQL についてもっと詳しく知りたければ、次の postgreSQL WWWホームページからたどれます:
<P PostgreSQL についてもっと詳しく知りたければ、次の PostgreSQL WWWホームページからたどれます:
<BLOCKQUOTE> <BLOCKQUOTE>
<A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A> <A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
</BLOCKQUOTE> </BLOCKQUOTE>
</P>
<P>EFNet に <I>#PostgreSQL</I> という IRC チャンネルもあります。
UNIX コマンドで<tt>irc -c '#PostgreSQL' "$USER" <A HREF="http://irc.phoenix.net">irc.phoenix.net</A> を使います。</P>
<P> <P>
<SMALL><PRE>
EFNet に <I>#PostgreSQL</I> という IRC チャンネルもあります。
UNIX コマンドで<tt>irc -c '#PostgreSQL' "$USER" <A HREF="http://irc.phoenix.net">irc.phoenix.net</A> を使います。<P>
<small><PRE>
[訳注: [訳注:
1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。 1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。
JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場です。 JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場です。
正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営を助けています。 正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営を助けています。
詳しくは、JPUG のWeb サイト: 詳しくは、JPUG のWeb サイト:
<A HREF="http://www.postgresql.jp/">http://www.postgresql.jp/</A> <A HREF="http://www.PostgreSQL.jp/">http://www.PostgreSQL.jp/</A>
をご覧ください。会員登録も可能となっています。 をご覧ください。会員登録も可能となっています。
1990年代中ごろより、ポストグレスの日本語メーリング・リストを石井 達夫さんが主催しています。詳細は、 1990年代中ごろより、ポストグレスの日本語メーリング・リストを石井 達夫さんが主催しています。詳細は、
<A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html">http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html</A> <A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html">http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html</A>
...@@ -349,93 +337,97 @@ UNIX ...@@ -349,93 +337,97 @@ UNIX
<A HREF="http://datula.mio.org/~iwakiri/pgsql_jp/">http://datula.mio.org/~iwakiri/pgsql_jp/</A> <A HREF="http://datula.mio.org/~iwakiri/pgsql_jp/">http://datula.mio.org/~iwakiri/pgsql_jp/</A>
で検索することもできます。 で検索することもできます。
] ]
</PRE></small> </PRE></SMALL>
<P>商用サポート会社のリストは<a href="http://www.postgresql.org/users-lounge/commercial-support.html">http://www.postgresql.org/users-lounge/commercial-support.html</a>にあります。 <P>商用サポート会社のリストは<a href="http://www.PostgreSQL.org/users-lounge/commercial-support.html">http://www.PostgreSQL.org/users-lounge/commercial-support.html</a>にあります。</P>
<P>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
日本では、<A HREF="http://osb.sra.co.jp/">SRA Inc. オープンシステム事業部</A> にて商用サポートが行なわれています。 日本では、<A HREF="http://osb.sra.co.jp/">SRA Inc. オープンシステム事業部</A> にて商用サポートが行なわれています。
<A HREF="http://www.miraclelinux.co.jp/">ミラクル・リナックス株式会社</A> で "Miracle Linux for PostgreSQL" の販売とサポートが <A HREF="http://www.miraclelinux.co.jp/">ミラクル・リナックス株式会社</A> で "Miracle Linux for PostgreSQL" の販売とサポートが
開始されました。 開始されました。
] ]
</PRE></small> </PRE></SMALL>
</P>
<P>
<H4><A NAME="1.7">1.7</A>) 最新版はどれですか</H4> <H4><A NAME="1.7">1.7</A>) 最新版はどれですか</H4>
<P> PostgreSQL の最新版はバージョン 7.2.2 です。
<P> <P>
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。 PostgreSQL の最新版はバージョン 7.2.3 です。</P>
<P> <P>
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。</P>
<H4><A NAME="1.8">1.8</A>) どのような文書がありますか?</H4> <H4><A NAME="1.8">1.8</A>) どのような文書がありますか?</H4>
<P> 配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)およびいくつかの小さなテスト例題が含まれます。<I>/doc</I> ディレクトリをご覧下さい。また、マニュアルは、<A <P> 配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)およびいくつかの小さなテスト例題が含まれます。<I>/doc</I> ディレクトリをご覧下さい。また、マニュアルは、<A
HREF="http://www.PostgreSQL.org/users-lounge/docs/"> HREF="http://www.PostgreSQL.org/users-lounge/docs/">
http://www.PostgreSQL.org/users-lounge/docs/</A> http://www.PostgreSQL.org/users-lounge/docs/</A>
でオンラインでも閲覧できます。 でオンラインでも閲覧できます。</P>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
(株)SRAと日本ポストグレスユーザー会で翻訳され、 (株)SRAと日本ポストグレスユーザー会で翻訳され、
<A HREF="http://osb.sra.co.jp/PostgreSQL/Manual/">「PostgreSQL オフィシャルマニュアル」</A> <A HREF="http://osb.sra.co.jp/PostgreSQL/Manual/">「PostgreSQL オフィシャルマニュアル」</A>
として出版されています。 として出版されています。
] ]
</PRE></small> </PRE></SMALL>
<P> オンラインで参照できる PostgreSQL の本も2冊あります。<A href= <P>オンラインで参照できる PostgreSQL の本も2冊あります。<A href=
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A> "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
日本ポストグレスユーザー会の<A HREF="http://www.postgresql.jp/subcommittee/psqltrans/"> 「PostgreSQL Book翻訳分科会」</A> 日本ポストグレスユーザー会の<A HREF="http://www.PostgreSQL.jp/subcommittee/psqltrans/"> 「PostgreSQL Book翻訳分科会」</A>
にて翻訳されました。 にて翻訳されました。
] ]
</PRE></small> </PRE></SMALL>
および、 <A href= および、 <A href=
"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A> "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>
です。 です。
購入可能な書籍の目録は、<A href= 購入可能な書籍の目録は、<A href=
"http://www.postgresql.org/books/">http://www.postgresql.org/books/</A> "http://www.jp.PostgreSQL.org/books/">http://www.jp.PostgreSQL.org/books/</A>
にあります。 にあります。
PostgreSQL 技術情報記事も、<A href= PostgreSQL 技術情報記事も、<A href=
"http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A> "http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>
にあります。</P> にあります。</P>
<P>
[訳注:
和訳文書は、日本ポストグレスユーザー会の<A
HREF="http://www.postgresql.jp/document/">http://www.postgresql.jp/document/</A>
をごらん下さい。
]
</P>
<P> <I>psql</I> も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴らしい \d コマンドを持ちます。</P>
<P> <I>psql</I> も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴らしい \d コマンドを持ちます。 <P> 我々の Web サイトには、もっと沢山の文書があります。</P>
<P> 我々の Web サイトには、もっと沢山の文書があります。
<P>
<H4><A NAME="1.9">1.9</A>) 既知のバグや未だ無い機能はどうやって見つけますか? <H4><A NAME="1.9">1.9</A>) 既知のバグや未だ無い機能はどうやって見つけますか?
</H4><P> </H4>
<P>
PostgreSQLは拡張されたSQL-92のサブセットをサポートします。 PostgreSQLは拡張された<SMALL>SQL</SMALL>-92のサブセットをサポートします。
我々のページの 我々のページの
<A HREF="http://www.PostgreSQL.org/docs/todo.html"> <A HREF="http://www.PostgreSQL.org/docs/todo.html">TODO</A>
TODO</A> リストに、既知のバグや欠落機能や将来計画についての記述があります。 リストに、既知のバグや欠落機能や将来計画についての記述があります。</P>
<P> <H3><A NAME="1.10">1.10</A>) <SMALL>SQL</SMALL> はどうすれば学べますか?</H3>
<H3><A NAME="1.10">1.10</A>) <small>SQL</small> はどうすれば学べますか?</H3>
<P> <P>
<A HREF="http://www.PostgreSQL.org/docs/awbook.html"> <A HREF="http://www.PostgreSQL.org/docs/awbook.html">
http://www.PostgreSQL.org/docs/awbook.html</A> http://www.PostgreSQL.org/docs/awbook.html</A>
にあるPostgreSQL本で <small>SQL</small> を教えています。 にあるPostgreSQL本で <SMALL>SQL</SMALL> を教えています。
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
日本ポストグレスユーザー会の<A HREF="http://www.postgresql.jp/subcommittee/psqltrans/"> 「PostgreSQL Book翻訳分科会」</A> 日本ポストグレスユーザー会の<A HREF="http://www.PostgreSQL.jp/subcommittee/psqltrans/"> 「PostgreSQL Book翻訳分科会」</A>
にて翻訳され出版されています。 にて翻訳され出版されています。
] ]
</PRE></small> </PRE></SMALL>
</P>
<P> <P>
その他にも PostgreSQL本として、<A href= その他にも PostgreSQL本として、<A href=
...@@ -451,7 +443,6 @@ http://www.PostgreSQL.org/docs/awbook.html</A> ...@@ -451,7 +443,6 @@ http://www.PostgreSQL.org/docs/awbook.html</A>
"http://sqlcourse.com/">http://sqlcourse.com</A> "http://sqlcourse.com/">http://sqlcourse.com</A>
にあります。</P> にあります。</P>
<P>その他では、 "Teach Yourself SQL in 21 Days, Second Edition" が <A href= <P>その他では、 "Teach Yourself SQL in 21 Days, Second Edition" が <A href=
"http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A>にあります。</P> "http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A>にあります。</P>
...@@ -464,7 +455,7 @@ http://www.PostgreSQL.org/docs/awbook.html</A> ...@@ -464,7 +455,7 @@ http://www.PostgreSQL.org/docs/awbook.html</A>
</P> </P>
<P> <P>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
石井達夫氏による日本語の参考文献の紹介ページ 石井達夫氏による日本語の参考文献の紹介ページ
<A HREF="http://www.SRA.co.jp/people/t-ishii/PostgreSQL/doc-jp/index.html">http://www.SRA.co.jp/people/t-ishii/PostgreSQL/doc-jp/index.html</A> <A HREF="http://www.SRA.co.jp/people/t-ishii/PostgreSQL/doc-jp/index.html">http://www.SRA.co.jp/people/t-ishii/PostgreSQL/doc-jp/index.html</A>
...@@ -479,162 +470,115 @@ http://www.PostgreSQL.org/docs/awbook.html</A> ...@@ -479,162 +470,115 @@ http://www.PostgreSQL.org/docs/awbook.html</A>
<A HREF="http://www.wakhok.ac.jp/DB/DB.html">http://www.wakhok.ac.jp/DB/DB.html</A> <A HREF="http://www.wakhok.ac.jp/DB/DB.html">http://www.wakhok.ac.jp/DB/DB.html</A>
もオンラインで読むことができます。 もオンラインで読むことができます。
] ]
</PRE></small> </PRE></SMALL>
</P>
<H4><A NAME="1.11">1.11</A>) PostgreSQLは西暦2000年問題(Y2K)に対応していますか? <H4><A NAME="1.11">1.11</A>) PostgreSQLは西暦2000年問題(Y2K)に対応していますか?
</H4><P> </H4>
対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡単に扱えます。
<P> <P>
<H4><A NAME="1.12">1.12</A>) 開発チームにはどのように参加しますか?<BR> 対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡単に扱えます。</P>
</H4><P>
まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に含まれている <H4><A NAME="1.12">1.12</A>) 開発チームにはどのように参加しますか?<BR>
PostgreSQL Developersの文書を読みます。 </H4>
<P>
まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に含まれているPostgreSQL Developersの文書を読みます。
2番目に、<I>pgsql-hackers</I><I>pgsql-patches</I> メーリング・リストを購読(subscribe)します。 2番目に、<I>pgsql-hackers</I><I>pgsql-patches</I> メーリング・リストを購読(subscribe)します。
3番目に、高品質のパッチをpgsql-patchesに発信します。 3番目に、高品質のパッチをpgsql-patchesに発信します。</P>
およそ十人ちょっとの人達が、PostgreSQL <small>CVS</small>アーカイブにコミットする権限を持っています。
そのそれぞれの人達が沢山の高品質なパッチを発信するので、現在コミッターとなっている人達はそれに追い付くのが大変ですが、我々は彼らがコミットしたパッチは高品質であると確信しています。
<P> <P>
およそ十人ちょっとの人達が、PostgreSQL <SMALL>CVS</SMALL>アーカイブにコミットする権限を持っています。
そのそれぞれの人達が沢山の高品質なパッチを発信するので、現在コミッターとなっている人達はそれに追い付くのが大変ですが、我々は彼らがコミットしたパッチは高品質であると確信しています。</P>
<H4><A NAME="1.13">1.13</A>) バグレポートはどのように発信しますか? <H4><A NAME="1.13">1.13</A>) バグレポートはどのように発信しますか?
</H4> </H4>
<P>バグを報告する仕方についてのガイドラインと方向づけがある<A href= <P><A
"http://www.postgresql.org/bugs/bugs.php">PostgreSQL BugTool</A> href="http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>PostgreSQL BugTool (バグツール)のページを訪れてみて下さい。 バグレポートを提出する仕方についての手引と指針があります。</P>
(バグツール)のページを訪れてみて下さい。 </P>
<P> その前に <A HREF="http://postgreSQL.org">http://postgreSQL.org</A>にある最新の FAQ をチェックして下さい。 <P> その前に <A HREF="http://PostgreSQL.org">http://PostgreSQL.org</A>にある最新の FAQ をチェックして下さい。</P>
<P> それと同時に ftp サイト <A HREF="ftp://ftp.postgreSQL.org/pub/">ftp://ftp.postgreSQL.org/pub/</A>で、もっと新しいバージョンの PostgreSQL あるいはパッチをさがしてみて下さい。 <P> それと同時に ftp サイト <A HREF="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A>で、もっと新しいバージョンの PostgreSQL あるいはパッチをさがしてみて下さい。</P>
<P> <H4><A NAME="1.14">1.14</A>) 他の<SMALL>DBMS</SMALL>のと比べてPostgreSQLはどうなのですか?
<H4><A NAME="1.14">1.14</A>) 他の<small>DBMS</small>のと比べてPostgreSQLはどうなのですか? </H4>
</H4><P>
ソフトウェアを計る方法にはいくつかあります。機能と性能と信頼性とサポートと価格です。 <P>
ソフトウェアを計る方法にはいくつかあります。機能と性能と信頼性とサポートと価格です。</P>
<DL> <DL>
<DT> <B>機能(Features)</B> <DT> <B>機能(Features)</B></DT>
<DD> <DD>
PostgreSQLは、トランザクション、副問い合わせ、トリガー、ビュー、外部キー PostgreSQLは、トランザクション、副問い合わせ、トリガー、ビュー、外部キー整合性参照、および、洗練されたロック機構など、大規模商用<SMALL>DBMS</SMALL>が持つ機能をほとんど持っています。さらに PostgreSQLは、ユーザ定義型、継承、ルール、それから、ロック競合を縮小するマルチバージョン同時性制御など、商用<SMALL>DBMS</SMALL>も持ち合わせないような機能をいくつか持ち合わせています。<BR>
整合性参照、および、洗練されたロック機構など、大規模商用<small> </DD>
DBMS</small>が持つ機能をほとんど持っています。さらに PostgreSQLは、ユーザ
定義型、継承、ルール、それから、ロック競合を縮小するマルチバージョン同時 <DT> <B>性能(Performance)</B></DT>
性制御など、商用<small>DBMS</small>も持ち合わせないような機能をい <DD>
くつか持ち合わせています。<BR> PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ちます。ある面ではより早かったり、ほかの面ではより遅かったりします。MySQLなどの特化型データベース・システムにくらべて、PostgreSQLの挿入/更新が遅いのは、トランザクションによるオーバーヘッドがあるからです。もちろん、MySQLには上記の<I>Features</I>の節に示すような機能はまったくありません。我々は、PostgreSQLに柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛けたりソースコードを解析したりして、性能の改善を続けています。PostgreSQL と MySQL とを比較している面白い Web ページが<A href="http://openacs.org/why-not-mysql.html">http://openacs.org/why-not-mysql.html</A>にあります。
<BR> <BR>
PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有します。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせることができます。<BR>
<DT> <B>性能(Performance)</B> </DD>
<DD>
<DT> <B>信頼性(Reliability)</B></DT>
PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ちます。ある面ではより早かったり、ほかの面ではより遅かったりします。 <DD>
MySQLなどの特化型データベース・システムにくらべて、PostgreSQLの挿入/ 我々は、<SMALL>DBMS</SMALL>の信頼性が高くなくてはその価値が無いことを理解してます。十分テストして、安定したコードをバグを最小にしてからリリースするように勤めてます。それぞれのリリースは少なくとも1カ月以上のベータ・テストを行ない、これまでのリリースの履歴が、製品版として安定した堅固なリリースであることを物語っています。この分野では、他のデータベースと比べても遜色がないことに自信を持っています。<BR>
更新が遅いのは、トランザクションによるオーバーヘッドがあるからです。 </DD>
もちろん、MySQLには上記の<I>Features</I>の節に示すような機能はまったくあ
りません。我々は、PostgreSQLに柔軟性と機能性を組み込みながらも、絶えず、 <DT> <B>サポート(Support)</B></DT>
プロファイラーに掛けたりソースコードを解析したりして、性能の改善を続け <DD>
ています。PostgreSQL と MySQL とを比較している面白い Web ページが 我々のメーリングリストは、遭遇するいかなる問題についても解決への手助けをしてくれる、開発者やユーザの大きな集まりへの接点を提供しています。我々は問題の解決を保証することはできませんが、商用データベースであっても常に解決されるわけではありません。開発者や、ユーザ・コミュニティ、マニュアル類、それに、ソースコードなどへ直接アクセスできることよって、PostgreSQLのサポートは、他の<SMALL>DBMS</SMALL>サポートよりも優れたものとなっています。御要望に答えて、事柄毎の商用サポートなどもあります(<A href="#1.6">FAQ1.6節</A>をご覧下さい)。<BR>
<a href="http://openacs.org/why-not-mysql.html"> </DD>
http://openacs.org/why-not-mysql.html</a>
にあります。 <DT> <B>価格(Price)</B></DT>
<BR><BR> <DD>
PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあるBSDスタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで商品に組み込むことができます。<BR>
PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。 </DD>
複数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを
共有します。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走
らせることができます。<BR><BR>
<DT> <B>信頼性(Reliability)</B>
<DD>
我々は、<small>DBMS</small>の信頼性が高くなくてはその価値が無いことを理解してます。十
分テストして、安定したコードをバグを最小にしてからリリースするように勤
めてます。それぞれのリリースは少なくとも1カ月以上のベータ・テストを行
ない、これまでのリリースの履歴が、製品版として安定した堅固なリリースで
あることを物語っています。この分野では、他のデータベースと比べても遜色
がないことに自信を持っています。
<DT> <B>サポート(Support)</B>
<DD>
我々のメーリングリストは、遭遇するいかなる問題についても解決への手
助けをしてくれる、開発者やユーザの大きな集まりを提供しています。我々は
問題の解決を保証することはできませんが、商用データベースであっても常に
解決されるわけではありません。開発者や、ユーザ・コミュニティ、マニュア
ル類、それに、ソースコードなどへ直接アクセスできることよって、
PostgreSQLのサポートは、他の<small>DBMS</small>サポートよりも優れたものとなっています。
御要望に答えて、事柄毎の商用サポートなどもあります(サポートFAQ項目をご覧
下さい)。
<DT> <B>価格(Price)</B>
<DD>
PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあ
るBSDスタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで
商品に組み込むことができます。
<BR><BR>
</DL> </DL>
<P>
<H4><A name="1.15">1.15</A>) PostgreSQLを資金面で援助するにはどうすればよいですか? <H4><A name="1.15">1.15</A>) PostgreSQLを資金面で援助するにはどうすればよいですか?
</H4> </H4>
<P>PostgreSQLは、我々が6年前に始めたとき以来、最高クラスの基盤を <P>PostgreSQLは、我々が始めた 1996年以来、最高クラスの情報基盤を持っています。これはすべて、Marc Fournieさんのおかげで、彼はこの基盤を何年にもわたって創造し管理してきました。</P>
持っています。これはすべて、Marc Fournieさんのおかげで、彼はこの基盤
を何年にもわたって創造し管理してきました。</P>
<P>質の良い基盤はオープンソース・プロジェクトにとってはとても大切な <P>質の良い基盤はオープンソース・プロジェクトにとってはとても大切なもので、前進する勢いを失うプロジェクトの分裂を回避します。</P>
もので、前進する勢いを失うプロジェクトの分裂を回避します。
</P>
<P>もちろん、この基盤は安いものではありません。維持し続けるためには <P>もちろん、この基盤は安いものではありません。維持し続けるためには毎月あるいは一時の経費がかかります。もし、あなたやあなたの会社に、こうした努力のための資金を助けるために施すことができるようでしたら、<A
毎月あるいは一時の経費がかかります。もし、あなたやあなたの会社に、こうし href="https://store.pgsql.com/shopping/">https://store.pgsql.com/shopping/</A>から寄付をお願いします。
た努力のための資金を助けるために施すことができるようでしたら、<A
href=
"https://store.pgsql.com/shopping/index.php?id=1">
https://store.pgsql.com/shopping/index.php?id=1</A>
から寄付をお願いします。
<P>また、Webページには PostgreSQL,Inc とありますが、そこの"義援 <P>また、Webページには PostgreSQL,Inc とありますが、そこの"義援(contributions)"アイテムは PostgreSQL プロジェクトをサポートするためだけのためで、決して特定の会社のための資金のためではありません。もし、手形(check)の方が都合がよければ連絡先の住所へお送り下さい。</P>
(contributions)"アイテムは PostgreSQL プロジェクトをサポートするためだけ
のためで、決して特定の会社のための資金のためではありません。もし、手形
(check)の方が都合がよければ連絡先の住所へお送り下さい。</P>
<P>
<HR> <HR>
<H2><CENTER>ユーザー・クライアントの質問</CENTER></H2>
<H2 align="center">ユーザー・クライアントの質問</H2>
<P> <P>
<H4><A NAME="2.1">2.1</A>) PostgreSQL のための <small>ODBC</small> ドライバーはありますか? <H4><A NAME="2.1">2.1</A>) PostgreSQL のための <SMALL>ODBC</SMALL> ドライバーはありますか?
</H4> </H4>
<P> PsqlODBC と OpenLink <small>ODBC</small> の二つの <small>ODBC</small> ドライバーが利用可能です。 <P> PsqlODBC と OpenLink <SMALL>ODBC</SMALL> の二つの <SMALL>ODBC</SMALL> ドライバーが利用可能です。
<P> PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情報は <P> PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情報は
<A HREF="ftp://ftp.PostgreSQL.org/pub/odbc/">ftp://ftp.PostgreSQL.org/pub/odbc/</A> <A HREF="ftp://ftp.PostgreSQL.org/pub/odbc/">ftp://ftp.PostgreSQL.org/pub/odbc/</A>
から取得できます。<P> から取得できます。<P>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました: PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました:
<A HREF="http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html">http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html</A> <A HREF="http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html">http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html</A>
現在、最新版は井上博司さんのサイトにあります。 現在、最新版は井上博司さんのサイトにあります。
<A HREF="http://w2422.nsk.ne.jp/~inoue/indexj.html">http://w2422.nsk.ne.jp/~inoue/indexj.html</A> <A HREF="http://w2422.nsk.ne.jp/~inoue/indexj.html">http://w2422.nsk.ne.jp/~inoue/indexj.html</A>
] ]
</PRE></small> </PRE></SMALL>
<P> OpenLink <small>ODBC</small><A HREF="http://www.openlinksw.com/">http://www.openlinksw.com/</A>から入手できます。標準的な <small>ODBC</small> クライアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム(Win, Mac, Unix, <STRONG>VMS</STRONG>)から PostgreSQL の <small>ODBC</small> が利用できます。 <P> OpenLink <SMALL>ODBC</SMALL><A HREF="http://www.openlinksw.com/">http://www.openlinksw.com/</A>から入手できます。標準的な <SMALL>ODBC</SMALL> クライアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム(Win, Mac, Unix, VMS)から PostgreSQL の <SMALL>ODBC</SMALL> が利用できます。
<P> たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、 <P> たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、
フリーウェア版はいつでも入手可能のようです。質問は、<A href= フリーウェア版はいつでも入手可能のようです。質問は、<A href=
"mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A> "mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>
へ送って下さい。</P> へ送って下さい。</P>
<A HREF="http://www.postgresql.org/docs/programmer/odbc.html"> <A HREF="http://www.PostgreSQL.org/docs/programmer/odbc.html">
Programmer's Guide</A> Programmer's Guide</A>
<small>ODBC</small> の章もご覧ください。 <SMALL>ODBC</SMALL> の章もご覧ください。
<P> <P>
...@@ -643,10 +587,9 @@ Programmer's Guide</A> ...@@ -643,10 +587,9 @@ Programmer's Guide</A>
<P> データベースを裏に持つ Web ページについての素晴らしい紹介が、<BR> <P> データベースを裏に持つ Web ページについての素晴らしい紹介が、<BR>
<A href="http://www.webreview.com">http://www.webreview.com</A>にあります。</P> <A href="http://www.webreview.com">http://www.webreview.com</A>にあります。</P>
<P><A HREF="http://www.phone.net/home/mwm/hotlist/">http://www.phone.net/home/mwm/hotlist/</A>にも、もう一つあります。
<P> Web への拡張のためには、PHP が卓越したインターフェースとなっています。<A HREF="http://www.php.net">http://www.php.net/</A>にあります。 <P> Web への拡張のためには、PHP が卓越したインターフェースとなっています。<A HREF="http://www.php.net">http://www.php.net/</A>にあります。
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト
<A HREF="http://www.php.gr.jp/">http://www.php.gr.jp/</A> <A HREF="http://www.php.gr.jp/">http://www.php.gr.jp/</A>
...@@ -661,12 +604,13 @@ Programmer's Guide</A> ...@@ -661,12 +604,13 @@ Programmer's Guide</A>
<A HREF="ftp://night.fminn.nagano.nagano.jp/php4/">ftp://night.fminn.nagano.nagano.jp/php4/</A> <A HREF="ftp://night.fminn.nagano.nagano.jp/php4/">ftp://night.fminn.nagano.nagano.jp/php4/</A>
を用意して下さってます。 を用意して下さってます。
本家の方で国際化のMLも立ち上がっています。 本家の方で国際化のMLも立ち上がっています。
PHP-4.2 からマルチバイト拡張文字列として採り入れられました。
] ]
</PRE></small> </PRE></SMALL>
<P> 処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。 <P> 処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm か mod_perl を使います。
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
WDB は、Web から DataBase への Perl の Interface です。 WDB は、Web から DataBase への Perl の Interface です。
wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。 wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。
...@@ -676,19 +620,19 @@ Programmer's Guide</A> ...@@ -676,19 +620,19 @@ Programmer's Guide</A>
<A HREF="http://www.i-con.dk/wdb/">http://www.i-con.dk/wdb/</A> <A HREF="http://www.i-con.dk/wdb/">http://www.i-con.dk/wdb/</A>
とがあります。その経緯はよくわかりません。 とがあります。その経緯はよくわかりません。
] ]
</PRE></small> </PRE></SMALL>
<P> <P>
<H4><A NAME="2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェースはありますか? <H4><A NAME="2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?
レポートジェネレータや埋め込み問い合わせ言語インターフェースはありますか? レポートジェネレータや埋め込み問い合わせ言語インターフェースはありますか?
</H4> </H4>
<P> <I>pgaccess</I> と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この配布と共に出荷されます。<I>Pgaccess</I> にはレポート・ジェネレータもあります。Web ページは<A HREF="http://www.flex.ro/pgaccess">http://www.flex.ro/pgaccess</A>です。 <P> PgAccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この配布と共に出荷されます。PgAccess にはレポート・ジェネレータもあります。Web ページは<A HREF="http://www.pgaccess.org/">http://www.pgaccess.org/</A>です。
<P> <I>ecpg</I> という C 言語のための埋め込み <small>SQL</small> 問い合わせ言語インターフェースもあります。 <P> <I>ecpg</I> という C 言語のための埋め込み <SMALL>SQL</SMALL> 問い合わせ言語インターフェースもあります。
<P> <P>
<H4><A NAME="2.4">2.4</A>) PostgreSQL と通信するにはどんな言語が使えますか? <H4><A NAME="2.4">2.4</A>) どのような言語で PostgreSQL と通信できすか?
</H4> </H4>
<P>以下のものがあります: <P>以下のものがあります:
...@@ -698,24 +642,24 @@ Programmer's Guide</A> ...@@ -698,24 +642,24 @@ Programmer's Guide</A>
<LI>C++ (libpq++) <LI>C++ (libpq++)
<LI>埋め込みC (ecpg) <LI>埋め込みC (ecpg)
<LI>Java (jdbc) <LI>Java (jdbc)
<LI>Perl (perl5) <LI>Perl (DBD::Pg and perl5)
<LI>ODBC (odbc) <LI>ODBC (odbc)
<LI>Python (<A HREF="http://www.druid.net/pygresql/">PyGreSQL</A>) <LI>Python (<A HREF="http://www.druid.net/pygresql/">PyGreSQL</A>)
<LI>TCL (libpgtcl) <LI>TCL (libpgtcl)
<LI>C Easy API (libpgeasy) <LI>C Easy API (libpgeasy)
<LI>埋め込み<small>HTML</small> (<A HREF="http://www.php.net">PHP from http://www.php.net</A>) <LI>PHP ('pg_' 関数群、 Pear::DB)
</UL> </UL>
<P>その他の利用可能なインターフェースは <a <P>その他の利用可能なインターフェースは <a
href="http://www.postgresql.org/interfaces.html"> href="http://www.PostgreSQL.org/interfaces.html">
http://www.postgresql.org/interfaces.html</A> http://www.PostgreSQL.org/interfaces.html</A>
にあります。 にあります。
</P> </P>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
<A HREF="http://www.netlab.co.jp/ruby/jp/">ruby</A>の作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが <A HREF="http://www.ruby-lang.org/">ruby</A>の作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが
ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。 ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。
<A HREF="http://webclub.kcom.ne.jp/mb/noborus/ruby/">http://webclub.kcom.ne.jp/mb/noborus/ruby/</A> <A HREF="http://www.postgresql.jp/interfaces/ruby/">http://www.postgresql.jp/interfaces/ruby/</A>
PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。 PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。
<A HREF="http://www.psn.co.jp/PostgreSQL/pgbash/">http://www.psn.co.jp/PostgreSQL/pgbash/</A> <A HREF="http://www.psn.co.jp/PostgreSQL/pgbash/">http://www.psn.co.jp/PostgreSQL/pgbash/</A>
Bashコマンドラインでpostgres に問い合わせできます。 Bashコマンドラインでpostgres に問い合わせできます。
...@@ -724,11 +668,11 @@ Programmer's Guide</A> ...@@ -724,11 +668,11 @@ Programmer's Guide</A>
永安悟史さんは Palm 版の libpq を開発されました。 永安悟史さんは Palm 版の libpq を開発されました。
<a href="http://www.snaga.org/libpq/">http://www.snaga.org/libpq/</a> <a href="http://www.snaga.org/libpq/">http://www.snaga.org/libpq/</a>
] ]
</PRE></small> </PRE></SMALL>
<P> <P>
<HR> <HR>
<H2><CENTER>管理上の質問</CENTER></H2> <H2 align="center">管理上の質問</H2>
<P> <P>
<H4><A NAME="3.1">3.1</A>) どのようにすれば <I>/usr/local/pgsql</I> 以外の場所にインストールできますか?</H4> <H4><A NAME="3.1">3.1</A>) どのようにすれば <I>/usr/local/pgsql</I> 以外の場所にインストールできますか?</H4>
...@@ -752,7 +696,7 @@ PostgreSQL Administrator's Gide ...@@ -752,7 +696,7 @@ PostgreSQL Administrator's Gide
<H4><A NAME="3.4">3.4</A>) <I>postmasterを</I>走らせようとすると、<I>IpcSemaphoreCreate</I> エラーが出ます。なぜですか? <H4><A NAME="3.4">3.4</A>) <I>postmasterを</I>走らせようとすると、<I>IpcSemaphoreCreate</I> エラーが出ます。なぜですか?
</H4> </H4>
<P>もしエラーメッセージが<I>IpcSemaphoreCreate: semget failed (No space left on device)</I>であれば、カーネルが十分なセマフォを使えるように構成されていません。Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要とします。とりあえずの解決策は<I>postmaster</I>を起動するときに、バックエンドプロセスの数をより少なく制限をすることです。既定値の32より小さな数のパラメータを<I>-N</I>で使います。より恒久的な解決策は、カーネルの<small>SEMMNS</small><small>SEMMNI</small> パラメータを増やすことです。 <P>もしエラーメッセージが<I>IpcSemaphoreCreate: semget failed (No space left on device)</I>であれば、カーネルが十分なセマフォを使えるように構成されていません。Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要とします。とりあえずの解決策は<I>postmaster</I>を起動するときに、バックエンドプロセスの数をより少なく制限をすることです。既定値の32より小さな数のパラメータを<I>-N</I>で使います。より恒久的な解決策は、カーネルの<SMALL>SEMMNS</SMALL><SMALL>SEMMNI</SMALL> パラメータを増やすことです。
<P>操作不能のセマフォも過度なデータベースアクセスの間にクラッシュを <P>操作不能のセマフォも過度なデータベースアクセスの間にクラッシュを
起こす可能性があります。 起こす可能性があります。
...@@ -773,8 +717,8 @@ PostgreSQL Administrator's Gide ...@@ -773,8 +717,8 @@ PostgreSQL Administrator's Gide
<H4><A NAME="3.6">3.6</A>) より良い性能を得るためには、データベース・エンジンをどのように調整すれば良いですか? <H4><A NAME="3.6">3.6</A>) より良い性能を得るためには、データベース・エンジンをどのように調整すれば良いですか?
</H4> </H4>
<P> 確かにインデックスは問い合わせの速度を増します。<small>EXPLAIN</small>コマンドで PostgreSQL がどのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どのインデックスが使われているかを見ることができます。 <P> 確かにインデックスは問い合わせの速度を増します。<SMALL>EXPLAIN</SMALL>コマンドで PostgreSQL がどのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どのインデックスが使われているかを見ることができます。
<P>もし <small>INSERT</small> を多用している場合は、<small>COPY</small> コマンドを使って大きなバッチ処理でそれを行なうことを検討して下さい。これは、<small>INSERT</small> を別々に行なうよりもっと高速です。次に、<small>BEGIN WORK/COMMIT</small> のトランザクション・ブロックの中に無い文は、それら自身がそれぞれのトランザクションに入っていると見なされます。いくつかの文を一つのトランザクション・ブロックの中で行なうことを考えて下さい。これによりトランザクションのオーバーヘッドが減ります。また、大きなデータの変更を行なう際はインデックスを一度外して、作り直すことを考えてみて下さい。 <P>もし <SMALL>INSERT</SMALL> を多用している場合は、<SMALL>COPY</SMALL> コマンドを使って大きなバッチ処理でそれを行なうことを検討して下さい。これは、<SMALL>INSERT</SMALL> を別々に行なうよりもっと高速です。次に、<SMALL>BEGIN WORK/COMMIT</SMALL> のトランザクション・ブロックの中に無い文は、それら自身がそれぞれのトランザクションに入っていると見なされます。いくつかの文を一つのトランザクション・ブロックの中で行なうことを考えて下さい。これによりトランザクションのオーバーヘッドが減ります。また、大きなデータの変更を行なう際はインデックスを一度外して、作り直すことを考えてみて下さい。
<P> チューニングのオプションがいくつかあります。<I>postmaster</I><I>-o -F</I> オプションで起動することによって、<I>fsync()</I> を無効にすることができます。これによって、各トランザクション毎に <I>fsync()</I> でディスクを更新するのを止めさせます。 <P> チューニングのオプションがいくつかあります。<I>postmaster</I><I>-o -F</I> オプションで起動することによって、<I>fsync()</I> を無効にすることができます。これによって、各トランザクション毎に <I>fsync()</I> でディスクを更新するのを止めさせます。
...@@ -782,7 +726,7 @@ PostgreSQL Administrator's Gide ...@@ -782,7 +726,7 @@ PostgreSQL Administrator's Gide
<P> バックエンドを <I>-S</I> オプションを使って、それぞれのバックエンド・プロセスが一時的な並べ替えによって使うメモリーの最大サイズを増やすこともできます。 その <I>-S</I> の値はキロバイト単位で、既定値は 512 (すなわち、512K)です。 <P> バックエンドを <I>-S</I> オプションを使って、それぞれのバックエンド・プロセスが一時的な並べ替えによって使うメモリーの最大サイズを増やすこともできます。 その <I>-S</I> の値はキロバイト単位で、既定値は 512 (すなわち、512K)です。
<P> また、<small>CLUSTER</small> コマンドを使って、テーブルのデータをインデックスに合わせるためにグループ化することもできます。詳しくは、オンラインマニュアルで <I>CLUSTER</I> を見て下さい。 <P> また、<SMALL>CLUSTER</SMALL> コマンドを使って、テーブルのデータをインデックスに合わせるためにグループ化することもできます。詳しくは、オンラインマニュアルで <I>CLUSTER</I> を見て下さい。
<P> <P>
<H4><A NAME="3.7">3.7</A>) どのようなデバグ機能が使えますか?</H4> <H4><A NAME="3.7">3.7</A>) どのようなデバグ機能が使えますか?</H4>
...@@ -800,19 +744,19 @@ PostgreSQL Administrator's Gide ...@@ -800,19 +744,19 @@ PostgreSQL Administrator's Gide
<P> これにより PostgreSQL の最上部のディレクトリに server.log ファイルが置かれます。このファイルはサーバーが遭遇した問題やエラーについて有用な情報を含みます。<I>Postmaster</I> は更に詳細な情報を報告するための <I>-d</I> オプションを持ちます。その <I>-d</I> オプションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大きなログファイルを生成することに注意しなくてはなりません。 <P> これにより PostgreSQL の最上部のディレクトリに server.log ファイルが置かれます。このファイルはサーバーが遭遇した問題やエラーについて有用な情報を含みます。<I>Postmaster</I> は更に詳細な情報を報告するための <I>-d</I> オプションを持ちます。その <I>-d</I> オプションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大きなログファイルを生成することに注意しなくてはなりません。
<P>もし、<i>postmaster</i>が走っていなければ、<I>postgres</I>バックエンドをコマンド行から走らせることができ、直接<small>SQL</small>文をタイプすることができます。このやりかたは、デバグ目的のとき<B>だけ</B>お奨めします。セミコロンではなく、改行が問い合わせの終りになることに注意してください。もし、デバグシンボルを入れてコンパイルしていれば、デバッガを使って何が起きているかを見ることができます。postmaster からバックエンドを開始したわけではないので、独立な環境で走っているのではなくロック/バックエンドとの対話の問題が重複することはありません。 <P>もし、<i>postmaster</i>が走っていなければ、<I>postgres</I>バックエンドをコマンド行から走らせることができ、直接<SMALL>SQL</SMALL>文をタイプすることができます。このやりかたは、デバグ目的のとき<B>だけ</B>お奨めします。セミコロンではなく、改行が問い合わせの終りになることに注意してください。もし、デバグシンボルを入れてコンパイルしていれば、デバッガを使って何が起きているかを見ることができます。postmaster からバックエンドを開始したわけではないので、独立な環境で走っているのではなくロック/バックエンドとの対話の問題が重複することはありません。
<P> もし、<i>postmaster</i>が走っていれば、あるウィンドウで <P> もし、<i>postmaster</i>が走っていれば、あるウィンドウで
<I>psql</I>を開始すると、<i>psql</i> で使われる <i>postgres</i> プロセス <I>psql</I>を開始すると、<i>psql</i> で使われる <i>postgres</i> プロセス
<small>PID</small>が見つかります。デバッガを使って <SMALL>PID</SMALL>が見つかります。デバッガを使って
<i>postgres</i><small>PID</small>にアタッチ(attach)します。デバッ <i>postgres</i><SMALL>PID</SMALL>にアタッチ(attach)します。デバッ
ガの中からブレーク・ポイントをセットし、<i>psql</i> から問い合わせを発行 ガの中からブレーク・ポイントをセットし、<i>psql</i> から問い合わせを発行
します。デバグのために<i>postgres</i>を始動する場合は、PGOPTIONS="-W n" します。デバグのために<i>postgres</i>を始動する場合は、PGOPTIONS="-W n"
を設定でき、それから、<i>psql</i> を開始します。これにより、<i>n</i> を設定でき、それから、<i>psql</i> を開始します。これにより、<i>n</i>
開始を遅らせるはずなので、デバッガでプロセスにアタッチして、ブレークポイ 開始を遅らせるはずなので、デバッガでプロセスにアタッチして、ブレークポイ
ントを設定し、開始から順を追って見てゆくことができます。 ントを設定し、開始から順を追って見てゆくことができます。
<P> postgreSQL プログラムには、デバグと性能測定にとても役に立つ <I>-s</I><I>-A</I><I>-t</I> 等のオプションがあります。 <P> PostgreSQL プログラムには、デバグと性能測定にとても役に立つ <I>-s</I><I>-A</I><I>-t</I> 等のオプションがあります。
<P> 何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング(プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフィール・ファイルは <I>pgsql/data/base/dbname</I> ディレクトリに格納されるでしょう。クライアントのプロフィールはクライアントの現行ディレクトリに置かれるでしょう。Linux でまともなプロファイリングを行うには <I>-DLINUX_PROFILE</I> でコンパイルする必要があります。 <P> 何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング(プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフィール・ファイルは <I>pgsql/data/base/dbname</I> ディレクトリに格納されるでしょう。クライアントのプロフィールはクライアントの現行ディレクトリに置かれるでしょう。Linux でまともなプロファイリングを行うには <I>-DLINUX_PROFILE</I> でコンパイルする必要があります。
...@@ -822,16 +766,16 @@ PostgreSQL Administrator's Gide ...@@ -822,16 +766,16 @@ PostgreSQL Administrator's Gide
</H4> </H4>
<P> <I>postmasterが</I>同時始動できるバックエンドプロセスに対する制限数を増やす必要があります。 <P> <I>postmasterが</I>同時始動できるバックエンドプロセスに対する制限数を増やす必要があります。
<P>既定の最大プロセスは32プロセスです。<I>-N</I>に適切な値を引数にして<I>postmaster</I>を再起動するか、postgresql.conf を修正することによって、その値を増やすことができます。 <P>既定の最大プロセスは32プロセスです。<I>-N</I>に適切な値を引数にして<I>postmaster</I>を再起動するか、PostgreSQL.conf を修正することによって、その値を増やすことができます。
。既定の構成では<I>-N</I>は最大1024まで設定できます。もし、もっと必要であれば<I>include/config.h</I>の中の<small>MAXBACKENDS</small>を増加させ、再構築します。もし、望むなら<I>configure</I><I>--with-maxbackends</I>切替を使って、<I>-N</I>の既定値を構成時に設定できます。 。既定の構成では<I>-N</I>は最大1024まで設定できます。もし、もっと必要であれば<I>include/config.h</I>の中の<SMALL>MAXBACKENDS</SMALL>を増加させ、再構築します。もし、望むなら<I>configure</I><I>--with-maxbackends</I>切替を使って、<I>-N</I>の既定値を構成時に設定できます。
<P>もし、<I>-N</I> を 32よりも大きくするのであれば、<I>-B</I>も既定の64より大きい値に増加させなくてはならないし、<I>-B</I> は少なくとも <I>-N</I> の2倍はなくてはならず、おそらく最高性能を望むならばそれより大きい値が必要なはずです。バックエンドプロセスをたくさんにすると、いろいろなUnixカーネル構成パラメータも増やすことが必要になるかもしれません。 <P>もし、<I>-N</I> を 32よりも大きくするのであれば、<I>-B</I>も既定の64より大きい値に増加させなくてはならないし、<I>-B</I> は少なくとも <I>-N</I> の2倍はなくてはならず、おそらく最高性能を望むならばそれより大きい値が必要なはずです。バックエンドプロセスをたくさんにすると、いろいろなUnixカーネル構成パラメータも増やすことが必要になるかもしれません。
共有メモリー・ブロックの最大値(<small>SHMMAX</small>)、 共有メモリー・ブロックの最大値(<SMALL>SHMMAX</SMALL>)、
セマフォの最大数(<small>SEMMNS</small><small>SEMMNI</small>)、 セマフォの最大数(<SMALL>SEMMNS</SMALL><SMALL>SEMMNI</SMALL>)、
プロセスの最大数(<small>NPROC</small>)、 プロセスの最大数(<SMALL>NPROC</SMALL>)、
ユーザ毎の最大プロセス数(<small>MAXUPRC</small>)、 ユーザ毎の最大プロセス数(<SMALL>MAXUPRC</SMALL>)、
開くファイルの最大数(<small>NFILE</small><small>NINODE</small> 開くファイルの最大数(<SMALL>NFILE</SMALL><SMALL>NINODE</SMALL>
も確認事項に含まれます。 も確認事項に含まれます。
PostgreSQLに許されるバックエンドのプロセス数が制限されているのは、 PostgreSQLに許されるバックエンドのプロセス数が制限されているのは、
システムのリソースを使い果してしまうことを避けるためです。 システムのリソースを使い果してしまうことを避けるためです。
...@@ -839,15 +783,14 @@ PostgreSQL ...@@ -839,15 +783,14 @@ PostgreSQL
<P>6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更するには、<I>include/storage/sinvaladt.h</I>の中のMaxBackendId定数を修正した後に再構築が必要でした。 <P>6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更するには、<I>include/storage/sinvaladt.h</I>の中のMaxBackendId定数を修正した後に再構築が必要でした。
<P> <P>
<H4><A NAME="3.9">3.9</A>) 自分のデータベース・ディレクトリにある <I>pg_sorttemp.XXX</I>ファイルは何ですか? <H4><A NAME="3.9">3.9</A>) pgsql_tmp</I> ディレクトリの中には何がありますか?
</H4> </H4>
<P> 問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし <small>ORDER BY</small> 句を満たすためにバックエンドの <I>-S</I> パラメータで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイルがいくつか生成されます。 <P> 問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし <SMALL>ORDER BY</SMALL> 句を満たすためにバックエンドの <I>-S</I> パラメータで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイルがいくつか生成されます。
<P> <P>
一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエンドがクラッシュしてしまうとそうはなりません。そのときバックエンドがひとつも走ってなければ、pg_tempNNN.NNファイルを消しても大丈夫です。 一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエンドがクラッシュしてしまうとそうはなりません。<I>postmaster</I>の停止とリスタートでこれらのファイルはディレクトリから消しさられます。
<SMALL><PRE>
<small><PRE>
[訳注: [訳注:
SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog
付きで走らせた後、コンパイルとインストールを行ないます。 付きで走らせた後、コンパイルとインストールを行ないます。
...@@ -855,34 +798,34 @@ PostgreSQL ...@@ -855,34 +798,34 @@ PostgreSQL
syslogd に HUP シグナルを送って初期化しておきます。そして、 syslogd に HUP シグナルを送って初期化しておきます。そして、
$PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S $PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S
オプション付きにてサーバモードで起動します。(バージョン 7.1 からは オプション付きにてサーバモードで起動します。(バージョン 7.1 からは
pg_options は postgresql.conf になっています。) pg_options は PostgreSQL.conf になっています。)
] ]
</PRE></small> </PRE></SMALL>
<P> <P>
<H4><A name="3.10">3.10</A>) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしなくてはならないのはなぜですか?</H4> <H4><A name="3.10">3.10</A>) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしなくてはならないのはなぜですか?</H4>
<P> <P>
PostgreSQLチームはマイナーリリースでは小さな変更しか行ないませんので、7.2 から 7.2.1 へのアップグレードにはダンプとリストアの必要はありません。しかし、メジャーリリースでは、システムテーブルやデータファイルの内部フォーマットの変更をしばしば行ないます。これらの変更はたいてい複雑で、そのため我々はデータファイルのための後方互換性を維持することができません。ダンプは汎用フォーマットでデータを出力し、それを新しい内部フォーマットを使って読み込むことができます。 PostgreSQLチームはマイナーリリースでは小さな変更しか行ないませんので、7.2 から 7.2.1 へのアップグレードにはダンプとリストアの必要はありません。しかし、メジャーリリース(たとえば、7.2から7.3へのような)では、システムテーブルやデータファイルの内部フォーマットの変更をしばしば行ないます。これらの変更はたいてい複雑で、そのため我々はデータファイルのための後方互換性を維持することができません。ダンプは汎用フォーマットでデータを出力し、それを新しい内部フォーマットに読み込むことができます。
<P> <P>
同一リリースではディスク上でのフォーマットに変更はないので、アップグレードにはダンプ/リストアではなく、<i>pg_upgrade</i> スクリプトを使うことができます。リリースノートには、<i>pg_upgrade</i> が利用可能なリリースかどうか記されています。 同一リリースではディスク上でのフォーマットに変更はないので、アップグレードにはダンプ/リストアではなく、<I>pg_upgrade</I> スクリプトを使うことができます。リリースノートには、<I>pg_upgrade</I> が利用可能なリリースかどうか記されています。</P>
<P> <P>
<HR> <HR>
<H2><CENTER>操作上の質問</CENTER></H2> <H2 align="center">操作上の質問</H2>
<P> <P>
<H4><A NAME="4.1">4.1</A>) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか? <H4><A NAME="4.1">4.1</A>) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか?
</H4> </H4>
<P> 詳述は、オンラインマニュアルで <small>DECLARE</small> を見て下さい。 <P> 詳述は、オンラインマニュアルで <SMALL>DECLARE</SMALL> を見て下さい。
<P> <P>
<H4><A NAME="4.2">4.2</A>) 最初の数ロウのみを <small>SELECT</small> するにはどうしますか? <H4><A NAME="4.2">4.2</A>) 最初の数ロウのみを <SMALL>SELECT</SMALL> するにはどうしますか?
</H4> </H4>
<P> オンラインマニュアルで<small>FETCH</small>を見てください。あるいは、SELECT ... LIMIT....を使ってみて下さい。 <P> オンラインマニュアルで<SMALL>FETCH</SMALL>を見てください。あるいは、SELECT ... LIMIT....を使ってみて下さい。
<P>たとえ、欲しいのは最初の数ロウだけでも、すべての問い合わせを評価しなくてはならないかもしれません。<small>ORDER BY</small> を持った問い合わせを考えてみて下さい。 <P>たとえ、欲しいのは最初の数ロウだけでも、すべての問い合わせを評価しなくてはならないかもしれません。<SMALL>ORDER BY</SMALL> を持った問い合わせを使うことを考えてみて下さい。
もし、<small>ORDER BY</small>に合ったインデックスがあるとすると PostgreSQLは要求された最初の数ロウだけで評価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成されるまですべてのロウを評価しなければならないかもしれません。 もし、<SMALL>ORDER BY</SMALL>に合ったインデックスがあるとすると PostgreSQLは要求された最初の数ロウだけで評価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成されるまですべてのロウを評価しなければならないかもしれません。
<P> <P>
<H4><A NAME="4.3">4.3</A>) テーブルやその他の情報のリストを <I>psql</I> で見るにはどうしますか? <H4><A NAME="4.3">4.3</A>) テーブルやその他の情報のリストを <I>psql</I> で見るにはどうしますか?
...@@ -890,14 +833,15 @@ PostgreSQL ...@@ -890,14 +833,15 @@ PostgreSQL
<P> <P>
<I>psql</I>のソースコードとして書かれた <I>pgsql/src/bin/psql/describe.c</I> ファイルを読むことがその答えです。 <I>psql</I>のソースコードとして書かれた <I>pgsql/src/bin/psql/describe.c</I> ファイルを読むことがその答えです。
そこには、psqlのバックスラッシュコマンドによる出力のための<small>SQL</small>コマンドが含まれています。 <I>psql</I><I>-E</I> オプションをつけて起動すれば、与えたコマンドを実行するための問い合わせが出力されます。 そこには、psqlのバックスラッシュコマンドによる出力のための<SMALL>SQL</SMALL>コマンドが含まれています。 <I>psql</I><I>-E</I> オプションをつけて起動すれば、与えたコマンドを実行するための問い合わせが出力されます。
<P> <P>
<H4><A NAME="4.4">4.4</A>) テーブルからカラムの削除はどのようにしますか? <H4><A NAME="4.4">4.4</A>) テーブルからカラムの削除はどのようにしますか?
</H4> </H4>
<P> <small>ALTER TABLE DROP COLUMN</small> はサポートしていませんが、その代わりにこうします: <P> この機能は、<SMALL>ALTER TABLE DROP COLUMN</SMALL> としてリリース7.3
から加えられました。それまでのバージョンでは、その代わりにこうします:
<PRE> <PRE>
BEGIN; BEGIN;
...@@ -919,7 +863,7 @@ PostgreSQL ...@@ -919,7 +863,7 @@ PostgreSQL
<P> 制限は以下のとおりです。 <P> 制限は以下のとおりです。
<PRE> <PRE>
データベースの最大サイズ? 制限無し (500GB のデータベースも存在します) データベースの最大サイズ? 制限無し (1 TB のデータベースも存在します)
テーブルの最大サイズ? 16TB テーブルの最大サイズ? 16TB
ロウの最大サイズ? 1.6TB ロウの最大サイズ? 1.6TB
フィールドの最大サイズ? 1GB フィールドの最大サイズ? 1GB
...@@ -976,7 +920,7 @@ PostgreSQL ...@@ -976,7 +920,7 @@ PostgreSQL
</H4> </H4>
<P> <I>psql</I> にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示します。バックスラッシュ・コマンドの種類を見るには \? を使って下さい。 <P> <I>psql</I> にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示します。バックスラッシュ・コマンドの種類を見るには \? を使って下さい。
<P> また、<I>pgsql/src/tutorial/syscat.source</I> ファイルを走らせてみて下さい。それは、沢山の <small>SELECT</small> 文により必要な情報をデータベースのシステム・テーブルから取り出して例示してくれます。また、<i>pg_</i> で始まるシステムテーブルにも記述されています。さらに、<i>psql -l</i> はすべてのデータベースをリスト表示します。 <P> また、<I>pgsql/src/tutorial/syscat.source</I> ファイルを走らせてみて下さい。それは、沢山の <SMALL>SELECT</SMALL> 文により必要な情報をデータベースのシステム・テーブルから取り出して例示してくれます。また、<i>pg_</i> で始まるシステムテーブルにも記述されています。さらに、<i>psql -l</i> はすべてのデータベースをリスト表示します。
<P> <P>
<H4><A NAME="4.8">4.8</A>) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか? <H4><A NAME="4.8">4.8</A>) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか?
...@@ -1008,7 +952,7 @@ ORDER BY ...@@ -1008,7 +952,7 @@ ORDER BY
SELECT col SELECT col
FROM tab FROM tab
ORDER BY col [ DESC ] ORDER BY col [ DESC ]
LIMIT 1 LIMIT 1;
</PRE> </PRE>
<P> <SMALL>LIKE</SMALL> あるいは <I>~</I> のようなワイルドカード演算 <P> <SMALL>LIKE</SMALL> あるいは <I>~</I> のようなワイルドカード演算
...@@ -1020,7 +964,8 @@ ORDER BY ...@@ -1020,7 +964,8 @@ ORDER BY
<LI><I>~</I> (正規表現) パターンは<I>^.</I>で始まらなければならない</LI> <LI><I>~</I> (正規表現) パターンは<I>^.</I>で始まらなければならない</LI>
</UL> </UL>
<LI>検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。</LI> <LI>検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。</LI>
<LI><SMALL>ILIKE</SMALL><I>~*</I> のように大文字小文字を区別しない検索は使えません。そのかわり、このFAQで後述する関数のインデックスが使えます。</LI> <LI><SMALL>ILIKE</SMALL><I>~*</I> のような大文字と小文字を区別し
ない検索は使えません。そのかわり、このFAQの<a href="#4.12">4.12</a>節で説明する関数のインデックスが使えます。</LI>
<LI>initdb においては、デフォルトで<I>C</I>ロケールが使われなくてはなりません。</i></LI> <LI>initdb においては、デフォルトで<I>C</I>ロケールが使われなくてはなりません。</i></LI>
</UL> </UL>
<P> <P>
...@@ -1034,7 +979,7 @@ ORDER BY ...@@ -1034,7 +979,7 @@ ORDER BY
<H4><A NAME="4.9">4.9</A>) 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るにはどうしますか? <H4><A NAME="4.9">4.9</A>) 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るにはどうしますか?
</H4> </H4>
<P> オンラインマニュアルで <small>EXPLAIN</small> を見て下さい。 <P> オンラインマニュアルで <SMALL>EXPLAIN</SMALL> を見て下さい。
<P> <P>
<H3><A NAME="4.10">4.10</A>) R-tree インデックスとは何ですか?</H3> <H3><A NAME="4.10">4.10</A>) R-tree インデックスとは何ですか?</H3>
...@@ -1050,25 +995,25 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. ...@@ -1050,25 +995,25 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
でも取り上げられています。 でも取り上げられています。
<P> <P>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
奈良先端大の石川佳治さんよりR-Tree関係の文献を紹介して頂きました。 奈良先端大の石川佳治さんよりR-Tree関係の文献を紹介して頂きました。
日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial data structures" 日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial data structures"
<A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html">http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html</A> <A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html">http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html</A>
をご覧下さい。 をご覧下さい。
] ]
</PRE></small> </PRE></SMALL>
<P> 組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっと高い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょっとした作業が必要でして、現在、我々はそれをどのようにするかについての文書を持っていません。 <P> 組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっと高い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょっとした作業が必要でして、現在、我々はそれをどのようにするかについての文書を持っていません。
<P> <P>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
インターウィズの片岡さんが多次元幾何オブジェクトへの拡張作業中です。詳しくは、 インターウィズの片岡さんが多次元幾何オブジェクトへの拡張作業中です。詳しくは、
<A HREF="http://www.interwiz.koganei.tokyo.jp/software/geometric/index.html">http://www.interwiz.koganei.tokyo.jp/software/geometric/index.html</A> <A HREF="http://www.interwiz.koganei.tokyo.jp/software/geometric/index.html">http://www.interwiz.koganei.tokyo.jp/software/geometric/index.html</A>
をご覧ください。 をご覧ください。
] ]
</PRE></small> </PRE></SMALL>
<P> <P>
...@@ -1082,22 +1027,22 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. ...@@ -1082,22 +1027,22 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
</H4> </H4>
<P> <P>
<I>~</I>演算子は正規表現照合を行ない、<I>~*</I> は大文字と小文字を区別しない(case-insensitive)正規表現照合を行います。 大文字と小文字を区別しない <small>LIKE</small> 演算子を <small>ILIKE</small> といいます。 <I>~</I>演算子は正規表現照合を行ない、<I>~*</I> は大文字と小文字を区別しない(case-insensitive)正規表現照合を行います。 大文字と小文字を区別しない <SMALL>LIKE</SMALL> 演算子を <SMALL>ILIKE</SMALL> といいます。
<P>大文字と小文字を区別しない等値比較次のように表現できる: <P>大文字と小文字を区別しない等値比較次のように表現できる:
<PRE> <PRE>
<STRONG>SELECT *</STRONG> SELECT *
FROM tab FROM tab
WHERE lower(col) = 'abc' WHERE lower(col) = 'abc';
</PRE> </PRE>
標準インデックスでは使われず、しかしながら、もし関数インデックスを 標準インデックスでは使われず、しかしながら、もし関数インデックスを
作ったならそれが使われるでしょう。 作ったならそれが使われるでしょう。
<PRE> <PRE>
CREATE INDEX tabindex on tab (lower(col)); CREATE INDEX tabindex ON tab (lower(col));
</PRE> </PRE>
...@@ -1109,7 +1054,7 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. ...@@ -1109,7 +1054,7 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
<P> <P>
<H4><A NAME="4.13">4.13</A>) 問い合わせの中で、フィールドが <small>NULL</small> であることを検出するにはどうしますか? <H4><A NAME="4.13">4.13</A>) 問い合わせの中で、フィールドが <SMALL>NULL</SMALL> であることを検出するにはどうしますか?
</H4> </H4>
<P>カラムを <SMALL>IS NULL</SMALL><SMALL>IS NOT NULL</SMALL> <P>カラムを <SMALL>IS NULL</SMALL><SMALL>IS NOT NULL</SMALL>
...@@ -1123,8 +1068,8 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. ...@@ -1123,8 +1068,8 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
Type Internal Name Notes Type Internal Name Notes
-------------------------------------------------- --------------------------------------------------
"char" char 1 character "char" char 1 character
CHAR(#) bpchar 指定された固定長となるように空白が詰められる CHAR(n) bpchar 指定された固定長となるように空白が詰められる
VARCHAR(#) varchar 最大長のサイズを指定する、詰め物無し VARCHAR(n) varchar 最大長のサイズを指定する、詰め物無し
TEXT text 長さに上限の無いテキスト TEXT text 長さに上限の無いテキスト
BYTEA bytea 可変長のバイト配列(null-byte safe) BYTEA bytea 可変長のバイト配列(null-byte safe)
</PRE> </PRE>
...@@ -1132,10 +1077,10 @@ BYTEA bytea ...@@ -1132,10 +1077,10 @@ BYTEA bytea
<P> 内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを受け取るときです。 <P> 内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを受け取るときです。
<P> 上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイトがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言された大きさよりも少し大きくなります。しかし、これらのデータ型は<small>TOAST</small>により圧縮されたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなります。 <P> 上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイトがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言された大きさよりも少し大きくなります。しかし、これらのデータ型は<SMALL>TOAST</SMALL>により圧縮されたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなります。
<P><SMALL>CHAR()</SMALL>はいつも長さが同じ文字列を保存するのに最適で <P><SMALL>CHAR(n)</SMALL>はいつも長さが同じ文字列を保存するのに最適で
す。<SMALL>VARCHAR()</SMALL> は可変長の文字列を保存するのに最適ですが、 す。<SMALL>VARCHAR(n)</SMALL> は可変長の文字列を保存するのに最適ですが、
保存できる文字列の長さに制限があります。<SMALL>TEXT</SMALL> は長さに制限 保存できる文字列の長さに制限があります。<SMALL>TEXT</SMALL> は長さに制限
の無い文字列の保存ためのもので、最大1ギガバイトです。 の無い文字列の保存ためのもので、最大1ギガバイトです。
<SMALL>BYTEA</SMALL>は、部分的に<SMALL>NULL</SMALL> のバイトを含むバイナ <SMALL>BYTEA</SMALL>は、部分的に<SMALL>NULL</SMALL> のバイトを含むバイナ
...@@ -1146,7 +1091,7 @@ BYTEA bytea ...@@ -1146,7 +1091,7 @@ BYTEA bytea
<H4><A NAME="4.15.1">4.15.1</A>) 通番(serial)/自動増分フィールドはどのようにつくりますか? <H4><A NAME="4.15.1">4.15.1</A>) 通番(serial)/自動増分フィールドはどのようにつくりますか?
</H4> </H4>
<P> PostgreSQL は <small>SERIAL</small> データ型をサポートします。カラム上に通番とインデックスを自動作成します。たとえば、 <P> PostgreSQL は <SMALL>SERIAL</SMALL> データ型をサポートします。カラム上に通番とインデックスを自動作成します。たとえば、
<PRE> <PRE>
CREATE TABLE person ( CREATE TABLE person (
...@@ -1164,40 +1109,37 @@ BYTEA bytea ...@@ -1164,40 +1109,37 @@ BYTEA bytea
CREATE UNIQUE INDEX person_id_key ON person ( id ); CREATE UNIQUE INDEX person_id_key ON person ( id );
</PRE> </PRE>
通番についてのもっと詳しい情報は、オンラインマニュアルで <I>create_sequence</I> をご覧下さい。 通番についてのもっと詳しい情報は、オンラインマニュアルで <I>create_sequence</I> をご覧下さい。
<P> また、各ロウの<I>OID</I>フィールドを一意値として使うこともできます。しかしながら、もしもデータベースをダンプしてりロードする必要がある場合は、<small>OID</small>を温存するために<I>pg_dump</I><I>-o</I>オプションを使うか、または、<small>COPY WITH OIDS</I>オプションを使う必要があります。 <P> また、各ロウの<I>OID</I>フィールドを一意値として使うこともできます。しかしながら、もしもデータベースをダンプしてりロードする必要がある場合は、<SMALL>OID</SMALL>を温存するために<I>pg_dump</I><I>-o</I>オプションを使うか、または、<SMALL>COPY WITH OIDS</I>オプションを使う必要があります。
Bruce Momjian の<A HREF="http://www.PostgreSQL.org/docs/aw_pgsql_book">(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rows</A>の章にありあます。 Bruce Momjian の<A HREF="http://www.PostgreSQL.org/docs/aw_pgsql_book">(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rows</A>の章にありあます。
<H4><A NAME="4.15.2">4.15.2</A>) <small>SERIAL</small>データ型に挿入される値は、どうすれば得られますか? <H4><A NAME="4.15.2">4.15.2</A>) <SMALL>SERIAL</SMALL>データ型に挿入される値は、どうすれば得られますか?
</H4> </H4>
<P>ひとつの方法は、<I>nextval()</I> 関数を使ってその値を挿入する<I> <P>ひとつの方法は、<I>nextval()</I> 関数を使ってその値を挿入する<I>前(before)に</I> SEQUENCE オブジェクトから次の <SMALL>SERIAL</SMALL> 値を取り出し、それから実際に挿入をすることです。<A HREF="#4.15.1">4.15.1</A> のテーブルの例を使うとすると、疑似言語ではこのようになります。
前(before)に</I> SEQUENCE オブジェクトから次の <small>SERIAL</small> 値を取り出し、それから実際に挿入をすることです。<A
HREF="#4.16.1">4.16.1</A> の例で使ったテーブルを使うとすると、Perl では
次のようになります。
<PRE> <PRE>
new_id = output of "SELECT nextval('person_id_seq')" new_id = execute("SELECT nextval('person_id_seq')");
INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal'); execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
</PRE> </PRE>
そうして、<tt>new_id</tt> に保存した新しい値を他の問い合わせに(たとえば、<tt>person</tt> テーブルに対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作られた<small>SEQUENCE</small>オブジェクトの名前は、&lt;<I>table</I>&gt;_&lt;<I>serialcolumn</I>&gt;_<I>seq</I> のようになり、このうち、<I>table</I><I>serialcolumn</I> はそれぞれテーブルの名前と<small>SERIAL</small>カラムの名前です。 そうして、<tt>new_id</tt> に保存した新しい値を他の問い合わせに(たとえば、<tt>person</tt> テーブルに対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作られた<SMALL>SEQUENCE</SMALL>オブジェクトの名前は、&lt;<I>table</I>&gt;_&lt;<I>serialcolumn</I>&gt;_<I>seq</I> のようになり、このうち、<I>table</I><I>serialcolumn</I> はそれぞれテーブルの名前と<SMALL>SERIAL</SMALL>カラムの名前です。
<P> <P>
あるいは、与えられた<small>SERIAL</small>値を、それが既定値として挿入された<I>後で(after)</I><I>currval</I>() 関数を使って取り出すこともできます。たとえば、 あるいは、与えられた<SMALL>SERIAL</SMALL>値を、それが既定値として挿入された<I>後で(after)</I><I>currval()</I> 関数を使って取り出すこともできます。たとえば、
<PRE> <PRE>
INSERT INTO person (name) VALUES ('Blaise Pascal'); execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = currval('person_id_seq'); new_id = execute("SELECT currval('person_id_seq')");
</PRE> </PRE>
最後に、<small>INSERT</small>文から返る<A HREF="#4.17"><small>OID</small></A>を使って、既定値をみつけることもできますが、しかし、これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の作った DBD::Pg モジュールを使えば、$sth->execute() の後に $sth-&gt{pg_oid_status} を経由してその OID 値を使えるようにすることはできます。 最後に、<SMALL>INSERT</SMALL>文から返る<A HREF="#4.17"><SMALL>OID</SMALL></A>を使って、既定値をみつけることもできますが、しかし、これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の作った DBD::Pg モジュールを使えば、$sth->execute() の後に $sth-&gt{pg_oid_status} を経由してその OID 値を使えるようにすることはできます。
<P> <P>
<H4><A NAME="4.15.3">4.15.3</A>) 他のユーザとの競合状態を避けるためには、<I>currval()</I><I>nextval()</I> は使わないほうがよいのでしょうか? <H4><A NAME="4.15.3">4.15.3</A>) 他のユーザとの競合状態を避けるためには、<I>currval()</I><I>nextval()</I> は使わないほうがよいのでしょうか?
</H4> </H4>
<P>それはありません。Currval() は、すべてのユーザではありませんが、あなたのバックエンドに与えられた現在の値を返します。 <P>それはありません。<I>currval()</I> は、すべてのユーザではありませんが、あなたのバックエンドに与えられた現在の値を返します。
<H4><A name="4.15.4">4.15.4</A>) トランザクションが中断したときにもうい <H4><A name="4.15.4">4.15.4</A>) トランザクションが中断したときにもうい
...@@ -1211,15 +1153,15 @@ HREF="#4.16.1">4.16.1</A> ...@@ -1211,15 +1153,15 @@ HREF="#4.16.1">4.16.1</A>
</P> </P>
<P> <P>
<H4><A NAME="4.16">4.16</A>) <small>OID</small> とは何ですか? <small>TID</small> とは何ですか? <H4><A NAME="4.16">4.16</A>) <SMALL>OID</SMALL> とは何ですか? <SMALL>TID</SMALL> とは何ですか?
</H4> </H4>
<P> <small>OID</small> とは一意のロウID に対する PostgreSQL の答えです。PostgreSQL の中でつくられるすべてのロウは一意の <small>OID</small> を得ます。<I>initdb</I> で発生される <small>OID</small> はすべて 16384 (<I>backend/access/transam.h</I> から)より小さな値です。<I>initdb</I> 後のすべての <small>OID</small> (ユーザ作成)はそれ以上の値になります。 <P> <SMALL>OID</SMALL> とは一意のロウID に対する PostgreSQL の答えです。PostgreSQL の中でつくられるすべてのロウは一意の <SMALL>OID</SMALL> を得ます。<I>initdb</I> で発生される <SMALL>OID</SMALL> はすべて 16384 (<I>include/access/transam.h</I> から)より小さな値です。<I>initdb</I> 後のすべての <SMALL>OID</SMALL> (ユーザ作成)はそれ以上の値になります。
既定では、これらすべての <small>OID</small>は一つのデーブルやデータベース内に留まらず、PostgreSQL インストレーション全体の中で一意です。 既定では、これらすべての <SMALL>OID</SMALL>は一つのデーブルやデータベース内に留まらず、PostgreSQL インストレーション全体の中で一意です。
<P> PostgreSQL はテーブル間のロウを結びつけるために、そのシステムテーブル内に <small>OID</small> を使います。この <small>OID</small> は特定のユーザのロウを識別するためや結合の中で使われることができます。<small>OID</small> の値を保存するためには <I>OID</I> 型をカラムに使うことを奨めます。より速くアクセスするために <I>OID</I> フィールドにインデックスを作ることができます。 <P> PostgreSQL はテーブル間のロウを結びつけるために、そのシステムテーブル内に <SMALL>OID</SMALL> を使います。この <SMALL>OID</SMALL> は特定のユーザのロウを識別するためや結合の中で使われることができます。<SMALL>OID</SMALL> の値を保存するためには <I>OID</I> 型をカラムに使うことを奨めます。より速くアクセスするために <I>OID</I> フィールドにインデックスを作ることができます。
O<small>ID</small> は、全てのデータベースで使われる中央領域から、全ての新しいロウに割り当てられます。<small>OID</small> を他の何かに変えたい、あるいは元の <small>OID</small> もテーブルと一緒にコピーしたいのなら、できなくはありません。 O<SMALL>ID</SMALL> は、全てのデータベースで使われる中央領域から、全ての新しいロウに割り当てられます。<SMALL>OID</SMALL> を他の何かに変えたい、あるいは元の <SMALL>OID</SMALL> もテーブルと一緒にコピーしたいのなら、できなくはありません。
<PRE> <PRE>
...@@ -1234,9 +1176,9 @@ HREF="#4.16.1">4.16.1</A> ...@@ -1234,9 +1176,9 @@ HREF="#4.16.1">4.16.1</A>
--> -->
</PRE> </PRE>
<P> O<small>ID</small> は、4バイトの整数として保存されているので、40億を越えると溢れてしまうでしょう。誰もこれが起きたと報告してくる人はいませんでしたが、そうなる前にこの制限を取り除くことを計画しています。 <P> O<SMALL>ID</SMALL> は、4バイトの整数として保存されているので、40億を越えると溢れてしまうでしょう。誰もこれが起きたと報告してくる人はいませんでしたが、そうなる前にこの制限を取り除くことを計画しています。
<P> T<small>ID</small> は特定の物理ロウをそのブロックとオフセット値で識別するために使われます。<small>TID</small> はロウが修正されたり再ロードされると変わります。それらの <small>TID</small> は、物理ロウを指すためにインデックス記載で使われます。 <P> T<SMALL>ID</SMALL> は特定の物理ロウをそのブロックとオフセット値で識別するために使われます。<SMALL>TID</SMALL> はロウが修正されたり再ロードされると変わります。それらの <SMALL>TID</SMALL> は、物理ロウを指すためにインデックス記載で使われます。
<P> <P>
<H4><A NAME="4.17">4.17</A>) PostgreSQL で使われるいくつかの用語の意味は何ですか? <H4><A NAME="4.17">4.17</A>) PostgreSQL で使われるいくつかの用語の意味は何ですか?
...@@ -1251,14 +1193,13 @@ HREF="#4.16.1">4.16.1</A> ...@@ -1251,14 +1193,13 @@ HREF="#4.16.1">4.16.1</A>
<LI> 取得(retrieve)、選択(select) <LI> 取得(retrieve)、選択(select)
<LI> 置換(replace)、更新(update) <LI> 置換(replace)、更新(update)
<LI> 追加(append)、挿入(insert) <LI> 追加(append)、挿入(insert)
<LI> <small>OID</small>, 連番(serial value) <LI> <SMALL>OID</SMALL>, 連番(serial value)
<LI> ポータル(portal), カーソル(cursor) <LI> ポータル(portal), カーソル(cursor)
<LI> 領域変数(range variable)、テーブル名(table name)、テーブル別名(table alias) <LI> 領域変数(range variable)、テーブル名(table name)、テーブル別名(table alias)
</UL> </UL>
<P>一般的なデータベース用語のリストは:<a <P>一般的なデータベース用語のリストは:<a
href="http://www.comptechnews.com/~reaster/dbdesign.html"> href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>
http://www.comptechnews.com/~reaster/dbdesign.html</a> で見つけられます。</P>
で見つけられます。
<P> <P>
<H4><A NAME="4.18">4.18</A>) エラーメッセージ <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>が出るのはなぜですか? <H4><A NAME="4.18">4.18</A>) エラーメッセージ <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>が出るのはなぜですか?
...@@ -1273,13 +1214,13 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a> ...@@ -1273,13 +1214,13 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a>
</PRE> </PRE>
<P> <P>
シェルによって、どちらかひとつが成功するでしょうが、これはプロセスのデータセグメント制限をより高く設定し、たぶん問い合わせが完結するようになるでしょう。このコマンドは現行のプロセスと、このコマンドを走らせた後に作られる全てのサブプロセスについて適用されます。バックエンドがとても多くのデータを返すために<small>SQL</small> クライアントで問題が続いているのであれば、クライアントを開始する前にこれを試してみてください。 シェルによって、どちらかひとつが成功するでしょうが、これはプロセスのデータセグメント制限をより高く設定し、たぶん問い合わせが完結するようになるでしょう。このコマンドは現行のプロセスと、このコマンドを走らせた後に作られる全てのサブプロセスについて適用されます。バックエンドがとても多くのデータを返すために<SMALL>SQL</SMALL> クライアントで問題が続いているのであれば、クライアントを開始する前にこれを試してみてください。
<P> <P>
<H4><A NAME="4.19">4.19</A>) どのバージョンの PostgreSQL を走らせているかを調べるにはどうしますか?<BR> <H4><A NAME="4.19">4.19</A>) どのバージョンの PostgreSQL を走らせているかを調べるにはどうしますか?<BR>
</H4> </H4>
<P> <P>
<I>psql</I> から <tt>select version();</tt> をタイプします。 <I>psql</I> から <CODE>SELECT version();</CODE> をタイプします。
<P> <P>
...@@ -1290,7 +1231,7 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a> ...@@ -1290,7 +1231,7 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a>
<P>現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト・ハンドルを閉じることにより、<I>lo_open</I>コマンドが完了した直後に強制的にルールを実行します。このため、最初にハンドルに対して何かをしようとすると、<I>invalid large obj descriptor(ラージ・オブジェクトの記述子が不正)</I>となります。それで、もし、トランザクションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエラーメッセージを出すのです。 <P>現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト・ハンドルを閉じることにより、<I>lo_open</I>コマンドが完了した直後に強制的にルールを実行します。このため、最初にハンドルに対して何かをしようとすると、<I>invalid large obj descriptor(ラージ・オブジェクトの記述子が不正)</I>となります。それで、もし、トランザクションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエラーメッセージを出すのです。
<P>もし、<small>ODBC</small>のようなクライアントインターフェースをお使いなら、<tt>auto-commit off</tt>を設定する必要があるかもしれません。 <P>もし、<SMALL>ODBC</SMALL>のようなクライアントインターフェースをお使いなら、<tt>auto-commit off</tt>を設定する必要があるかもしれません。
<P> <P>
...@@ -1303,22 +1244,26 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a> ...@@ -1303,22 +1244,26 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a>
<P> <P>
<H4><A NAME="4.22">4.22</A>) なぜ、<small>IN</small>を使う副問い合わせがとても遅いのですか? <H4><A NAME="4.22">4.22</A>) なぜ、<SMALL>IN</SMALL>を使う副問い合わせがとても遅いのですか?
</H4> </H4>
<P> <P>
現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキャンすることにより、副問い合わせを外部問い合わせに結合しています。当面は<small>IN</small><small>EXIST</small>Sで置き換えることです: 現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキャンす
ることにより、副問い合わせを外部問い合わせに結合しています。
もし、副問い合わせが数行しか返さず、外部問い合わせが沢山の行を返すなら、
当面は<CODE>IN</CODE><CODE>EXISTS</CODE>で置き換えることです:
<PRE> <PRE>
<STRONG>SELECT *</STRONG> SELECT *
FROM tab FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2) WHERE col1 IN (SELECT subcol FROM subtab)
</PRE> </PRE>
を、置き換えて: を、置き換えて:
<PRE> <PRE>
SELECT * SELECT *
FROM tab FROM tab
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
</PRE> </PRE>
とします。 とします。
これが手っ取り早いですが、<CODE>subcol</CODE>は索引付きカラムであるべきです。
この制限は将来のリリースで直したいと思っています。 この制限は将来のリリースで直したいと思っています。
<P> <P>
...@@ -1326,24 +1271,26 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a> ...@@ -1326,24 +1271,26 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a>
<P> <P>
PostgreSQL は SQL 標準構文を使う外部結合(アウタージョイン)をサポートします。ここに 2つの例題があります。 PostgreSQL は SQL 標準構文を使う外部結合(アウタージョイン)をサポートします。ここに 2つの例題があります。
<pre> <PRE>
<STRONG>SELECT *</STRONG> SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);</pre> FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
</PRE>
あるいは あるいは
<pre> <PRE>
<STRONG>SELECT *</STRONG> SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);</pre> FROM t1 LEFT OUTER JOIN t2 USING (col);
</PRE>
これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されなかったロウ(t2 と一致しなかったロウ)も返しています。<small>RIGHT</small> 結合は t2 の結合されなかったロウを加えるでしょう。<small>FULL</small> 結合は、一致したロウに t1 と t2 からは結合されなかったロウを返すでしょう。<small>OUTER</small> という言葉はオプションで <small>LEFT</small>, <small>RIGHT</small>, または <small>FULL</small> などの結合を仮定されています。 これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されなかったロウ(t2 と一致しなかったロウ)も返しています。<SMALL>RIGHT</SMALL> 結合は t2 の結合されなかったロウを加えるでしょう。<SMALL>FULL</SMALL> 結合は、一致したロウに t1 と t2 からは結合されなかったロウを返すでしょう。<SMALL>OUTER</SMALL> という言葉はオプションで <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL>, または <SMALL>FULL</SMALL> などの結合を仮定されています。
以前のリリースでは外部結合(outer join)を<small>UNION</small><small>NOT IN</small> を使ってシミュレートできます。 以前のリリースでは外部結合(outer join)を<SMALL>UNION</SMALL><SMALL>NOT IN</SMALL> を使ってシミュレートできます。
たとえば、<i>tab1</i><i>tab2</i> を結合するときは、次の問い合わせで二つのテーブルを<i>外部</i>結合します。 たとえば、<i>tab1</i><i>tab2</i> を結合するときは、次の問い合わせで二つのテーブルを<i>外部</i>結合します。
<PRE> <PRE>
SELECT tab1.col1, tab2.col2 SELECT tab1.col1, tab2.col2
FROM tab1, tab2 FROM tab1, tab2
WHERE tab1.col1 = tab2.col1 WHERE tab1.col1 = tab2.col1
<STRONG>UNION ALL</STRONG> UNION ALL
SELECT tab1.col1, NULL SELECT tab1.col1, NULL
FROM tab1 FROM tab1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2) WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
...@@ -1354,28 +1301,69 @@ PostgreSQL ...@@ -1354,28 +1301,69 @@ PostgreSQL
<H4><A NAME="4.24">4.24</A>) 複数のデータベースを使う問い合わせはどのようにすればできますか?<BR></H4> <H4><A NAME="4.24">4.24</A>) 複数のデータベースを使う問い合わせはどのようにすればできますか?<BR></H4>
<P> <P>
現行(current)を除いて、データベースへの問い合わせ方法はありません。というのもPostgreSQLがデータベース仕様のシステムカタログを読み込むためで、そこには、たとえそのふりをするだけにしろ、データベースを越えて問い合わせをするすべがありません。 現行のデータベース以外への問い合わせ方法はありません。というのもPostgreSQLがデータベース仕様のシステムカタログを読み込むためで、そこには、たとえそのふりをするだけにしろ、データベースを越えて問い合わせをするすべがありません。
<P> <P>
もちろん、クライアントは同時に異なる複数のデータベースへ接続してそこにある情報をマージすることはできます。 <I>/contrib/dblink</I> はデータベース間(cross-database)の問い合わせを関数呼出しにより許します。もちろん、クライアントは同時に接続を別のデータベースへも張らなくてはならず、結果をクライアント側でマージしなくてはなりません。</P>
<P> <P>
<H4><A NAME="4.25">4.25</A>) 関数で複数のロウまたはカラムを返すにはどうしますか?<BR></H4> <H4><A NAME="4.25">4.25</A>) 関数で複数のロウまたはカラムを返すにはどうしますか?<BR></H4>
<P>もし、PL/pgSQL 関数で<i>refcursors</i>を使うと結果の組を返すことができます。<a <P>もし、PL/pgSQL 関数で<i>refcursors</i>を使うと結果の組を返すことができます。<A
href="http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html"> href="http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html">
http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html</a> http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html</A>
23.7.3.3 節をご覧下さい。</P> 23.7.3.3 節をご覧下さい。</P>
<P> <P>
<H4><A name="4.26">4.26</A>)なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することができないのでしょうか?</H4> <H4><A name="4.26">4.26</A>)なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することができないのでしょうか?</H4>
<P>
PL/PgSQL は関数の内容をキャッシュし、その不幸な副作用のため、もし PL/PgSQL 関数が一時テーブルにアクセスすると、そのテーブルはあとでドロップされ再作成されますが、関数が再び呼び出されると、キャッシュされているその関数の内容はまだ古い一時テーブルを依然として指しているからです。解決策は、 PL/PgSQL の中で <SMALL>EXECUTE</SMALL> を一時テーブルアクセスのために使うことです。これで、毎回クエリーのパースし直しを起こすでしょう。</P>
PL/PgSQL は関数の内容をキャッシュし、その不幸な副作用のため、もし PL/PgSQL 関数が一時テーブルにアクセスすると、そのテーブルはあとでドロップされ再作成されますが、関数が再び呼び出されると、キャッシュされているその関数の内容はまだ古い一時テーブルを依然として指しているからです。解決策は、 PL/PgSQL の中で <SMALL>EXECUTE</SMALL> を一時テーブルアクセスのために使うことです。これで、毎回クエリーのパースし直しを起こすでしょう。
<H4><A name="4.27">4.27</A>) どのようなリプリケーションオプションを利用できますか?
</H4>
<P>
マスター/スレーブのリプリケーションオプションがいくつか利用可能です。これらのオプションではマスターのみがデータベースを変更でき、スレーブはデータベースを読むだけです。
<a href="http://gborg.PostgreSQL.org/genpage?replication_research">
http://gborg.PostgreSQL.org/genpage?replication_research</a>
の最後にそれらを一覧にしてあります。
マルチ-マスターのリプリケーションによるソリューションは
<ahref="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a>
にて作業が進められています。
</P>
<SMALL><PRE>
[訳注
JPUG 分散トランザクション開発分科会では、永安悟史さんを中心に2相
コミットの実装を行なっています。
<A href="http://www.postgresql.jp/subcommittee/dt/index.html">http://www.postgresql.jp/subcommittee/dt/index.html</A>
<A href="http://www.snaga.org/jpug-dt/">http://www.snaga.org/jpug-dt/</A>
三谷篤さんによる双方向リプリケーションPGReplicate
<A href="http://www.csra.co.jp/~mitani/jpug/pgreplicate/">http://www.csra.co.jp/~mitani/jpug/pgreplicate/</A>
]
</PRE></SMALL>
<H4><A name="4.28">4.28</A>) どのような暗号化オプションを利用できますか?
</H4>
<UL>
<LI><I>/contrib/pgcrypto</I>
<SMALL>SQL</SMALL>問い合わせの中で使うための沢山の暗号化を含みます。
</LI>
<LI>
クライアントからサーバーへの転送をを暗号化する唯一の方法は<I>pg_hba.conf</I>の中で<I>hostssl</I>を使うことによります。
</LI>
<LI>バージョン7.3 ではデータベースユーザのパスワードは保存される時に自動的に暗号化されます。 それより前のバージョンでは<i>postgresql.conf</i>中で<i>PASSWORD_ENCRYPTION</i>を有効にする必要があります。
</LI>
<LI></LI>サーバーは暗号化ファイルシステムを使って走ることもできます。
</UL>
<P> <P>
<HR> <HR>
<H2><CENTER>PostgreSQLの拡張についての質問</CENTER></H2> <H2 align="center">PostgreSQLの拡張についての質問</H2>
<P> <P>
<H4><A NAME="5.1">5.1</A>) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうのはなぜですか? <H4><A NAME="5.1">5.1</A>) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうのはなぜですか?
...@@ -1399,17 +1387,17 @@ PL/PgSQL ...@@ -1399,17 +1387,17 @@ PL/PgSQL
<P><H4><A NAME="5.4">5.4</A>) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか? <P><H4><A NAME="5.4">5.4</A>) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか?
</H4> </H4>
<P> いくつかの <I>Makefile</I> がインクルード・ファイルに対して適切な依存関係を持っていません。<I>make clean</I> をしてからもう一度 <I>make</I> を行なわなくてはなりません。もし、<small>GCC</small> をお使いであれば <i>configure</i><i>--enable-depend</i> オプションを使って、コンパイラに依存関係を自動的に調べさせることもできます。 <P> いくつかの <I>Makefile</I> がインクルード・ファイルに対して適切な依存関係を持っていません。<I>make clean</I> をしてからもう一度 <I>make</I> を行なわなくてはなりません。もし、<SMALL>GCC</SMALL> をお使いであれば <i>configure</i><i>--enable-depend</i> オプションを使って、コンパイラに依存関係を自動的に調べさせることもできます。
<HR> <HR>
<small><PRE> <SMALL><PRE>
[訳注: [訳注:
日本語版の製作については以下の通りです。 日本語版の製作については以下の通りです。
最終更新日: 2002年08月25 最終更新日: 2002年10月18
翻訳者: 桑村 潤 (<A HREF="mailto:juk@postgresql.jp">Jun Kuwamura &lt;juk@postgresql.jp&gt;</A>) 翻訳者: 桑村 潤 (<A HREF="mailto:juk@PostgreSQL.jp">Jun Kuwamura &lt;juk@PostgreSQL.jp&gt;</A>)
このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます): このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます):
...@@ -1436,13 +1424,13 @@ Atsushi SUGAWARA &lt;asugawar at f3.dion.ne.jp&gt;</A>) ...@@ -1436,13 +1424,13 @@ Atsushi SUGAWARA &lt;asugawar at f3.dion.ne.jp&gt;</A>)
日本語版のこの文書は、以下からもたどれます。 日本語版のこの文書は、以下からもたどれます。
<A HREF="http://www.rccm.co.jp/~juk/pgsql/">http://www.rccm.co.jp/~juk/pgsql/</A>(FAQ和訳 PostgreSQL についてよくある質問) <A HREF="http://www.rccm.co.jp/~juk/pgsql/">http://www.rccm.co.jp/~juk/pgsql/</A>(FAQ和訳 PostgreSQL についてよくある質問)
<A HREF="http://www.postgresql.jp/subcommittee/jpugdoc/">http://www.postgresql.jp/subcommittee/jpugdoc/</A>JPUG文書・書籍関連分科会 <A HREF="http://www.PostgreSQL.jp/subcommittee/jpugdoc/">http://www.PostgreSQL.jp/subcommittee/jpugdoc/</A>JPUG文書・書籍関連分科会
<A HREF="http://www.linux.or.jp/JF/">http://www.linux.or.jp/JF/</A>Linux JFプロジェクト <A HREF="http://www.linux.or.jp/JF/">http://www.linux.or.jp/JF/</A>Linux JFプロジェクト
<A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/">http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/</A> <A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/">http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/</A>
なお、この和訳に関するご意見は(<A HREF="mailto:juk@postgresql.jp">juk@postgresql.jp</A>)までお寄せ下さい。 なお、この和訳に関するご意見は(<A HREF="mailto:juk@PostgreSQL.jp">juk@PostgreSQL.jp</A>)までお寄せ下さい。
] ]
</PRE></small> </PRE></SMALL>
</BODY> </BODY>
</HTML> </HTML>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment