diff --git a/doc/FAQ_japanese b/doc/FAQ_japanese index c14810d7164e8a4bbac16d7bdd4b602391298986..24de86bd8c6b832dfaad16eaf01e86a4dd03e806 100644 --- a/doc/FAQ_japanese +++ b/doc/FAQ_japanese @@ -1,199 +1,218 @@ -PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ) -原文最終更新日: Sun Oct 13 23:15:09 EDT 2002 - -現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us) -Maintainer of Japanese Translation: Jun Kuwamura (juk@PostgreSQL.jp) - -この文書の最新版は http://www.PostgreSQL.org/docs/faq-english.html で見ることが -できます。 - -プラットホームに特有の質問については: http://www.PostgreSQL.org/users-lounge/ -docs/faq.html -に回答があります。 - -(以下、訳者による注釈を [訳注: と ] とで囲んで記します。) + PostgreSQL(ポストグレス・ゥ紂次Ε┘�)についてよくある質問とその解答(FAQ) + + 原文最終更新日: Mon Mar 17 11:32:59 EST 2003 + + 現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us) + Maintainer of Japanese Translation: Jun Kuwamura (juk@PostgreSQL.jp) + + この文書の最新版は http://www.PostgreSQL.org/docs/faqs/FAQ.html + で見ることがでい泙后� + + プラットホームに特佑亮遡笋砲弔い討�: + http://www.PostgreSQL.org/users-lounge/docs/index.html + に回答があります。 + +(以下、訳者による注釈を [訳注: と ] とで囲んで気靴泙后�) [訳注: 日本語版製作についてのメモは最後尾へ移動しました。 - 日本語版のこの文書は 本家 "User's Lounge" の "Collection of FAQs" の - "Japanese" という見出しのところにあります。また、以下のサイトにも + 日本語版のこの文書は 本家 "Docs" の "Frequently Asked Questions" の + ところに "Japanese FAQ" という見出であります。また、以下のサイトにも あります。 http://www.PostgreSQL.jp/subcommittee/jpugdoc/ http://www.rccm.co.jp/~juk/pgsql/ http://www.linux.or.jp/JF/ - この和訳についてお気づきの点は(juk@PostgreSQL.jp)までメールでお寄せ下さい。 + この和訳についてお気づい療世�(juk@PostgreSQL.jp)までメールでお寄せ下さ� +ぁ� - 2002年10月16日 桑村 潤 + 2003年04月10日 桑村 潤 ] - - -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - 一般的な質問 - -1.1) PostgreSQLとは何ですか?何と読みますか? -1.2) PostgreSQLの著作権はどうなってますか? -1.3) PostgreSQLの動作するUnixプラットホームは? -1.4) Unix以外の移植版で使えるものは? -1.5) PostgreSQLはどこから入手できますか? -1.6) サポートはどこで受けられますか? -1.7) 最新版はどれですか -1.8) どのような文書がありますか? -1.9) 既知のバグや未だ無い機能はどうやって見つけますか? -1.10) SQLはどうすれば学べますか? -1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか? -1.12) 開発チームにはどのように参加しますか? -1.13) バグレポートはどのように発信しますか? -1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか? -1.15) PostgreSQLを資金面で援助するにはどうすればよいですか? - - ユーザー・クライアントの質問 - -2.1) PostgreSQL の ODBC ドライバーはありますか? -2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか? -2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポートジ -ェネレータや埋め込み問い合わせ言語インターフェースはありますか? -2.4) どのような言語で PostgreSQL と通信できすか? - - 管理上の質問 - -3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか? -3.2) postmaster を走らせると、 Bad System Call とかコア・ダンプしたとのメッセー -ジが出ます。なぜですか? -3.3) postmaster を走らせようとすると、 IpcMemoryCreate エラーが出ます。なぜです -か? -3.4) postmasterを走らせようとすると、 IpcSemaphoreCreate エラーが出ます。なぜで -すか? -3.5) 他のホストからの接続はどのように制御しますか? -3.6) より良い性能を得るためには、データベース・エンジンをどのように調整すれば良 -いですか? -3.7) どのようなデバグ機能が使えますか? -3.8) 接続しようとするときに 'Sorry, too many clients' が出るのはなぜですか? -3.9) pgsql_tmp ディレクトリの中には何がありますか? -3.10) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしな -くてはならないのはなぜですか? - - 操作上の質問 - -4.1) バイナリ・カーソルと通常カーソルとの違いは何ですか? -4.2) 最初の数ロウのみを select するにはどうしますか? -4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか? -4.4) テーブルからカラムの削除はどのようにしますか? -4.5) ロウ、テーブル、データベースの最大サイズは? -4.6) 一般的なテキストファイルからデータを保存するには、データベースのディスク容 -量はどのくらい必要ですか? -4.7) 定義されたテーブル、インデックス、データベース、および、ユーザをどのように -して見つけ出しますか? -4.8) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか -? -4.9) 問い合わせオブティマイザがどのように問い合わせを評価するかを見るにはどうし -ますか? -4.10) R-tree インデックスとは何ですか? -4.11) 遺伝的問い合わせ最適化とは何ですか? -4.12) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実 -現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのように使 -いますか? -4.13) 問い合わせの中で、フィールドが NULL であることを検出するにはどうしますか -? -4.14) 色々な文字型のそれぞれの違いは何ですか? -4.15.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? -4.15.2) SERIALデータ型に挿入される値は、どうすれば得られますか? -4.15.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使わな -いほうがよいのでしょうか? -4.15.4) トランザクションが中断したときにもういちどシーケンス番号が使われないの -はなぜですか?シーケンス/SERIALカラムに空きがあるのはなぜですか? -4.16) OID とは何ですか? TID とは何ですか? -4.17) PostgreSQL で使われるいくつかの用語の意味は何ですか? -4.18) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るのはな -ぜですか? -4.19) どのバージョンの PostgreSQL を走らせているのかを調べるにはどうしますか? -4.20) ラージオブジェクトの操作で、invalid large obj descriptorと出るのはなぜで -すか? -4.21) 現在の時刻がデフォルトとなるようなカラムはどのようにつくりますか? -4.22) なぜ、INを使う副問い合わせがとても遅いのですか? -4.23) 外部結合(outer join)はどのように実現しますか? -4.24) 複数のデータベースを使う問い合わせはどのようにすればできますか? -4.25) 関数で複数のロウまたはカラムを返すにはどうしますか? -4.26) なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することがで -きないのでしょうか? -4.27) どのようなリプリケーションオプションを利用できますか? -4.28) どのような暗号化オプションを利用できますか? - - PostgreSQLの拡張についての質問 - -5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうの -はなぜですか? -5.2) PostgreSQL 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクトに -貢献したいのですが? -5.3) タプルを返す C言語の関数はどのように書きますか? -5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜ -ですか? - -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - 一般的な質問 - -1.1) PostgreSQL とは何ですか?何と読みますか? - -Post-Gres-Q-L.(ポスト - グレス - キュー - エル) と発音します。 - -PostgreSQL は次世代 DBMS 研究用のプロトタイプであった POSTGRES データベース管理 -システムの改良版です。PostgreSQL は POSTGRES の強力なデータ・モデルと豊富なデー -タ・タイプ(型)を保持しながら、POSTGRES で使われた PostQuel 問い合わせ言語を、拡 -張した SQL のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利 -用できます。 - -PostgreSQL の開発は、PostgreSQL 開発メーリングリストに参加している開発者達のチ -ームですべて行なわれています。現在の座長は Marc G. Fournier ( -scrappy@PostgreSQL.org )です。(下記の1.6節に参加の仕方があります。)現在、このチ -ームが PostgreSQL 開発のすべての面倒をみています。 - -Postgres95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen でしたが、その他大勢 -の人々がこのコードの移植、テスト、デバグ、および、改良に参加しました。 -PostgreSQL の派生元コードである POSTGRES はカリフォルニア大学バークレイ校におい -て、 Michael Stonebraker 教授の指揮のもと、多くの学生、卒業生、本職のプログラマ -たちの努力により作られました。 - -バークレイにおけるこのソフトウェアのもとの名前は Postgres でしたが、SQL の機能 -が追加された 1995 年にその名前は Postgres95 に変更され、1996 年の終りにその名前 -は PostgreSQL に変更されました。 - -1.2) PostgreSQL の著作権はどうなってますか? - -PostgreSQL は下記の著作権に従います。 + _________________________________________________________________ + + 一般的な質問 + + 1.1) PostgreSQLとは何ですか? 何と読みますか? + 1.2) PostgreSQLの著作権はどうなってますか? + 1.3) PostgreSQLの動作するUnixプラットホームは? + 1.4) Unix以外の移植版で使えるものは? + 1.5) PostgreSQLはどこから入手でい泙垢�� + 1.6) サポートはどこで受けられますか? + 1.7) 最新版はどれですか + 1.8) どのような文書がありますか? + 1.9) 既知のバグや未だ無い機能はどうやって見つけますか? + 1.10) SQLはどうすれば学べますか? + 1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか? + 1.12) 開発チームにはどのように参加しますか? + 1.13) バグレポートはどのように発信しますか? + 1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか? + 1.15) PostgreSQLを資金面で援助するにはどうすればよいですか? + + ユーザー・クライアントの質問 + + 2.1) PostgreSQL の ODBC ドライバーはありますか? + 2.2) PostgreSQL を Web + ページと連携させるにはどんなツールがありますか? + 2.3) PostgreSQL にグラフィカル・ユーザインターフェイスはありますか? + 2.4) どのような言語で PostgreSQL と通信でい垢�� + + 管理上の質問 + + 3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールでき + ますか? + 3.2) postmaster を走らせると、 Bad System Call + とかコア・ダンプしたとのメッセージが出ます。なぜですか? + 3.3) postmaster を走らせようとすると、 IpcMemoryCreate + エラーが出ます。なぜですか? + 3.4) postmasterを走らせようとすると、 IpcSemaphoreCreate + エラーが出ます。なぜですか? + 3.5) 他のホストからの接続はどのように制御しますか? + 3.6) より良い性 + 能を得るためには、データベース・エンジンをどのように調整すれば良いです + か? + 3.7) どのようなデバグ機能が使えますか? + 3.8) 接続しようとするとい� 'Sorry, too many clients' + が出るのはなぜですか? + 3.9) pgsql_tmp ディレクトリの中には何がありますか? + 3.10) + PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをし + なくてはならないのはなぜですか? + + 操作上の質問 + + 4.1) バイナリ・カーソルと通常カーソルとの違いは何ですか? + 4.2) 最初の数ロウのみを select するにはどうしますか? + 4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか? + 4.4) テーブルからカラムの削除はどのようにしますか? + 4.5) ロウ、テーブル、データベースの最大サイズは? + 4.6) 一般的なテキ + ストファイルからデータを保存するには、データベースのディスク容量はどの + くらい必要ですか? + 4.7) + 定義されたテーブル、インデックス、データベース、および、ユーザをどのよ + うにして見つけ出しますか? + 4.8) + 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜで + すか? + 4.9) + 問い合わせオブティマイザがどのように問い合わせを評価するかを見るにはど + うしますか? + 4.10) R-tree インデックスとは何ですか? + 4.11) 遺伝的問い合わせ最適化とは何ですか? + 4.12) + 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように + 実現しますか?大文字と小文字とを区別しない検索のためのインデックスはど + のように使いますか? + 4.13) 問い合わせの中で、フィールドが NULL + であることを検出するにはどうしますか? + 4.14) 色々な文字型のそれぞれの違いは何ですか? + 4.15.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? + 4.15.2) SERIALデータ型に挿入される値は、どうすれば得られますか? + 4.15.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() + は使わないほうがよいのでしょうか? + 4.15.4) トランザクションが中断したとき + にもういちどシーケンス番号が使われないのはなぜですか?シーケンス/SERI + ALカラムに空い�△襪里呂覆爾任垢�� + 4.16) OID とは何ですか? TID とは何ですか? + 4.17) PostgreSQL で使われるいくつかの用語の意味は何ですか? + 4.18) エラーメッセージ "ERROR: Memory exhausted in + AllocSetAlloc()"が出るのはなぜですか? + 4.19) どのバージョンの PostgreSQL + を走らせているのかを調べるにはどうしますか? + 4.20) ラージオブジェクトの操作で、invalid large obj + descriptorと出るのはなぜですか? + 4.21) + 現在の時刻がデフォルトとなるようなカラムはどのようにつくりますか? + 4.22) なぜ、INを使う副問い合わせがとても遅いのですか? + 4.23) 外部結合(outer join)はどのように実現しますか? + 4.24) 複数のデータベースを使う問い合わせはどのようにすればでい泙垢�� + 4.25) 関数で複数のロウまたはカラムを返すにはどうしますか? + 4.26) なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop + することがでい覆い里任靴腓Δ�� + 4.27) どのようなリプリケーションオプションを利用でい泙垢�? + 4.28) どのような暗号化オプションを利用でい泙垢�? + + PostgreSQLの拡張についての質問 + + 5.1) 自分で書いたユーザ定義関数を psql + の中で実行するとコア・ダンプしてしまうのはなぜですか? + 5.2) PostgreSQL + 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクトに貢献した + いのですが? + 5.3) タプルを返す C言語の関数はどのように書い泙垢�� + 5.4) + ソース・ファイルを変更しました。再コンパイルしても変化が見られないのは + なぜですか? + _________________________________________________________________ + + 一般的な質問 + + 1.1) PostgreSQL とは何ですか? 何と読みますか? + + Post-Gres-Q-L.(ポスト - グレス - ゥ紂� - エル) と発音します。 + + PostgreSQL は次世代 DBMS 研究用のプロトタイプであった POSTGRES + データベース管理システムの改良版です。PostgreSQL は POSTGRES + の強力なデータ・モデルと豊 + 富なデータ・タイプ(型)を保持しながら、POSTGRES で使われた PostQuel + 問い合わせ言語を、拡張した SQL のサブセットに置き + 換えています。PostgreSQL は無料で完全なソースを利用でい泙后� + + PostgreSQL の開発は、PostgreSQL + 開発メーリングリストに参加している開発者達のチームですべて行なわれてい + ます。現在の座長は Marc G. Fournier (scrappy@PostgreSQL.org + )です。(下気�1.6節に参加の仕方があります。)現在、このチームが + PostgreSQL 開発のすべての面倒をみています。 + + Postgres95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen + でしたが、その他大勢の人々がこのコードの移植、テスト、デバグ、および、 + 改良に参加しました。PostgreSQL の派生元コードである POSTGRES + はカリフォルニア大学バークレイ校において、 Michael Stonebraker + 教授の指揮のもと、多くの学生、卒業生、本職のプログラマたちの努力により + 作られました。 + + バークレイにおけるこのソフトウェアのもとの名前は Postgres + でしたが、SQL の機能が追加された 1995 年にその名前は Postgres95 + に変更され、1996 年の終りにその名前は PostgreSQL に変更されました。 + + 1.2) PostgreSQL の著作権はどうなってますか? + + PostgreSQL は下気涼�邯△暴召い泙后� [訳注: - 正文は英語です。参考として、訳文を併記掲載します。 + 正文は英語です。参考として、訳文を併儀悩椶靴泙后� ] - -PostgreSQL Data Base Management System - -Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group Portions -Copyright (c) 1994-6 Regents of the University of California - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose, without fee, and without a written agreement is -hereby granted, provided that the above copyright notice and this paragraph and -the following two paragraphs appear in all copies. - -IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR -DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST -PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF -THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -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 -THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, -SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + PostgreSQL Data Base Management System + + Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group + Portions Copyright (c) 1994-6 Regents of the University of California + + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose, without fee, and without a written + agreement is hereby granted, provided that the above copyright notice + and this paragraph and the following two paragraphs appear in all + copies. + + IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY + FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, + INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND + ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + INCLUDING, 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 THE UNIVERSITY OF + CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, + UPDATES, ENHANCEMENTS, OR MODIFICATIONS. POSTGRESQL データベース管理システム 部分的著作権 (c) 1996-2002, PostgreSQL国際開発チーム 部分的著作権 (c) 1994-6 カリフォルニア大学本校 - 本ソフトウェアおよびその文書一式は上記の著作権表示と、この文章 + 本ソフトウェアおよびその文書一式は上気涼�邯�充┐函△海諒絃� およびこれに続く二つの段落が全ての複製に添付されている限りにおい て、使用、複製、修正および配付の許可を、いかなる目的であっも、無 償でかつ同意書無しに行なえることをここに認めます。 @@ -204,65 +223,65 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. を受けていたとしても、一切の責任を負いません。 カリフォルニア大学は、商用目的における暗黙の保証と、特定目的で - の適合性に関してはもとより、これらに限らず、いかなる保証も放棄す + の適合世亡悗靴討呂發箸茲蝓△海譴蕕妨造蕕此△い�覆詈歉擇睚鉸�� ることを明言します。以下に用意されたソフトウェアは「そのまま」を 基本原理とし、カリフォルニア大学はそれを維持、支援、更新、改良あ るいは修正する義務を負いません。 [訳注: - 著作権に関する正文は上記の英語による表記です。日本語訳はあくまで + 著作権に関する正文は上気留儻譴砲茲詆週です。日本語訳はあくまで 参考です。 ] - -上記はBSDライセンスで古きオープンソースのライセンスです。ソースコードがどのよう -に使われようとも制限しません。好ましいことなので、我々もそれを変えるつもりはあ -りません。 - -1.3) PostgreSQL の動作環境は? - -一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずです -。リリースの時点で実際にテストを行なったことの報告がなされたプラットホームにつ -いてはインストール手引書に列挙してあります。 - -1.4) Unix以外の移植版で使えるものは? - -クライアント - -MS Windows プラットホーム上で走せるために、libpq C ライブラリ、psql、その他のイ -ンターフェース、および、クライアントアプリケーションをコンパイルすることは可能 -です。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートさ -れている Unix プラットホーム上で走るサーバと通信します。 - -Win32 libpq ライブラリと psql を作るために、win32.mak が配布に含まれてます。 -PostgreSQLは ODBC クライアントとも通信できます。 - -サーバ - -現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベース -サーバは Windows NT と Win2k 上で稼働しています。配布に含まれるpgsql/doc/ -FAQ_MSWIN、あるいは、http://www.PostgreSQL.org/docs/faq-mswin.htmlにある MS -Windows FAQ をご覧下さい。 - -MS Win NT/2000/XP ネイティブ版への移植が現在進行中です。 - -[訳注: - -Win32ネイティーブ版(Win32 Native version) - + 上気�BSDライセンスで古ぅ�璽廛鵐宗璽垢離薀ぅ札鵐垢任后�宗璽好魁璽� + がどのように使われようとも制限しません。好ましいことなので、我々もそれ + を 変えるつもりはありません。 + + 1.3) PostgreSQL の動作環兇蓮� + + 一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられる + はずです。リリースの時点で実際にテストを行なったことの報告がなされたプ + ラットホームについてはインストール手引書に列挙してあります。 + + 1.4) Unix以外の移植版で使えるものは? + + クライアント + + MS Windows プラットホーム上で走せるために、libpq C + ライブラリ、psql、その他のインターフェイス、および、クライアントアプリ + ケーションをコンパイルすることは可能です。この場合、クライアントを MS + Windows 上で走らせて、TCP/IP 経由でサポートされている Unix + プラットホーム上で走るサーバと通信します。 + + Win32 libpq ライブラリと psql を作るために、win32.mak + が配布に含まれてます。PostgreSQLは ODBC クライアントとも通信でい泙后� + + サーバ + + 現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL + データベースサーバは Windows NT と Win2k + 上で稼働しています。配布に含まれるpgsql/doc/FAQ_MSWIN、あるいは、http: + //www.PostgreSQL.org/docs/faqs/faq-mswin.htmlにある MS Windows FAQ + をご覧下さい。 + + MS Win NT/2000/XP ネイティブ版への移植が現在進行中です。 + [訳注: + + Win32ネイティーブ版(Win32 Native version) + Windows-Native サーバー & クライアントパッケージが斉藤さんにより 維持管理されています。 http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html (Windows-Native Server&Client Package for PostgreSQL by Hiroshi Saito) http://hp.vector.co.jp/authors/VA023283/PostgreSQLe.html - -] - -1.5) PostgreSQL はどこから入手できますか? - -PostgreSQL の大元の anonymous ftp サイトは ftp://ftp.PostgreSQL.org/pub/ です。 -ミラーサイトについては、我々のメイン Web ページをご覧下さい。 + ] + + 1.5) PostgreSQL はどこから入手でい泙垢�� + + PostgreSQL の大元の anonymous ftp サイトは + ftp://ftp.PostgreSQL.org/pub/ です。 + ミラーサイトについては、我々のメイン Web ページをご覧下さい。 [訳注: 以下は日本のミラーサイトです: @@ -280,295 +299,320 @@ PostgreSQL Japan: ftp://ring.aist.go.jp/pub/misc/db/PostgreSQL/ ] -1.6) サポートはどこで受けられますか? - -主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に関す -ることであれば議論ができます。このリストへの参加のは、電子メールの本文(Subject -行ではありません)に次の2行を書いて、 + 1.6) サポートはどこで受けられますか? + + 主要なメーリング・リストは: + pgsql-general@PostgreSQL.orgです。PostgreSQL + に関することであれば議論ができ + ます。このリストへの参加のは、電子メールの本文(Subject + 行ではありません)に次の2行を書いて、 subscribe end -pgsql-general-request@PostgreSQL.org へ送って下さい。 - -ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"に: + pgsql-general-request@PostgreSQL.org へ送って下さい。 + + ダイジェスト版のメーリング・リストもあります。このリストへの参加は + "本文"に: subscribe end -と書いて pgsql-general-digest-request@PostgreSQL.org へ電子メールを送って下さい -。 - -ダイジェスト版は、メインリストで受信するメッセージが 30k 程度溜る毎にダイジェス -ト版リストのメンバーに送付されます。 -バグレポート用のメーリングリストもあります。このリストへの参加は "本文"といっし -ょに: bugs-request@PostgreSQL.org へ電子メールを送って下さい。 - -開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メ -ールの本文に: + と書いて pgsql-general-digest-request@PostgreSQL.org + へ電子メールを送って下さい。 + + ダイジェスト版は、メインリストで受信するメッセージが 30k + 程度溜る毎にダイジェスト版リストのメンバーに送付されます。 + + バグレポート用のメーリングリストもあります。このリストへの参加は + "本文"といっしょに: bugs-request@PostgreSQL.org + へ電子メールを送って下さい。 + + 開発者の議論のためのメーリングリストも利用でき + ます。このリストへの参加は電子メールの本文に: subscribe end -と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。 - -http://www.PostgreSQL.org - -EFNet に #PostgreSQL という IRC チャンネルもあります。 UNIX コマンドでirc -c '# -PostgreSQL' "$USER" irc.phoenix.net を使います。 + と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さ + い。 + + http://www.PostgreSQL.org + + EFNet に #PostgreSQL という IRC チャンネルもあります。 UNIX + コマンドでirc -c '#PostgreSQL' "$USER" irc.phoenix.net を使います。 + [訳注: - 1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。 + 1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー +かい)、略称JPUGが設立されました。 JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場です。 - 正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営を助けています。 + 正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営� +鮟�韻討い泙后� 詳しくは、JPUG のWeb サイト: http://www.PostgreSQL.jp/ をご覧ください。会員登録も可能となっています。 - 1990年代中ごろより、ポストグレスの日本語メーリング・リストを石井 達夫さんが主催しています。詳細は、 + 1990年代中ごろより、ポストグレスの日本語メーリング・リストを石井 達夫 +さんが主催しています。詳細は、 http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html - をご覧下さい。アーカイブを、いわきりさんのpgsql-jp ML検索システム + をご覧下さい。アーカイブを、いわい蠅気鵑�pgsql-jp ML検索システム http://datula.mio.org/~iwakiri/pgsql_jp/ - で検索することもできます。 + で検索することもでい泙后� ] - -商用サポート会社のリストはhttp://www.PostgreSQL.org/users-lounge/ -commercial-support.htmlにあります。 - + 商用サポート会社のリストはhttp://www.ca.PostgreSQL.org/users-lounge/co + mmercial-support.htmlにあります。 + [訳注: - 日本では、SRA Inc. オープンシステム事業部 にて商用サポートが行なわれています。 - ミラクル・リナックス株式会社 で "Miracle Linux for PostgreSQL" の販売とサポートが + 日本では、SRA Inc. オープンシステム事業部 にて商用サポートが行なわれて +います。 + ミラクル・リナックス株式会社 で "Miracle Linux for PostgreSQL" の販売と +サポートが 開始されました。 ] -1.7) 最新版はどれですか - -PostgreSQL の最新版はバージョン 7.2.3 です。 - -我々は、4カ月毎にメジャーリリースを行なうことを計画しています。 - -1.8) どのような文書がありますか? - -配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)お -よびいくつかの小さなテスト例題が含まれます。/doc ディレクトリをご覧下さい。また -、マニュアルは、 http://www.PostgreSQL.org/users-lounge/docs/ でオンラインでも -閲覧できます。 + 1.7) 最新版はどれですか + + PostgreSQL の最新版はバージョン 7.3.2 です。 + + 我々は、4カ月毎にメジャーリリースを行なうことを計画しています。 + + 1.8) どのような文書がありますか? + + 配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・� + 據璽�)およびいくつかの小さなテスト例題が含まれます。/doc + ディレクトリをご覧下さい。また、マニュアルは、 + http://www.ca.PostgreSQL.org/users-lounge/docs/ + でオンラインでも閲覧でい泙后� [訳注: (株)SRAと日本ポストグレスユーザー会で翻訳され、 「PostgreSQL オフィシャルマニュアル」 として出版されています。 ] - -オンラインで参照できる PostgreSQL の本も2冊あります。http://www.PostgreSQL.org/ -docs/awbook.html + オンラインで参照でい� PostgreSQL + の本も2冊あります。http://www.PostgreSQL.org/docs/awbook.html [訳注: 日本ポストグレスユーザー会の 「PostgreSQL Book翻訳分科会」 にて翻訳されました。 ] -および、 http://www.commandprompt.com/ppbook/ です。購入可能な書籍の目録は、 -http://www.jp.PostgreSQL.org/books/ にあります。 PostgreSQL 技術情報記事も、 -http://techdocs.PostgreSQL.org/ にあります。 - -[訳注: 和訳文書は、日本ポストグレスユーザー会のhttp://www.postgresql.jp/ -document/ をごらん下さい。 ] - -psql も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴らしい -\d コマンドを持ちます。 - -我々の Web サイトには、もっと沢山の文書があります。 - -1.9) 既知のバグや未だ無い機能はどうやって見つけますか? - -PostgreSQLは拡張されたSQL-92のサブセットをサポートします。我々のページの TODO -リストに、既知のバグや欠落機能や将来計画についての記述があります。 -1.10) SQL はどうすれば学べますか? - -http://www.PostgreSQL.org/docs/awbook.html にあるPostgreSQL本で SQL を教えてい -ます。 + および、 http://www.commandprompt.com/ppbook/ です。 + 購入可能な書籍の目録は、http://www.jp.PostgreSQL.org/books/ + にあります。 PostgreSQL 技術情報技�癲�http://techdocs.PostgreSQL.org/ + にあります。 + + [訳注: + 和訳文書は、日本ポストグレスユーザー会のhttp://www.postgresql.jp/docum + ent/ をごらん下さい。 ] + + psql + も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴ら + しい \d コマンドを持ちます。 + + 我々の Web サイトには、もっと沢山の文書があります。 + + 1.9) 既知のバグや未だ無い機能はどうやって見つけますか? + + PostgreSQLは拡張されたSQL-92のサブセットをサポートします。 + 我々のページの TODO リストに、既知のバグや欠落機能や将 + 来計画についての欺劼�△蠅泙后� + + 1.10) SQL はどうすれば学べますか? + + http://www.PostgreSQL.org/docs/awbook.html にあるPostgreSQL本で SQL + を教えています。 [訳注: 日本ポストグレスユーザー会の 「PostgreSQL Book翻訳分科会」 にて翻訳され出版されています。 ] - -その他にも PostgreSQL本として、http://www.commandprompt.com/ppbook があります。 -素晴らしい手引書は、http://www.intermedia.net/support/sql/sqltut.shtm, http:// -ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM, そして、http:// -sqlcourse.com にあります。 - -その他では、 "Teach Yourself SQL in 21 Days, Second Edition" が http:// -members.tripod.com/er4ebus/sql/index.htmにあります。 - -多くのユーザに、 The Practical SQL Handbook, Bowman Judith S. et al., -Addison-Wesley が好評です。その他に、The Complete Reference SQL, Groff et al., -McGraw-Hill のようなのもあります。 - + その他にも PostgreSQL本として、http://www.commandprompt.com/ppbook + があります。 + 素晴らしい手引書は、http://www.intermedia.net/support/sql/sqltut.shtm, + http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM, + そして、http://sqlcourse.com にあります。 + + その他では、 "Teach Yourself SQL in 21 Days, Second Edition" が + http://members.tripod.com/er4ebus/sql/index.htmにあります。 + + 多くのユーザに、 The Practical SQL Handbook, Bowman Judith S. et al., + Addison-Wesley が好評です。 その他に、The Complete Reference SQL, + Groff et al., McGraw-Hill のようなのもあります。 + [訳注: 石井達夫氏による日本語の参考文献の紹介ページ - 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.htm +l があります。 近藤直文氏の「初心者向のDB設計入門・SQL入門参考書紹介」のコーナー http://www.shonan.ne.jp/~nkon/ipsql/books_SQL.html があります。 堀田倫英氏の「PostgreSQL日本語マニュアル」 http://www.net-newbie.com/ - ではオンラインマニュアルの検索ができます。 + ではオンラインマニュアルの検索がでい泙后� 丸山不二夫氏のUNIX データベース入門 http://www.wakhok.ac.jp/DB/DB.html - もオンラインで読むことができます。 + もオンラインで読むことがでい泙后� ] -1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか? - -対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡単に扱え -ます。 - -1.12) 開発チームにはどのように参加しますか? - -まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に含ま -れているPostgreSQL Developersの文書を読みます。2番目に、pgsql-hackers と -pgsql-patches メーリング・リストを購読(subscribe)します。3番目に、高品質のパッ -チをpgsql-patchesに発信します。 - -およそ十人ちょっとの人達が、PostgreSQL CVSアーカイブにコミットする権限を持って -います。そのそれぞれの人達が沢山の高品質なパッチを発信するので、現在コミッター -となっている人達はそれに追い付くのが大変ですが、我々は彼らがコミットしたパッチ -は高品質であると確信しています。 - -1.13) バグレポートはどのように発信しますか? - -http://www.PostgreSQL.org/bugs/bugs.phpPostgreSQL BugTool (バグツール)のページ -を訪れてみて下さい。バグレポートを提出する仕方についての手引と指針があります。 - -その前に http://PostgreSQL.orgにある最新の FAQ をチェックして下さい。 - -それと同時に ftp サイト ftp://ftp.PostgreSQL.org/pub/で、もっと新しいバージョン -の PostgreSQL あるいはパッチをさがしてみて下さい。 - -1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか? - -ソフトウェアを計る方法にはいくつかあります。機能と性能と信頼性とサポートと価格 -です。 - -機能(Features) - PostgreSQLは、トランザクション、副問い合わせ、トリガー、ビュー、外部キー整 - 合性参照、および、洗練されたロック機構など、大規模商用DBMSが持つ機能をほと - んど持っています。さらに PostgreSQLは、ユーザ定義型、継承、ルール、それから - 、ロック競合を縮小するマルチバージョン同時性制御など、商用DBMSも持ち合わせ - ないような機能をいくつか持ち合わせています。 - -性能(Performance) - PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ち - ます。ある面ではより早かったり、ほかの面ではより遅かったりします。MySQLなど - の特化型データベース・システムにくらべて、PostgreSQLの挿入/更新が遅いのは - 、トランザクションによるオーバーヘッドがあるからです。もちろん、MySQLには上 - 記のFeaturesの節に示すような機能はまったくありません。我々は、PostgreSQLに - 柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛けたりソースコ - ードを解析したりして、性能の改善を続けています。PostgreSQL と MySQL とを比 - 較している面白い Web ページがhttp://openacs.org/why-not-mysql.htmlにありま - す。 - PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複 - 数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有し - ます。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせること - ができます。 - -信頼性(Reliability) - 我々は、DBMSの信頼性が高くなくてはその価値が無いことを理解してます。十分テ - ストして、安定したコードをバグを最小にしてからリリースするように勤めてます - 。それぞれのリリースは少なくとも1カ月以上のベータ・テストを行ない、これまで - のリリースの履歴が、製品版として安定した堅固なリリースであることを物語って - います。この分野では、他のデータベースと比べても遜色がないことに自信を持っ - ています。 - -サポート(Support) - 我々のメーリングリストは、遭遇するいかなる問題についても解決への手助けをし - てくれる、開発者やユーザの大きな集まりへの接点を提供しています。我々は問題 - の解決を保証することはできませんが、商用データベースであっても常に解決され - るわけではありません。開発者や、ユーザ・コミュニティ、マニュアル類、それに - 、ソースコードなどへ直接アクセスできることよって、PostgreSQLのサポートは、 - 他のDBMSサポートよりも優れたものとなっています。御要望に答えて、事柄毎の商 - 用サポートなどもあります(FAQ1.6節をご覧下さい)。 - -価格(Price) - PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあるBSD - スタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで商品に組み - 込むことができます。 + 1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか? + + 対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡 + 単に扱えます。 - -1.15) PostgreSQLを資金面で援助するにはどうすればよいですか? - -PostgreSQLは、我々が始めた 1996年以来、最高クラスの情報基盤を持っています。これ -はすべて、Marc Fournieさんのおかげで、彼はこの基盤を何年にもわたって創造し管理 -してきました。 - -質の良い基盤はオープンソース・プロジェクトにとってはとても大切なもので、前進す -る勢いを失うプロジェクトの分裂を回避します。 - -もちろん、この基盤は安いものではありません。維持し続けるためには毎月あるいは一 -時の経費がかかります。もし、あなたやあなたの会社に、こうした努力のための資金を -助けるために施すことができるようでしたら、https://store.pgsql.com/shopping/から -寄付をお願いします。 - -また、Webページには PostgreSQL,Inc とありますが、そこの"義援(contributions)"ア -イテムは PostgreSQL プロジェクトをサポートするためだけのためで、決して特定の会 -社のための資金のためではありません。もし、手形(check)の方が都合がよければ連絡先 -の住所へお送り下さい。 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - - ユーザー・クライアントの質問 - -2.1) PostgreSQL のための ODBC ドライバーはありますか? - -PsqlODBC と OpenLink ODBC の二つの ODBC ドライバーが利用可能です。 - -PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情報は -ftp://ftp.PostgreSQL.org/pub/odbc/ から取得できます。 - + 1.12) 開発チームにはどのように参加しますか? + + まず最初(1番目)に、最新のソースをダウンロードし、我々の Web + サイトか配布に含まれているPostgreSQL Developersの文書を読みます。 + 2番目に、pgsql-hackers と pgsql-patches + メーリング・リストを購読(subscribe)します。 + 3番目に、高品質のパッチをpgsql-patchesに発信します。 + + およそ十人ちょっとの人達が、PostgreSQL + CVSアーカイブにコミットする権限を持っています。 + そのそれぞれの人達が沢山の高品質なパッチを発信するので、現在コミッター + となっている人達はそれに追い付くのが大変ですが、我々は彼らがコミットし + たパッチは高品質であると確信しています。 + + 1.13) バグレポートはどのように発信しますか? + + http://www.PostgreSQL.org/bugs/bugs.phpPostgreSQL BugTool + (バグツール)のページを訪れてみて下さい。 + バグレポートを提出する仕方についての手引と指針があります。 + + その前に http://PostgreSQL.orgにある最新の FAQ をチェックして下さい。 + + それと同時に ftp サイト + ftp://ftp.PostgreSQL.org/pub/で、もっと新しいバージョンの PostgreSQL + あるいはパッチをさがしてみて下さい。 + + 1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか? + + ソフトウェアを計る方法にはいくつかあります。機能と税修反�蠕� + とサポートと価格です。 + + 機能(Features) + PostgreSQLは、トランザクション、副問い合わせ、トリガー、ビュー� + �杏凜ー整合性 + 参照、および、洗練されたロック機構など、大規模商用DBMSが持つ機� + 修鬚曚箸鵑瓢�辰討い泙后�気蕕� + PostgreSQLは、ユーザ定義型、継承、ルール、それから、ロック競合� + 鮟名�垢襯泪襯船弌璽献腑麁瓜�� + 制御など、商用DBMSも持ち合わせないような機能をいくつか持ち合わ� + 擦討い泙后� + + 税�(Performance) + PostgreSQLは他の商用あるいはオープンソースのデータベースと互角� + 寮� + 能も持ちます。ある面ではより早かったり、ほかの面ではより遅かっ� + 燭蠅靴泙后�MySQLなどの特化型データベース・システムにくらべて、P + ostgreSQLの挿入/更新が遅いのは、トランザクションによるオーバー + ヘッドがあるからです。もちろん、MySQLには上記 + のFeaturesの節に示すような機能はまったくありません。我々は、Pos + tgreSQLに柔軟世筏’柔� + を組み込みながらも、絶えず、プロファイラーに掛けたりソースコー� + 匹魏鮴呂靴燭蠅靴董∪能の改善を続けています。PostgreSQL と MySQL + とを比較している面白い Web + ページがhttp://openacs.org/philosophy/why-not-mysql.htmlにあり� + 泙后� + PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操� + 遒靴泙后J�瑤離丱奪�┘鵐鼻Ε廛蹈札垢�霾鵑鬟蹈奪�靴覆�薀如� + タ・バッファーを共有 + します。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPU� + 覗�蕕擦襪海箸�任ます。 + + 信頼�(Reliability) + 我々は、DBMSの信頼性 + が高くなくてはその価値が無いことを理解してます。十分テストして� + �堕蠅靴織魁璽匹鬟丱阿鮑脳�砲靴討�薀螢蝓璽垢垢襪茲Δ剖个瓩討� + す。それぞれのリリースは少なくとも1カ月以上のベータ・テストを行 + ない、これまでのリリースの履歴が、製品版として安定した堅固なリ� + 蝓璽垢任△襪海箸鯤�譴辰討い泙后�海諒�遒任蓮�召離如璽織戞璽� + と比べても遜色がないことに自信を持っています。 + + サポート(Support) + 我々のメーリングリストは、遭遇するいかなる問題についても解決へ� + 亮蟒�韻鬚靴討�譴襦���圓筌罅璽兇梁腓� + な集まりへの接点を提供しています。我々は問題の解決を保証するこ� + 箸呂任� + ませんが、商用データベースであっても常に解決されるわけではあり� + 泙擦鵝3��圓筺▲罅璽供Ε灰潺絅縫謄�▲泪縫絅▲詢燹△修譴法▲� + ースコードなどへ直接アクセスでき + ることよって、PostgreSQLのサポートは、他のDBMSサポートよりも優� + 譴燭發里箸覆辰討い泙后8耆徊召謀悊┐董∋�阻茲両ν僖汽檗璽箸覆� + もあります(FAQ1.6節をご覧下さい)。 + + 価格(Price) + PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記 + に示してあるBSDスタイルの使用許諾に外れない限り、PostgreSQLのコ + ードを制限無しで商品に組み込むことがでい泙后� + + 1.15) PostgreSQLを資金面で援助するにはどうすればよいですか? + + PostgreSQLは、我々が始めた + 1996年以来、最高クラスの情報基盤を持っています。これはすべて、Marc + Fournieさんのおかげで、彼はこの基盤を何年にもわたって創造し管理してき + ました。 + + 質の良い基盤はオープンソース・プロジェクトにとってはとても大切なもので + 、前進する勢いを失うプロジェクトの分裂を回避します。 + + もちろん、この基盤は安いものではありません。維持し続けるためには毎月あ + るいは一時の経費がかかります。もし、あなたやあなたの会社に、こうした努 + 力のための資金を助けるために施すことができ + るようでしたら、https://store.pgsql.com/shopping/から寄付をお願いしま� + 后� + + また、Webページには PostgreSQL,Inc + とありますが、そこの"義援(contributions)"アイテムは PostgreSQL + プロジェクトをサポートするためだけのためで、決して特定の会社のための資 + 金のためではありません。もし、手形(check)の方が都合がよければ連絡先の� + 蚕蠅悗��蟆爾気ぁ� + _________________________________________________________________ + + ユーザー・クライアントの質問 + + 2.1) PostgreSQL のための ODBC ドライバーはありますか? + + PsqlODBC と OpenLink ODBC の二つの ODBC ドライバーが利用可能です。 + + PsqlODBC は次の場所からダウンロードでい泙后� + http://gborg.postgresql.org/project/psqlodbc/projdisplay.php [訳注: - PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました: - ●http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html - 現在、最新版は井上博司さんのサイトにあります。 + 最新版は井上博司さんのサイトにあります。 ●http://w2422.nsk.ne.jp/~inoue/indexj.html ] - -OpenLink ODBC は http://www.openlinksw.com/から入手できます。標準的な ODBC クラ -イアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム(Win, -Mac, Unix, VMS)から PostgreSQL の ODBC が利用できます。 - -たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリーウ -ェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.uk へ送って -下さい。 -Programmer's Guide の ODBC の章もご覧ください。 - -2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか? - -データベースを裏に持つ Web ページについての素晴らしい紹介が、 -http://www.webreview.comにあります。 - -Web への拡張のためには、PHP が卓越したインターフェースとなっています。http:// -www.php.net/にあります。 + OpenLink ODBC は http://www.openlinksw.com/から入手でい泙后I現狹�� + ODBC + クライアント・ソフトウェアで使えますので、支援しているすべてのプラット + ホーム(Win, Mac, Unix, VMS)から PostgreSQL の ODBC が利用でい泙后� + + たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、 + フリーウェア版はいつでも入手可能のようです。質問は、postgres95@openlin + k.co.uk へ送って下さい。 + Programmer's Guide の ODBC の章もご覧ください。 + + 2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか? + + データベースを裏に持つ Web ページについての素晴らしい紹介が、 + http://www.webreview.comにあります。 + + Web への拡張のためには、PHP + が卓越したインターフェイスとなっています。http://www.php.net/にありま� + 后� [訳注: - PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト + PHPに関する日本語の情報は、2000年4月19日に発造靴親鐱�PHPユーザ会のサ� +ぅ� http://www.php.gr.jp/ あるいは、廣川 類さんのサイト http://www.geocities.jp/rui_hirokawa/php/ にかなりまとめられています。 - 前田 充宏さんにより作られたPHP/FIの日本語パッチが様々な人の手を経てPHP3.0.7に適用されました。 - 現在はPHPJ-DEVにて、 - http://php.jpnnet.com/ - 佐藤さんを中心にマルチバイト拡張として作り直され、最新版はPHP-3.0.18に対応しています。 - 塚田 卓也さんは、PHP4 用の日本語関係の拡張モジュール - ftp://night.fminn.nagano.nagano.jp/php4/ - を用意して下さってます。 - 本家の方で国際化のMLも立ち上がっています。 - PHP-4.2 からマルチバイト拡張文字列として採り入れられました。 ] - -処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm か mod_perl を使い -ます。 + 処理が複雑な場合、多くの人は Perl インターフェイスと CGI.pm か + mod_perl を使います。 [訳注: WDB は、Web から DataBase への Perl の Interface です。 - wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。 + wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD +::Pg の利用が可能と思われます。 現在、WDBI という名前になっているもの http://www.egroups.com/list/wdb-users/ と、WDBの名前のままのもの @@ -576,271 +620,305 @@ www.php.net/ とがあります。その経緯はよくわかりません。 ] - -2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポートジ -ェネレータや埋め込み問い合わせ言語インターフェースはありますか? - -PgAccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この -配布と共に出荷されます。PgAccess にはレポート・ジェネレータもあります。Web ペー -ジはhttp://www.pgaccess.org/です。 - -ecpg という C 言語のための埋め込み SQL 問い合わせ言語インターフェースもあります -。 - -2.4) どのような言語で PostgreSQL と通信できすか? - -以下のものがあります: - - - ・ C (libpq, libpgeasy) - ・ C++ (libpq++) - ・ 埋め込みC (ecpg) - ・ Java (jdbc) - ・ Perl (DBD::Pg and perl5) - ・ ODBC (odbc) - ・ Python (PyGreSQL) - ・ TCL (libpgtcl) - ・ C Easy API (libpgeasy) - ・ PHP ('pg_' 関数群、 Pear::DB) - -その他の利用可能なインターフェースは http://www.PostgreSQL.org/interfaces.html -にあります。 + 2.3) PostgreSQL にグラフィカル・ユーザインターフェイスはありますか? + + もちろん、PostgreSQL + へのグラフィカルインターフェイスがいくつかあります。 その中にPgAccess + http://www.pgaccess.com も含まれます。 PgAdmin II + (http://www.pgadmin.org Win32-only)もあります。 RHDB Admin + (http://sources.redhat.com/rhdb/ )と Rekall ( + http://www.thekompany.com/products/rekall/, proprietary)もありま す。 + PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ) + はPostgreSQLへのWebベースの インターフェイスを提供します。 + + PgAccess + と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェイスがあり、この + 配布と共に出荷されます。PgAccess + にはレポート・ジェネレータもあります。Web + ページはhttp://www.pgaccess.org/です。 + + より詳細なリストについては、http://techdocs.postgresql.org/guides/GUIT + ools をご覧ください。 + + 2.4) どのような言語で PostgreSQL と通信でい垢�� + + 人気のあるほとんどの言語はPostgreSQLへのインターフェイスを持っています + 。 + あなたが使うプログラミング言語の拡張モジュールのリストを覗いてみてくだ + さい。 + + 以下のインターフェイスはPostgreSQLの配布に含まれています。 + * C (libpq, libpgeasy) + * 埋め込みC (ecpg) + * Java (jdbc) + * Python (PyGreSQL) + * TCL (libpgtcl) + + その他の利用可能なインターフェイスは + http://www.PostgreSQL.org/interfaces.html および、 + http://gborg.postgresql.org + のDrivers/Interfacesのセクションにあります。 [訳注: - rubyの作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが - ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。 - http://www.postgresql.jp/interfaces/ruby/ - PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。 - http://www.psn.co.jp/PostgreSQL/pgbash/ - Bashコマンドラインでpostgres に問い合わせできます。 - Perl のモジュールは古くからある Pg と DBI ドライバの DBD::Pg とがあり、 - いずれも Edmund Mergl 氏によるもので CPAN サイトにあります。 永安悟史さんは Palm 版の libpq を開発されました。 http://www.snaga.org/libpq/ ] - - -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - 管理上の質問 - -3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか? - -簡単な方法は、 configure を走らせるときに --prefix オプションを指定することです -。 - -3.2) postmaster を走らせると、Bad System Call とかコア・ダンプしたとのメッセー -ジが出ます。なぜですか? - -さまざまな問題が考えられますが、まず最初にあなたのカーネルに System V IPC の拡 -張がインストールされているかを確認して見てください。PostgreSQL はカーネルによる -共有メモリーとセマフォのサポートを必要とします。 - -3.3) postmaster を走らせようとすると、IpcMemoryCreate エラーが出ます。なぜです -か? - -カーネルが共有メモリーを持つ設定になっていなかったか、でなければ、カーネルに対 -して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大きさは -、使っているアーキテクチャとpostmaster を走らせるときに設定するバッファの数とバ -ックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッファサイズ -のままで、少なくとも約1MBが必要です。 PostgreSQL Administrator's Gide に共有メ -モリーとセマフォについての情報の詳細があります。 - -3.4) postmasterを走らせようとすると、IpcSemaphoreCreate エラーが出ます。なぜで -すか? - -もしエラーメッセージがIpcSemaphoreCreate: semget failed (No space left on -device)であれば、カーネルが十分なセマフォを使えるように構成されていません。 -Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要とします。とりあ -えずの解決策はpostmasterを起動するときに、バックエンドプロセスの数をより少なく -制限をすることです。既定値の32より小さな数のパラメータを-Nで使います。より恒久 -的な解決策は、カーネルのSEMMNS と SEMMNI パラメータを増やすことです。 - -操作不能のセマフォも過度なデータベースアクセスの間にクラッシュを起こす可能性が -あります。 - -もし、エラーメッセージがなにか他のものであれば、カーネルの構成でまったくセマフ -ォのサポートをしていないかもしれません。 PostgreSQL Administrator's Gide に共有 -メモリーとセマフォについての情報の詳細があります。 - -3.5) 他のホストからの接続はどのように制御しますか? - -既定値では、PostgreSQL は unix ドメインソケットを使うローカルマシンからの接続し -か許しません。postmaster 起動に -i フラッグを加え、$PGDATA/pg_hba.conf ファイル -を適切に直して、ホスト主導型の認証を使わないかぎりは他のマシンからは接続できな -いでしょう。これによりTCP/IPの接続が可能になります。 - -操作不能なセマフォも過度のデータベースアクセス中にクラッシュを引き起こすことが -あります。 - -3.6) より良い性能を得るためには、データベース・エンジンをどのように調整すれば良 -いですか? - -確かにインデックスは問い合わせの速度を増します。EXPLAINコマンドで PostgreSQL が -どのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どのイン -デックスが使われているかを見ることができます。 - -もし INSERT を多用している場合は、COPY コマンドを使って大きなバッチ処理でそれを -行なうことを検討して下さい。これは、INSERT を別々に行なうよりもっと高速です。次 -に、BEGIN WORK/COMMIT のトランザクション・ブロックの中に無い文は、それら自身が -それぞれのトランザクションに入っていると見なされます。いくつかの文を一つのトラ -ンザクション・ブロックの中で行なうことを考えて下さい。これによりトランザクショ -ンのオーバーヘッドが減ります。また、大きなデータの変更を行なう際はインデックス -を一度外して、作り直すことを考えてみて下さい。 - -チューニングのオプションがいくつかあります。postmaster を -o -F オプションで起 -動することによって、fsync() を無効にすることができます。これによって、各トラン -ザクション毎に fsync() でディスクを更新するのを止めさせます。 - -postmaster -B オプションを使ってバックエンド・プロセスにより使われる共有メモリ -ー・バッファを大きくすることもできます。もし、このパラメータを高くしすぎると、 -カーネルの共有メモリー空間の制限値を越えてしまっうために postmaster が走らなく -なるでしょう。既定値では、それぞれのバッファの大きさは 8K で、バッファ数は 64 -です。 - -バックエンドを -S オプションを使って、それぞれのバックエンド・プロセスが一時的 -な並べ替えによって使うメモリーの最大サイズを増やすこともできます。その -S の値 -はキロバイト単位で、既定値は 512 (すなわち、512K)です。 - -また、CLUSTER コマンドを使って、テーブルのデータをインデックスに合わせるために -グループ化することもできます。詳しくは、オンラインマニュアルで CLUSTER を見て下 -さい。 - -3.7) どのようなデバグ機能が使えますか? - -PostgreSQL は、デバグのために意味のある、状態情報を報告するいくつかの機能を持ち -ます。 - -まず、--enable-cassert オプションで configure を走らせます。そうしてコンパイル -することにより、沢山の assert() が、バックエンドの進捗状況を監視し、何か予期せ -ぬことが起きるとプログラムを停止するようになります。 - -postmaster と postgres の両方でいくつかのデバグ・オプションの利用ができます。ま -ず、次のように postmaster を起動するときはいつでも、標準出力とエラー出力をログ -・ファイルに送るようにしてあることを確かめて下さい。 + _________________________________________________________________ + + 管理上の質問 + + 3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールでい泙垢�� + + 簡単な方法は、 configure を走らせるとい� --prefix + オプションを指定することです。 + + 3.2) postmaster を走らせると、Bad System Call + とかコア・ダンプしたとのメッセージが出ます。なぜですか? + + さまざまな問題が考えられますが、まず最初にあなたのカーネルに System V + IPC の拡張がインストールされているかを確認して見てください。PostgreSQL + はカーネルによる共優瓮皀蝓爾肇札泪侫�離汽檗璽箸鯢�廚箸靴泙后� + + 3.3) postmaster を走らせようとすると、IpcMemoryCreate + エラーが出ます。なぜですか? + + カーネルが共有 + メモリーを持つ設定になっていなかったか、でなければ、カーネルに対して使 + える共優瓮皀蝓爾梁腓さを大い�瀋蠅垢詆�廚�△蠅泙后6饌療�並腓� + さは、使っているアーゥ謄�船磴�postmaster を走らせるとき + に設定するバッファの数とバックエンドプロセスに依存します。ほとんどのシ + ステムでは、既定値のバッファサイズのままで、少なくとも約1MBが必要です� + � PostgreSQL Administrator's Gide に共有 + メモリーとセマフォについての情報の詳細があります。 + + 3.4) postmasterを走らせようとすると、IpcSemaphoreCreate + エラーが出ます。なぜですか? + + もしエラーメッセージがIpcSemaphoreCreate: semget failed (No space left + on + device)であれば、カーネルが十分なセマフォを使えるように構成されていま� + 擦鵝�Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要と� + 靴泙后�箸蠅△┐困硫魴荳��postmasterを起動するとき + に、バックエンドプロセスの数をより少なく制限をすることです。既定値の32 + より小さな数のパラメータを-Nで使います。より恒久的な解決策は、カーネル + のSEMMNS と SEMMNI パラメータを増やすことです。 + + 操作不能のセマフォも過度なデータベースアクセスの間にクラッシュを + 起こす可能世�△蠅泙后� + + もし、エラーメッセージがなにか他のものであれば、カーネルの構成でまった + くセマフォのサポートをしていないかもしれません。 PostgreSQL + Administrator's Gide に共有 + メモリーとセマフォについての情報の詳細があります。 + + 3.5) 他のホストからの接続はどのように制御しますか? + + 既定値では、PostgreSQL は unix + ドメインソケットを使うローカルマシンからの接続しか許しません。postmast + er 起動に -i フラッグを加え、$PGDATA/pg_hba.conf + ファイルを適切に直して、ホスト主導型の認証を使わないかぎりは他のマシン + からは接続でい覆い任靴腓Α�海譴砲茲�TCP/IPの接続が可能になります。 + + 操作不能なセマフォも過度のデータベースアクセス中にクラッシュを引き + 起こすことがあります。 + + 3.6) より良い性 + 能を得るためには、データベース・エンジンをどのように調整すれば良いですか? + + 確かにインデックスは問い合わせの速度を増します。EXPLAINコマンドで + PostgreSQL + がどのようにあなたの問い合わせを翻訳しているかを見ることができ + 、そして、どのインデックスが使われているかを見ることがでい泙后� + + もし INSERT を多用している場合は、COPY コマンドを使って大き + なバッチ処理でそれを行なうことを検討して下さい。これは、INSERT + を別々に行なうよりもっと高速です。次に、BEGIN WORK/COMMIT + のトランザクション・ブロックの中に無い文は、それら自身がそれぞれのトラ + ンザクションに入っていると見なされます。いくつかの文を一つのトランザク + ション・ブロックの中で行なうことを考えて下さい。これによりトランザクシ + ョンのオーバーヘッドが減ります。また、大き + なデータの変更を行なう際はインデックスを一度外して、作り直すことを考え + てみて下さい。 + + チューニングのオプションがいくつかあります。postmaster を -o -F + オプションで起動することによって、fsync() を無効にすることができ + ます。これによって、各トランザクション毎に fsync() + でディスクを更新するのを止めさせます。 + + postmaster -B + オプションを使ってバックエンド・プロセスにより使われる共有 + メモリー・バッファを大い�垢襪海箸發任� + ます。もし、このパラメータを高くしすぎると、カーネルの共有 + メモリー空間の制限値を越えてしまっうために postmaster + が走らなくなるでしょう。既定値では、それぞれのバッファの大い気� 8K + で、バッファ数は 64 です。 + + バックエンドを -S + オプションを使って、それぞれのバックエンド・プロセスが一時的な並べ替え + によって使うメモリーの最大サイズを増やすこともでい泙后� その -S + の値はゥ蹈丱ぅ斑碓未如�祥蠱佑� 512 (すなわち、512K)です。 + + また、CLUSTER + コマンドを使って、テーブルのデータをインデックスに合わせるためにグルー + プ化することもでい泙后�椶靴�蓮▲�鵐薀ぅ鵐泪縫絅▲襪� CLUSTER + を見て下さい。 + + 3.7) どのようなデバグ機能が使えますか? + + PostgreSQL + は、デバグのために意味のある、状態情報を報告するいくつかの機能を持ちま + す。 + + まず、--enable-cassert オプションで configure + を走らせます。そうしてコンパイルすることにより、沢山の assert() + が、バックエンドの進捗状況を監視し、何か予期せぬことが起き + るとプログラムを停止するようになります。 + + postmaster と postgres + の両方でいくつかのデバグ・オプションの利用がでい泙后�泙此⊆,里茲Δ� + postmaster を起動するとき + はいつでも、標準出力とエラー出力をログ・ファイルに送るようにしてあるこ + とを確かめて下さい。 cd /usr/local/pgsql ./bin/postmaster >server.log 2>&1 & -これにより PostgreSQL の最上部のディレクトリに server.log ファイルが置かれます -。このファイルはサーバーが遭遇した問題やエラーについて有用な情報を含みます。 -Postmaster は更に詳細な情報を報告するための -d オプションを持ちます。その -d オ -プションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大きなログファ -イルを生成することに注意しなくてはなりません。 - -もし、postmasterが走っていなければ、postgresバックエンドをコマンド行から走らせ -ることができ、直接SQL文をタイプすることができます。このやりかたは、デバグ目的の -ときだけお奨めします。セミコロンではなく、改行が問い合わせの終りになることに注 -意してください。もし、デバグシンボルを入れてコンパイルしていれば、デバッガを使 -って何が起きているかを見ることができます。postmaster からバックエンドを開始した -わけではないので、独立な環境で走っているのではなくロック/バックエンドとの対話 -の問題が重複することはありません。 - -もし、postmasterが走っていれば、あるウィンドウで psqlを開始すると、psql で使わ -れる postgres プロセスのPIDが見つかります。デバッガを使って postgresのPIDにアタ -ッチ(attach)します。デバッガの中からブレーク・ポイントをセットし、psql から問い -合わせを発行します。デバグのためにpostgresを始動する場合は、PGOPTIONS="-W n" を -設定でき、それから、psql を開始します。これにより、n 秒開始を遅らせるはずなので -、デバッガでプロセスにアタッチして、ブレークポイントを設定し、開始から順を追っ -て見てゆくことができます。 - -PostgreSQL プログラムには、デバグと性能測定にとても役に立つ -sや -Aや -t 等のオ -プションがあります。 - -何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング( -プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフィー -ル・ファイルは pgsql/data/base/dbname ディレクトリに格納されるでしょう。クライ -アントのプロフィールはクライアントの現行ディレクトリに置かれるでしょう。Linux -でまともなプロファイリングを行うには -DLINUX_PROFILE でコンパイルする必要があり -ます。 - -3.8) 接続しようとするときに 'Sorry, too many clients' が出るのはなぜですか? - -postmasterが同時始動できるバックエンドプロセスに対する制限数を増やす必要があり -ます。 - -既定の最大プロセスは32プロセスです。-Nに適切な値を引数にしてpostmasterを再起動 -するか、PostgreSQL.conf を修正することによって、その値を増やすことができます。 -。既定の構成では-Nは最大1024まで設定できます。もし、もっと必要であればinclude/ -config.hの中のMAXBACKENDSを増加させ、再構築します。もし、望むならconfigureの ---with-maxbackends切替を使って、-Nの既定値を構成時に設定できます。 - -もし、-N を 32よりも大きくするのであれば、-Bも既定の64より大きい値に増加させな -くてはならないし、-B は少なくとも -N の2倍はなくてはならず、おそらく最高性能を -望むならばそれより大きい値が必要なはずです。バックエンドプロセスをたくさんにす -ると、いろいろなUnixカーネル構成パラメータも増やすことが必要になるかもしれませ -ん。共有メモリー・ブロックの最大値(SHMMAX)、セマフォの最大数(SEMMNSとSEMMNI)、 -プロセスの最大数(NPROC)、ユーザ毎の最大プロセス数(MAXUPRC)、開くファイルの最大 -数(NFILEとNINODE も確認事項に含まれます。 PostgreSQLに許されるバックエンドのプ -ロセス数が制限されているのは、システムのリソースを使い果してしまうことを避ける -ためです。 - -6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更する -には、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再構築が必 -要でした。 - -3.9) pgsql_tmp ディレクトリの中には何がありますか? - -問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし -ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大きなス -ペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイ -ルがいくつか生成されます。 - -一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエ -ンドがクラッシュしてしまうとそうはなりません。postmasterの停止とリスタートでこ -れらのファイルはディレクトリから消しさられます。 + これにより PostgreSQL の最上部のディレクトリに server.log + ファイルが置かれます。このファイルはサーバーが遭遇した問題やエラーにつ + いて様僂幣霾鵑魎泙澆泙后�Postmaster は更に詳細な情報を報告するための + -d オプションを持ちます。その -d + オプションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大き + なログファイルを生成することに注意しなくてはなりません。 + + もし、postmasterが走っていなければ、postgresバックエンドをコマンド行か + ら走らせることがでぁ�樟�SQL文をタイプすることができ + ます。このやりかたは、デバグ目的のとき + だけお奨めします。セミコロンではなく、改行が問い合わせの終りになること + に注意してください。もし、デバグシンボルを入れてコンパイルしていれば、 + デバッガを使って何が起い討い襪�鮓�襪海箸�任ます。postmaster + からバックエンドを開始したわけではないので、独立な環境 + で走っているのではなくロック/バックエンドとの対話の問題が重複すること + はありません。 + + もし、postmasterが走っていれば、あるウィンドウで + psqlを開始すると、psql で使われる postgres プロセス + のPIDが見つかります。デバッガを使って + postgresのPIDにアタッチ(attach)します。デバッ + ガの中からブレーク・ポイントをセットし、psql から問い合わせを発行 + します。デバグのためにpostgresを始動する場合は、PGOPTIONS="-W n" + を設定でぁ△修譴�蕁�psql を開始します。これにより、n 秒 + 開始を遅らせるはずなので、デバッガでプロセスにアタッチして、ブレークポ + イ ントを設定し、開始から順を追って見てゆくことがでい泙后� + + PostgreSQL プログラムには、デバグと税渋�蠅砲箸討睫鬚卜�� -sや -Aや + -t 等のオプションがあります。 + + 何という関数がどのくらい実行時間を食っているかを見るために、プロファイ + リング(プロフィール付き + )でコンパイルすることも可能です。そのバックエンドのプロフィール・ファ + イルは pgsql/data/base/dbname + ディレクトリに格納されるでしょう。クライアントのプロフィールはクライア + ントの現行ディレクトリに置かれるでしょう。Linux + でまともなプロファイリングを行うには -DLINUX_PROFILE + でコンパイルする必要があります。 + + 3.8) 接続しようとするとい� 'Sorry, too many clients' が出るのはなぜですか? + + postmasterが同時始動でき + るバックエンドプロセスに対する制限数を増やす必要があります。 + + 既定の最大プロセスは32プロセスです。-Nに適切な値を引数にしてpostmaster + を再起動するか、PostgreSQL.conf + を修正することによって、その値を増やすことがでい泙后� + 。既定の構成では-Nは最大1024まで設定でき + ます。もし、もっと必要であればinclude/config.hの中のMAXBACKENDSを増加� + 気察∈胴獣曚靴泙后�發掘∨召爐覆�configureの + --with-maxbackends切替を使って、-Nの既定値を構成時に設定でい泙后� + + もし、-N を 32よりも大い�垢襪里任△譴弌�-Bも既定の64より大き + い値に増加させなくてはならないし、-B は少なくとも -N + の2倍はなくてはならず、おそらく最高税修鯔召爐覆蕕个修譴茲蠡腓� + い値が必要なはずです。バックエンドプロセスをたくさんにすると、いろいろ + なUnixカーネル構成パラメータも増やすことが必要になるかもしれません。 + 共優瓮皀蝓次Ε屮蹈奪�虜蚤臙�(SHMMAX)、 + セマフォの最大数(SEMMNSとSEMMNI)、 プロセスの最大数(NPROC)、 + ユーザ毎の最大プロセス数(MAXUPRC)、 開くファイルの最大数(NFILEとNINODE + も確認事項に含まれます。 + PostgreSQLに許されるバックエンドのプロセス数が制限されているのは、 + システムのリソースを使い果してしまうことを避けるためです。 + + 3.9) pgsql_tmp ディレクトリの中には何がありますか? + + 問い合わせ実行モジュールによって生成された一時的なファイルが、このディ + レクトリに含まれます。例えば、もし ORDER BY + 句を満たすためにバックエンドの -S パラメータで許可した値よりも大き + なスペースがソートの際に必要だとすると、溢れたデータを保持するために一 + 時的なファイルがいくつかここに生成されます。 + + 一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中で + バックエンドがクラッシュしてしまうとそうはなりません。postmasterの停止 + とリスタートでこれらのファイルはディレクトリから消しさられます。 [訳注: - SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog - 付きで走らせた後、コンパイルとインストールを行ないます。 - 次に、syslog.conf に local0.* の 出力先を指定し(環境変数で変更可能)、 - syslogd に HUP シグナルを送って初期化しておきます。そして、 - $PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S - オプション付きにてサーバモードで起動します。(バージョン 7.1 からは + SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog + 付い覗�蕕擦晋紂▲灰鵐僖ぅ襪肇ぅ鵐好函璽襪鮃圓覆い泙后� + 次に、syslog.conf に local?.* の 出力先を指定し(環曲竸瑤琶儿慌椎�)、 + syslogd に HUP シグナルを送って初期化しておい泙后�修靴董� + $PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S + オプション付い砲謄機璽丱癲璽匹乃�阿靴泙后�(バージョン 7.1 からは pg_options は PostgreSQL.conf になっています。) ] - -3.10) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしな -くてはならないのはなぜですか? - -PostgreSQLチームはマイナーリリースでは小さな変更しか行ないませんので、7.2 から -7.2.1 へのアップグレードにはダンプとリストアの必要はありません。しかし、メジャ -ーリリース(たとえば、7.2から7.3へのような)では、システムテーブルやデータファイ -ルの内部フォーマットの変更をしばしば行ないます。これらの変更はたいてい複雑で、 -そのため我々はデータファイルのための後方互換性を維持することができません。ダン -プは汎用フォーマットでデータを出力し、それを新しい内部フォーマットに読み込むこ -とができます。 - -同一リリースではディスク上でのフォーマットに変更はないので、アップグレードには -ダンプ/リストアではなく、pg_upgrade スクリプトを使うことができます。リリースノ -ートには、pg_upgrade が利用可能なリリースかどうか記されています。 - -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - 操作上の質問 - -4.1) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか? - -詳述は、オンラインマニュアルで DECLARE を見て下さい。 - -4.2) 最初の数ロウのみを SELECT するにはどうしますか? - -オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を使っ -てみて下さい。 - -たとえ、欲しいのは最初の数ロウだけでも、すべての問い合わせを評価しなくてはなら -ないかもしれません。ORDER BY を持った問い合わせを使うことを考えてみて下さい。も -し、ORDER BYに合ったインデックスがあるとすると PostgreSQLは要求された最初の数ロ -ウだけで評価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成さ -れるまですべてのロウを評価しなければならないかもしれません。 - -4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか? - -psqlのソースコードとして書かれた pgsql/src/bin/psql/describe.c ファイルを読むこ -とがその答えです。そこには、psqlのバックスラッシュコマンドによる出力のためのSQL -コマンドが含まれています。 psql に -E オプションをつけて起動すれば、与えたコマ -ンドを実行するための問い合わせが出力されます。 - -4.4) テーブルからカラムの削除はどのようにしますか? - -この機能は、ALTER TABLE DROP COLUMN としてリリース7.3 から加えられました。それ -までのバージョンでは、その代わりにこうします: + 3.10) + PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしなく� + 討呂覆蕕覆い里呂覆爾任垢�� + + PostgreSQLチームはマイナーリリースでは小さな変更しか行ないませんので、 + 7.2 から 7.2.1 + へのアップグレードにはダンプとリストアの必要はありません。しかし、メジ + ャーリリース(たとえば、7.2から7.3へのような)では、システムテーブルやデ + ータファイルの内部フォーマットの変更をしばしば行ないます。これらの変更 + はたいてい複雑で、そのため我々はデータファイルのための後方互換性 + を維持することができ + ません。ダンプは汎用フォーマットでデータを出力し、それを新しい内部フォ + ーマットに読み込むことがでい泙后� + + 同一リリースではディスク上でのフォーマットに変更はないので、アップグレ + ードにはダンプ/リストアではなく、pg_upgrade + スクリプトを使うことがでい泙后�螢蝓璽好痢璽箸砲蓮�pg_upgrade + が利用可能なリリースかどうか気気譴討い泙后� + _________________________________________________________________ + + 操作上の質問 + + 4.1) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか? + + 詳述は、オンラインマニュアルで DECLARE を見て下さい。 + + 4.2) 最初の数ロウのみを SELECT するにはどうしますか? + + オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... + LIMIT....を使ってみて下さい。 + + たとえ、欲しいのは最初の数ロウだけでも、すべての問い合わせを評価しなく + てはならないかもしれません。ORDER BY + を持った問い合わせを使うことを考えてみて下さい。 もし、ORDER + BYに合ったインデックスがあるとすると + PostgreSQLは要求された最初の数ロウだけで評価でき + るかもしれませんが、でなれば、PostgreSQL + は意図したロウが生成されるまですべてのロウを評価しなければならないかも + しれません。 + + 4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか? + + psqlのソースコードとして書かれた pgsql/src/bin/psql/describe.c + ファイルを読むことがその答えです。 + そこには、psqlのバックスラッシュコマンドによる出力のためのSQLコマンド� + �泙泙譴討い泙后� psql に -E + オプションをつけて起動すれば、与えたコマンドを実行するための問い合わせ + が出力されます。 + + 4.4) テーブルからカラムの削除はどのようにしますか? + + この機能は、ALTER TABLE DROP COLUMN としてリリース7.3 + から加えられました。それまでのバージョンでは、その代わりにこうします: BEGIN; LOCK TABLE old_table; SELECT ... -- 削除したいカラム以外のカラムをすべて選択します。 @@ -849,12 +927,13 @@ psql DROP TABLE old_table; ALTER TABLE new_table RENAME TO old_table; COMMIT; -[訳注:カラムの追加は ALTER TABLE ADD COLUMN で行えます。] - -4.5) ロウ、テーブル、データベースの最大サイズは? -制限は以下のとおりです。 -データベースの最大サイズ? 制限無し (1 TB のデータベースも存在します) + [訳注:カラムの追加は ALTER TABLE ADD COLUMN で行えます。] + + 4.5) ロウ、テーブル、データベースの最大サイズは? + + 制限は以下のとおりです。 +データベースの最大サイズ? 制限無し (4 TB のデータベースも存在します) テーブルの最大サイズ? 16TB ロウの最大サイズ? 1.6TB フィールドの最大サイズ? 1GB @@ -862,29 +941,32 @@ psql テーブル内での最大カラム数? カラムの型により250-1600 テーブル内での最大インデクス数? 制限無し -もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワップスペー -スの大きさにより制限されます。性能はこれらの値がことのほか大きな時に煽りを受け -ます。 - -最大テーブルサイズの16TBはオペレーティングシステムによる巨大ファイルのサポート -は必要としません。巨大なテーブルは複数の1GBのファイルに分けて保存されますので、 -ファイルシステムの制限は重要ではありません。 - -デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム数とが増加 -します。 - -4.6) 一般的なテキストファイルからデータを保存するには、データベースのディスク容 -量はどのくらい必要です? - -普通のテキストファイルを PostgreSQL のデータベースに保存するには、最大で約5倍の -ディスク容量を必要とします。 - -例題として、各行に整数とテキスト記述を持つ 100,000行のファイルを考えてみましょ -う。テキストの文字列の平均長さを20バイトと仮定すると、フラットファイルの大きさ -は約2.8MB です。このデータを含む PostgreSQL データベースファイルの大きさは次の -ように約6.4MBと見積もることができます: + もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワッ + プスペースの大い気砲茲蠕�造気譴泙后�能はこれらの値がことのほか大き + な時に煽りを受けます。 + + 最大テーブルサイズの16TBはオペレーティングシステムによる巨大ファイルの + サポートは必要としません。巨大なテーブルは複数の1GBのファイルに分けて� + 歛犬気譴泙垢里如▲侫.ぅ襯轡好謄爐寮�造禄斗廚任呂△蠅泙擦鵝� + + デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム� + 瑤箸��辰靴泙后� + + 4.6) 一般的なテキ + ストファイルからデータを保存するには、データベースのディスク容量はどのくら� + ど�廚任后� + + 普通のテゥ好肇侫.ぅ襪� PostgreSQL + のデータベースに保存するには、最大で約5倍のディスク容量を必要とします� + � + + 例題として、各行に整数とテゥ好筏述を持つ 100,000行のファイルを考え + てみましょう。テキ + ストの文字列の平均長さを20バイトと仮定すると、フラット ファイルの大き + さは約2.8MB です。このデータを含む PostgreSQL データベース + ファイルの大い気麓,里茲Δ北�6.4MBと見積もることがでい泙后� 36 bytes: 各ロウのヘッダ(概算) - 24 bytes: 整数(int)フィールドとテキスト(text)フィールド + 24 bytes: 整数(int)フィールドとテゥ好�(text)フィールド + 4 bytes: ページ上のタップルへのポインタ ---------------------------------------- 64 bytes per row @@ -898,343 +980,406 @@ psql 100000 data rows -------------------- = 782 database pages 128 rows per page - -782 database pages * 8192 bytes per page = 6,406,144 bytes (6.4 MB) - -インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされる -データを含む以上、それなりに大きくなります。 - -NULLはビットマップに保存されていて、それらがわずかにスペースを使います。 -4.7) 定義されたテーブル、インデックス、データベース、および、ユーザをどのように -して見つけ出しますか? - -psql にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示します。 -バックスラッシュ・コマンドの種類を見るには \? を使って下さい。 - -また、pgsql/src/tutorial/syscat.source ファイルを走らせてみて下さい。それは、沢 -山の SELECT 文により必要な情報をデータベースのシステム・テーブルから取り出して -例示してくれます。また、pg_ で始まるシステムテーブルにも記述されています。さら -に、psql -l はすべてのデータベースをリスト表示します。 - -4.8) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか -? - -インデックスは自動的にすべての問い合わせで使われるわけではありません。テーブル -が最小サイズより大きく、問い合わせでそのわずかなパーセンテージのロウを選択する -時だけ、インデックスは使われます。これはインデックススキャンにより起こされるラ -ンダムなディスクアクセスは、テーブルをストレートに読む順次走査よりも遅くなるこ -とがあるからです。 - -インデックスを使うかを決定するために、PostgreSQL はテーブルについての統計情報を -持たなければなりません。この統計情報は、VACUUM ANALYZEまたは、単に ANALYZE を使 -って収集することができます。統計情報を使ってオブティマイザはテーブルの中にある -ロウ数を知り、インデックスを使うべきかのの決定をより正しくできます。統計情報は -最適な結合順や結合方法を決める上でも貴重なものもあります。統計情報の収集は、テ -ーブルの内容がかわると毎に繰返しなされるべきです。 +782 database pages * 8192 bytes per page = 6,406,144 bytes (6.4 MB) -インデックスは、通常 ORDER BY や結合を行なうためには使われません。順次スキャン -に続く明示的ソートは、巨大なテーブルのインデックススキャンよりも普通は高速です -。 -しかし、ORDER BYと組み合わされたLIMIT は、テーブルの小さな部分を返すためにたび -たびインデックスを使うでしょう。実際、MAX() や MIN() がインデックスを使わないと -しても、このような値を ORDER BY と LIMIT を使ってインデックスを使って取り出すこ -とが可能です: + インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付 + けされるデータを含む以上、それなりに大い�覆蠅泙后� + + NULLはビットマップに保存されていて、それらがわずかにスペースを使います + 。 + + 4.7) + 定義されたテーブル、インデックス、データベース、および、ユーザをどのように� + 靴童�弔噂个靴泙垢�� + + psql + にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示しま + す。バックスラッシュ・コマンドの種類を見るには \? を使って下さい。 + + また、pgsql/src/tutorial/syscat.source + ファイルを走らせてみて下さい。それは、沢山の SELECT + 文により必要な情報をデータベースのシステム・テーブルから取り出して例示 + してくれます。また、pg_ で始まるシステムテーブルにも記 + 述されています。さらに、psql -l + はすべてのデータベースをリスト表示します。 + + 4.8) + 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか� + � + + インデックスは自動的にすべての問い合わせで使われるわけではありません。 + テー ブルが最小サイズより大き + く、問い合わせでそのわずかなパーセンテージのロウを + 選択する時だけ、インデックスは使われます。これはインデックススキ + ャンによ + り起こされるランダムなディスクアクセスは、テーブルをストレートに読む順 + 次 走査よりも遅くなることがあるからです。 + + インデックスを使うかを決定するために、PostgreSQL はテーブルについ + ての統計情報を持たなければなりません。この統計情報は、VACUUM + ANALYZEまたは、単に ANALYZE を使って収集すること ができ + ます。統計情報を使ってオブティマイザはテーブルの中にあるロウ数を知 + り、インデックスを使うべい�里侶萃蠅鬚茲蠕気靴�任ます。統計情報は最適 + な結合順や結合方法を決める上でも貴重なものもあります。統計情報の収集は + 、 テーブルの内容がかわると毎に繰返しなされるべい任后� + + インデックスは、通常 ORDER BY や結合を行な + うためには使われません。順次スキ + ャンに続く明示的ソートは、巨大なテーブル のインデックススキ + ャンよりも普通は高速です。 + しかし、ORDER BYと組み合わされたLIMIT + は、テーブルの小さな部分を返すためにたびたびインデックスを使うでしょう + 。 実際、MAX() や MIN() + がインデックスを使わないとしても、このような値を ORDER BY と LIMIT + を使ってインデックスを使って取り出すことが可能です: SELECT col FROM tab ORDER BY col [ DESC ] LIMIT 1; -LIKE あるいは ~ のようなワイルドカード演算子は特別な環境でしか使えません: + もし、オプティマイザが間違ってシーケンシャルスキ + ャンを選択したことに疑いがなければ、SET enable_seqscan TO + 'off'を使ってインデクススキ + ャンでまちがいなく速くなっているかをテストをしてみてください。 - - ・ 検索文字列が文字列の最初にききます。たとえば: + LIKE あるいは ~ のようなワイルドカード演算 子は特別な環境 + でしか使えません: + * 検索文字列が文字列の最初にいます。たとえば: + + * LIKE パターンが%で始まらない + * ~ (正規表現) パターンは^で始まらなければならない - □ LIKE パターンが%.で始まらない - □ ~ (正規表現) パターンは^.で始まらなければならない + 検索文字列を文字クラスから始めることはでい泙擦鵝�燭箸┐弌�[a-e]。 + + ILIKE や ~* のような大文字と小文字を区別し + ない検索は使えません。そのかわり、このFAQの4.12節で説明する関数のイン� + 妊奪�垢�箸┐泙后� + + initdb においては、デフォルトでCロケールが使われなくてはなりません。 + + [訳注: 強制的にインデックスを使うには SET enable_seqscan = off + を実行します。 ] + + 4.9) + 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るにはどう� + 靴泙垢�� + + オンラインマニュアルで EXPLAIN を見て下さい。 + + 4.10) R-tree インデックスとは何ですか? + + R-tree + インデックスは空間的なデータにインデックスを付けるために使われます。ハ + ッシュインデックスでは範囲の検索がでい泙擦鵝�泙拭�B-tree + インデックスでは、1次元でしか範囲の検索がでい泙擦鵝�R-tree + インデックスであれば多次元のデータを扱えます。たとえば、もし R-tree + インデックスを point 型の属世防佞韻襪海箸�任� + るとするとシステムは、「長方形に囲まれた点をすべて選択する」というよう + な問い合わせに、より効率良く答えられます。 + + R-Tree の設計の原典となる権威ある論文は: + + Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial + Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of + Data, 45-57. + + この論文は、Stonebraker 教授の "Readings in Database Systems" + でも取り上げられています。 - ・ 検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。 - ・ ILIKE や ~* のような大文字と小文字を区別しない検索は使えません。そのかわり - 、このFAQの4.12節で説明する関数のインデックスが使えます。 - ・ initdb においては、デフォルトでCロケールが使われなくてはなりません。 - -[訳注:強制的にインデックスを使うには SET enable_seqscan = off を実行します。 ] - -4.9) 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るにはどう -しますか? - -オンラインマニュアルで EXPLAIN を見て下さい。 - -4.10) R-tree インデックスとは何ですか? - -R-tree インデックスは空間的なデータにインデックスを付けるために使われます。ハッ -シュインデックスでは範囲の検索ができません。また、B-tree インデックスでは、1次 -元でしか範囲の検索ができません。R-tree インデックスであれば多次元のデータを扱え -ます。たとえば、もし R-tree インデックスを point 型の属性に付けることができると -するとシステムは、「長方形に囲まれた点をすべて選択する」というような問い合わせ -に、より効率良く答えられます。 - -R-Tree の設計の原典となる権威ある論文は: - -Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching." -Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. - -この論文は、Stonebraker 教授の "Readings in Database Systems" でも取り上げられ -ています。 - [訳注: - 奈良先端大の石川佳治さんよりR-Tree関係の文献を紹介して頂きました。 - 日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial data structures" - http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html + 奈良先端大の石川佳治さんよりR-Tree関係の文献を紹介して頂い泙靴拭� + 日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial +data structures" + http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp +/1996Oct/msg00007.html をご覧下さい。 ] - -組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっと高 -い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょっとした -作業が必要でして、現在、我々はそれをどのようにするかについての文書を持っていま -せん。 - + 組込みの R-Tree でポリゴンやボックスを操作でい泙后M�静�砲�R-Tree + はもっと高い次元を操作するようにも拡張でい泙后�村租�砲蓮�R-Tree + の拡張にはちょっとした作業が必要でして、現在、我々はそれをどのようにす + るかについての文書を持っていません。 + [訳注: - インターウィズの片岡さんが多次元幾何オブジェクトへの拡張作業中です。詳しくは、 + インターウィズの片岡さんが多次元幾何オブジェクトへの拡張作業中です。� +椶靴�蓮� http://www.interwiz.koganei.tokyo.jp/software/geometric/index.html をご覧ください。 ] - -4.11) 遺伝的問い合わせ最適化とは何ですか? - -GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で問合 -わせを高速化します。これにより、しらみつぶしに探索を行なわなくても、大きな結合 -(join queries)を扱うことができるようになります。 - -4.12) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実 -現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのように使 -いますか? - -~演算子は正規表現照合を行ない、~* は大文字と小文字を区別しない -(case-insensitive)正規表現照合を行います。大文字と小文字を区別しない LIKE 演算 -子を ILIKE といいます。 - -大文字と小文字を区別しない等値比較次のように表現できる: + 4.11) 遺伝的問い合わせ最適化とは何ですか? + + GEQO モジュールは、沢山のテーブルを結合するとき + に、遺伝的アルゴリズム(GA)で問合わせを高速化します。これにより、しらみ + つぶしに探索を行なわなくても、大い雰觜�(join queries)を扱うことができ + るようになります。 + + 4.12) + 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実現� + 靴泙垢��臺源悊半�源悊箸魘菠未靴覆じ〆�里燭瓩離ぅ鵐妊奪�垢呂匹里茲Δ忙� + いますか? + + ~演算子は正規表現照合を行ない、~* + は大文字と小文字を区別しない(case-insensitive)正規表現照合を行います。 + 大文字と小文字を区別しない LIKE 演算子を ILIKE といいます。 + + 大文字と小文字を区別しない等値比較次のように表現でい襦� SELECT * FROM tab WHERE lower(col) = 'abc'; -標準インデックスでは使われず、しかしながら、もし関数インデックスを作ったならそ -れが使われるでしょう。 - CREATE INDEX tabindex ON tab (lower(col)); - - WHERE lower(textfield) LIKE lower(pattern) - -4.13) 問い合わせの中で、フィールドが NULL であることを検出するにはどうしますか -? -カラムを IS NULL と IS NOT NULL とで試してみます。 + 標準インデックスでは使われず、しかしながら、もし関数インデックスを + 作ったならそれが使われるでしょう。 + CREATE INDEX tabindex ON tab (lower(col)); -4.14) 様々な文字型のそれぞれの違いは何ですか? + WHERE lower(textfield) LIKE lower(pattern) + 4.13) 問い合わせの中で、フィールドが NULL + であることを検出するにはどうしますか? + + カラムを IS NULL と IS NOT NULL とで試してみます。 + + 4.14) 様々な文字型のそれぞれの違いは何ですか? + Type Internal Name Notes -------------------------------------------------- -"char" char 1 character CHAR(n) bpchar 指定された固定長となるように空白が詰められる +"char" char 1文字 VARCHAR(n) varchar 最大長のサイズを指定する、詰め物無し -TEXT text 長さに上限の無いテキスト +TEXT text 長さに上限の無いテゥ好� BYTEA bytea 可変長のバイト配列(null-byte safe) -内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを -受け取るときです。 - -上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイ -トがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言さ -れた大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTにより圧縮さ -れたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなり -ます。 - -CHAR(n)はいつも長さが同じ文字列を保存するのに最適です。VARCHAR(n) は可変長の文 -字列を保存するのに最適ですが、保存できる文字列の長さに制限があります。TEXT は長 -さに制限の無い文字列の保存ためのもので、最大1ギガバイトです。 BYTEAは、部分的に -NULL のバイトを含むバイナリデータを保存するためのものです。 - -4.15.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? - -PostgreSQL は SERIAL データ型をサポートします。カラム上に通番とインデックスを自 -動作成します。たとえば、 - CREATE TABLE person ( - id SERIAL, - name TEXT + 内部名にお目にかかるのは、システム・カタログを調べるとき + や、エラーメッセージを受け取るとい任后� + + 上気侶燭里Δ塑能蕕裡瓦弔侶燭� "varlena" + 型です(すなわち、ディスクの最初の4バイトがデータ長で、それの後に実際� + 離如璽燭�海ます)。このように実際の空間は宣言された大い気茲蠅眈�径腓� + くなります。しかし、これらのデータ型はTOASTにより圧縮されたり複数ロウ� + 謀呂辰栃歛犬気譴燭蠅靴董▲妊�好�紊龍�屬六廚辰燭茲蠑�気�覆蠅泙后� + + VARCHAR(n) は可変長の文字列を保存するのに最適ですが、保存でき + る文字列の長さに制限があります。TEXT + は長さに制限の無い文字列の保存ためのもので、最大で 1ギガバイトです。 + CHAR(n)は、VARCHAR(n)が与えられた文字だけを保存するのに対し、ブランク� + 魑佑畊�鵑任い弔眛韻個垢気琶源﨓鵑鯤歛犬垢襪里忘播�任后�BYTEAは、部分 + 的にNULL + のバイトを含むバイナリデータを保存するためのものです。これらのタイプは + 同じくらいの税銃胆ををもちます。 + + 4.15.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? + + PostgreSQL は SERIAL + データ型をサポートします。カラム上に通番とインデックスを自動作成します + 。たとえば、 + CREATE TABLE person ( + id SERIAL, + name TEXT ); -は自動的に次のように翻訳されます: + + は自動的に次のように翻訳されます: CREATE SEQUENCE person_id_seq; - CREATE TABLE person ( + CREATE TABLE person ( id INT4 NOT NULL DEFAULT nextval('person_id_seq'), - name TEXT + name TEXT ); CREATE UNIQUE INDEX person_id_key ON person ( id ); -通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence をご覧 -下さい。 - -また、各ロウのOIDフィールドを一意値として使うこともできます。しかしながら、もし -もデータベースをダンプしてりロードする必要がある場合は、OIDを温存するために -pg_dump で -oオプションを使うか、または、COPY WITH OIDSオプションを使う必要があ -ります。 Bruce Momjian の(http://www.PostgreSQL.org/docs/aw_pgsql_book)の -Numbering Rowsの章にありあます。 - -4.15.2) SERIALデータ型に挿入される値は、どうすれば得られますか? -ひとつの方法は、nextval() 関数を使ってその値を挿入する前(before)に SEQUENCE オ -ブジェクトから次の SERIAL 値を取り出し、それから実際に挿入をすることです。 -4.15.1 のテーブルの例を使うとすると、疑似言語ではこのようになります。 + 通番についてのもっと詳しい情報は、オンラインマニュアルで + create_sequence をご覧下さい。 + + また、各ロウのOIDフィールドを一意値として使うこともでき + ます。しかしながら、もしもデータベースをダンプしてりロードする必要があ + る場合は、OIDを温存するためにpg_dump で + -oオプションを使うか、または、COPY WITH + OIDSオプションを使う必要があります。 Bruce Momjian + の(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering + Rowsの章にありあます。 + + 4.15.2) SERIALデータ型に挿入される値は、どうすれば得られますか? + + ひとつの方法は、nextval() 関数を使ってその値を挿入する前(before)に + SEQUENCE オブジェクトから次の SERIAL + 値を取り出し、それから実際に挿入をすることです。4.15.1 + のテーブルの例を使うとすると、疑似言語ではこのようになります。 new_id = execute("SELECT nextval('person_id_seq')"); - execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); -そうして、new_id に保存した新しい値を他の問い合わせに(たとえば、person テーブル -に対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作られた -SEQUENCEオブジェクトの名前は、<table>_<serialcolumn>_seq のようになり、このうち -、table と serialcolumn はそれぞれテーブルの名前とSERIALカラムの名前です。 - -あるいは、与えられたSERIAL値を、それが既定値として挿入された後で(after)、 -currval() 関数を使って取り出すこともできます。たとえば、 + execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal') +"); + + そうして、new_id に保存した新しい値を他の問い合わせに(たとえば、person + テーブルに対する外部ァ�(foreign + key)のように)使うとよいでしょう。自動的に作られたSEQUENCEオブジェクト� + 量樵阿蓮�<table>_<serialcolumn>_seq のようになり、このうち、table と + serialcolumn はそれぞれテーブルの名前とSERIALカラムの名前です。 + + あるいは、与えられたSERIAL値を、それが既定値として挿入された後で(after + )、 currval() 関数を使って取り出すこともでい泙后�燭箸┐弌� execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); new_id = execute("SELECT currval('person_id_seq')"); -最後に、INSERT文から返るOIDを使って、既定値をみつけることもできますが、しかし、 -これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の作った DBD::Pg -モジュールを使えば、$sth->execute() の後に $sth->{pg_oid_status} を経由してその -OID 値を使えるようにすることはできます。 - -4.15.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使わな -いほうがよいのでしょうか? - -それはありません。currval() は、すべてのユーザではありませんが、あなたのバック -エンドに与えられた現在の値を返します。 - -4.15.4) トランザクションが中断したときにもういちどシーケンス番号が使われないの -はなぜですか?シーケンス/SERIALカラムに空きがあるのはなぜですか? - -同時性を改善するために、実行中のトランザクションに、必要でトランザクションが終 -了するまでロックされないシーケンス値を与えています。このためトランザクションが -中断されると番号割り当てにギャップを生じます。 - -4.16) OID とは何ですか? TID とは何ですか? -OID とは一意のロウID に対する PostgreSQL の答えです。PostgreSQL の中でつくられ -るすべてのロウは一意の OID を得ます。initdb で発生される OID はすべて 16384 -(include/access/transam.h から)より小さな値です。initdb 後のすべての OID (ユー -ザ作成)はそれ以上の値になります。既定では、これらすべての OIDは一つのデーブルや -データベース内に留まらず、PostgreSQL インストレーション全体の中で一意です。 - -PostgreSQL はテーブル間のロウを結びつけるために、そのシステムテーブル内に OID -を使います。この OID は特定のユーザのロウを識別するためや結合の中で使われること -ができます。OID の値を保存するためには OID 型をカラムに使うことを奨めます。より -速くアクセスするために OID フィールドにインデックスを作ることができます。 OID -は、全てのデータベースで使われる中央領域から、全ての新しいロウに割り当てられま -す。OID を他の何かに変えたい、あるいは元の OID もテーブルと一緒にコピーしたいの -なら、できなくはありません。 + 最後に、INSERT文から返るOIDを使って、既定値をみつけることもでき + ますが、しかし、これは最も移植世猟磴い笋衒�任靴腓Α�PerlのDBIで + Edmund Mergl の作った DBD::Pg モジュールを使えば、$sth->execute() + の後に $sth->{pg_oid_status} を経由してその OID + 値を使えるようにすることはでい泙后� + + 4.15.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() + は使わないほうがよいのでしょうか? + + それはありません。currval() + は、すべてのユーザではありませんが、あなたのバックエンドに与えられた現 + 在の値を返します。 + + 4.15.4) トランザクションが中断したとき + にもういちどシーケンス番号が使われないのはなぜですか?シーケンス/SERIALカ� + 薀爐剖�があるのはなぜですか? + + 同時性 + を改善するために、実行中のトランザクションに、必要でトランザクションが + 終了するまでロックされないシーケンス値を与えています。このためトランザ + クションが中断されると番号割り当てにギャップを生じます。 + + 4.16) OID とは何ですか? TID とは何ですか? + + OID とは一意のロウID に対する PostgreSQL の答えです。PostgreSQL + の中でつくられるすべてのロウは一意の OID を得ます。initdb で発生される + OID はすべて 16384 (include/access/transam.h + から)より小さな値です。initdb 後のすべての OID + (ユーザ作成)はそれ以上の値になります。 既定では、これらすべての + OIDは一つのデーブルやデータベース内に留まらず、PostgreSQL + インストレーション全体の中で一意です。 + + PostgreSQL + はテーブル間のロウを結びつけるために、そのシステムテーブル内に OID + を使います。この OID + は特定のユーザのロウを識別するためや結合の中で使われることができ + ます。OID の値を保存するためには OID + 型をカラムに使うことを奨めます。より速くアクセスするために OID + フィールドにインデックスを作ることがでい泙后� OID + は、全てのデータベースで使われる中央領域から、全ての新しいロウに割り当 + てられます。OID を他の何かに変えたい、あるいは元の OID + もテーブルと一緒にコピーしたいのなら、でい覆�呂△蠅泙擦鵝� CREATE TABLE new (old_oid oid, mycol int); SELECT old_oid, mycol INTO new FROM old; COPY new TO '/tmp/pgtable'; DELETE FROM new; COPY new WITH OIDS FROM '/tmp/pgtable'; - -OID は、4バイトの整数として保存されているので、40億を越えると溢れてしまうでしょ -う。誰もこれが起きたと報告してくる人はいませんでしたが、そうなる前にこの制限を -取り除くことを計画しています。 - -TID は特定の物理ロウをそのブロックとオフセット値で識別するために使われます。TID -はロウが修正されたり再ロードされると変わります。それらの TID は、物理ロウを指す -ためにインデックス記載で使われます。 - -4.17) PostgreSQL で使われるいくつかの用語の意味は何ですか? - -いくつかのソースコードや古い文書の中には、それぞの専門分野の中でもっと一般的に -使われる専門用語が使われています。 - - - ・ テーブル(table)、関係(relation)、クラス(class) - ・ ロウ(row)、レコード(record)、タップル(tuple) - ・ カラム(column)、フィールド(field)、属性(attribute) - ・ 取得(retrieve)、選択(select) - ・ 置換(replace)、更新(update) - ・ 追加(append)、挿入(insert) - ・ OID, 連番(serial value) - ・ ポータル(portal), カーソル(cursor) - ・ 領域変数(range variable)、テーブル名(table name)、テーブル別名(table alias) - -一般的なデータベース用語のリストは:http://hea-www.harvard.edu/MST/simul/ -software/docs/pkgs/pgsql/glossary/glossary.html で見つけられます。 - -4.18) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るのはな -ぜですか? - -おそらく、システムの仮想メモリーを全て使い果たしてしまっている可能性があるか、 -カーネルがあるリソースについてもつ制限値が低すぎる可能性があります。 postmaster -を始動する前にこれを試してみて下さい: + OID + は、4バイトの整数として保存されているので、40億を越えると溢れてしまう� + 任靴腓ΑC�發海譴��� + たと報告してくる人はいませんでしたが、そうなる前にこの制限を取り除くこ + とを計画しています。 + + TID + は特定の物理ロウをそのブロックとオフセット値で識別するために使われます + 。TID はロウが修正されたり再ロードされると変わります。それらの TID + は、物理ロウを指すためにインデックス戯椶濃箸錣譴泙后� + + 4.17) PostgreSQL で使われるいくつかの用語の意味は何ですか? + + いくつかのソースコードや古い文書の中には、それぞの専門分野の中でもっと + 一般的に使われる専門用語が使われています。 + * テーブル(table)、関係(relation)、クラス(class) + * ロウ(row)、レコード(record)、タップル(tuple) + * カラム(column)、フィールド(field)、属�(attribute) + * 取得(retrieve)、選択(select) + * 置換(replace)、更新(update) + * 追加(append)、挿入(insert) + * OID, 連番(serial value) + * ポータル(portal), カーソル(cursor) + * 領域変数(range variable)、テーブル名(table + name)、テーブル別名(table alias) + + 一般的なデータベース用語のリストは:http://hea-www.harvard.edu/MST/sim + ul/software/docs/pkgs/pgsql/glossary/glossary.html で見つけられます。 + + 4.18) エラーメッセージ "ERROR: Memory exhausted in + AllocSetAlloc()"が出るのはなぜですか? + + おそらく、システムの仮想メモリーを全て使い果たしてしまっている可能性 + があるか、カーネルがあるリソースについてもつ制限値が低すぎる可能性 + があります。 postmaster を始動する前にこれを試してみて下さい: ulimit -d 262144 limit datasize 256m -シェルによって、どちらかひとつが成功するでしょうが、これはプロセスのデータセグ -メント制限をより高く設定し、たぶん問い合わせが完結するようになるでしょう。この -コマンドは現行のプロセスと、このコマンドを走らせた後に作られる全てのサブプロセ -スについて適用されます。バックエンドがとても多くのデータを返すためにSQL クライ -アントで問題が続いているのであれば、クライアントを開始する前にこれを試してみて -ください。 - -4.19) どのバージョンの PostgreSQL を走らせているかを調べるにはどうしますか? - -psql から SELECT version(); をタイプします。 - -4.20) ラージ・オブジェクトの操作でinvalid large obj descriptor を受け取りました -。なぜでしょうか? - -ラージ・オブジェクト操作をするときは、前後にBEGIN WORKとCOMMITを付ける必要があ -ります。すなわち、lo_open ... lo_closeをはさみ込みます。 - -現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト・ハンド -ルを閉じることにより、lo_openコマンドが完了した直後に強制的にルールを実行します -。このため、最初にハンドルに対して何かをしようとすると、invalid large obj -descriptor(ラージ・オブジェクトの記述子が不正)となります。それで、もし、トラン -ザクションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエ -ラーメッセージを出すのです。 - -もし、ODBCのようなクライアントインターフェースをお使いなら、auto-commit offを設 -定する必要があるかもしれません。 - -4.21) 現在の時刻がデフォルトとなるようなカラムはどのようにつくりますか? - -CURRENT_TIMESTAMPを使います: - CREATE TABLE test (x int, modtime timestamp DEFAULT >CURRENT_TIMESTAMP ); - -4.22) なぜ、INを使う副問い合わせがとても遅いのですか? - -現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキャンすること -により、副問い合わせを外部問い合わせに結合しています。もし、副問い合わせが数行 -しか返さず、外部問い合わせが沢山の行を返すなら、当面はINをEXISTSで置き換えるこ -とです: + シェルによって、どちらかひとつが成功するでしょうが、これはプロセスのデ + ータセグメント制限をより高く設定し、たぶん問い合わせが完結するようにな + るでしょう。このコマンドは現行のプロセスと、このコマンドを走らせた後に + 作られる全てのサブプロセスについて適用されます。バックエンドがとても多 + くのデータを返すためにSQL + クライアントで問題が続いているのであれば、クライアントを開始する前にこ + れを試してみてください。 + + 4.19) どのバージョンの PostgreSQL + を走らせているかを調べるにはどうしますか? + + psql から SELECT version(); をタイプします。 + + 4.20) ラージ・オブジェクトの操作でinvalid large obj descriptor + を受け取りました。なぜでしょうか? + + ラージ・オブジェクト操作をするとい蓮∩宛紊�BEGIN + WORKとCOMMITを付ける必要があります。すなわち、lo_open ... + lo_closeをはさみ込みます。 + + 現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト + ・ハンドルを閉じることにより、lo_openコマンドが完了した直後に強制的に� + 襦璽襪鮗孫圓靴泙后�海里燭瓠∈能蕕縫魯鵐疋襪紡个靴堂燭�鬚靴茲Δ箸垢襪 + 函�invalid large obj descriptor(ラージ・オブジェクトの記 + 述子が不正)となります。それで、もし、トランザクションを使うのを忘れる� + 函◆幣�覆�箸發曚箸鵑匹了�屐貌�い討い織魁璽匹�┘蕁璽瓮奪察璽犬鮟个 + 垢里任后� + + もし、ODBCのようなクライアントインターフェイスをお使いなら、auto-commi + t offを設定する必要があるかもしれません。 + + 4.21) 現在の時刻がデフォルトとなるようなカラムはどのようにつくりますか? + + CURRENT_TIMESTAMPを使います: + CREATE TABLE test (x int, modtime timestamp DEFAULT >CURRENT_TIMESTAMP +); + + 4.22) なぜ、INを使う副問い合わせがとても遅いのですか? + + 現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキ + ャンすることにより、副問い合わせを外部問い合わせに結合しています。もし + 、副問い合わせが数行しか返さず、外部問い合わせが沢山の行を返すなら、当 + 面はINをEXISTSで置ご垢┐襪海箸任后� SELECT * FROM tab WHERE col1 IN (SELECT subcol FROM subtab) -を、置き換えて: + + を、置ご垢┐董� SELECT * FROM tab WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col) -とします。これが手っ取り早いですが、subcolは索引付きカラムであるべきです。この -制限は将来のリリースで直したいと思っています。 - -4.23) 外部結合(outer join)はどのように実現しますか? -PostgreSQL は SQL 標準構文を使う外部結合(アウタージョイン)をサポートします。こ -こに 2つの例題があります。 + とします。 これが手っ取り早いですが、subcolは索引付ぅ�薀爐任△襪戮� + です。 ここで示した問題は7.4で修正されます。 + + 4.23) 外部結合(outer join)はどのように実現しますか? + + PostgreSQL は SQL + 標準構文を使う外部結合(アウタージョイン)をサポートします。ここに + 2つの例題があります。 SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); -あるいは + + あるいは SELECT * FROM t1 LEFT OUTER JOIN t2 USING (col); -これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されなかっ -たロウ(t2 と一致しなかったロウ)も返しています。RIGHT 結合は t2 の結合されなかっ -たロウを加えるでしょう。FULL 結合は、一致したロウに t1 と t2 からは結合されなか -ったロウを返すでしょう。OUTER という言葉はオプションで LEFT, RIGHT, または FULL -などの結合を仮定されています。以前のリリースでは外部結合(outer join)をUNION と -NOT IN を使ってシミュレートできます。たとえば、tab1 と tab2 を結合するときは、 -次の問い合わせで二つのテーブルを外部結合します。 + + これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 + の結合されなかったロウ(t2 と一致しなかったロウ)も返しています。RIGHT + 結合は t2 の結合されなかったロウを加えるでしょう。FULL + 結合は、一致したロウに t1 と t2 + からは結合されなかったロウを返すでしょう。OUTER + という言葉はオプションで LEFT, RIGHT, または FULL + などの結合を仮定されています。 以前のリリースでは外部結合(outer + join)をUNION と NOT IN を使ってシミュレートでい泙后� たとえば、tab1 と + tab2 を結合するとい蓮⊆,量笋す腓錣擦覇鵑弔離董璽屮襪魍杏�觜腓靴泙后� SELECT tab1.col1, tab2.col2 FROM tab1, tab2 WHERE tab1.col1 = tab2.col1 @@ -1244,123 +1389,138 @@ NOT IN WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2) ORDER BY col1 -4.24) 複数のデータベースを使う問い合わせはどのようにすればできますか? - -現行のデータベース以外への問い合わせ方法はありません。というのもPostgreSQLがデ -ータベース仕様のシステムカタログを読み込むためで、そこには、たとえそのふりをす -るだけにしろ、データベースを越えて問い合わせをするすべがありません。 - -/contrib/dblink はデータベース間(cross-database)の問い合わせを関数呼出しにより -許します。もちろん、クライアントは同時に接続を別のデータベースへも張らなくては -ならず、結果をクライアント側でマージしなくてはなりません。 - -4.25) 関数で複数のロウまたはカラムを返すにはどうしますか? - -もし、PL/pgSQL 関数でrefcursorsを使うと結果の組を返すことができます。 http:// -www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html の 23.7.3.3 節をご覧下 -さい。 - -4.26)なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することができ -ないのでしょうか? - -PL/PgSQL は関数の内容をキャッシュし、その不幸な副作用のため、もし PL/PgSQL 関数 -が一時テーブルにアクセスすると、そのテーブルはあとでドロップされ再作成されます -が、関数が再び呼び出されると、キャッシュされているその関数の内容はまだ古い一時 -テーブルを依然として指しているからです。解決策は、 PL/PgSQL の中で EXECUTE を一 -時テーブルアクセスのために使うことです。これで、毎回クエリーのパースし直しを起 -こすでしょう。 - -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の拡張についての質問 - -5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうの -はなぜですか? - -問題は色々と考えられますが、まず最初に、作成したユーザ定義関数を単独のテストプ -ログラムにして試してみて下さい。 - -5.2) PostgreSQL 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクトに -貢献したいのですが? - -皆さんの行なった拡張を、pgsql-hackers メーリング・リストに送ってください。そし -て、ゆくゆくはそうした拡張が contrib/ サブディレクトリの中に入ることになるでし -ょう。 - -5.3) タプルを返す C言語の関数はどのように書きますか? - -原理的には可能ですが、これには究極の妙技を要しますので、著者のまわりでは未だ誰 -もやったことがありません。 - -5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜ -ですか? - -いくつかの Makefile がインクルード・ファイルに対して適切な依存関係を持っていま -せん。make clean をしてからもう一度 make を行なわなくてはなりません。もし、GCC -をお使いであれば configure の --enable-depend オプションを使って、コンパイラに -依存関係を自動的に調べさせることもできます。 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + 4.24) 複数のデータベースを使う問い合わせはどのようにすればでい泙垢�� + + 現行のデータベース以外への問い合わせ方法はありません。というのもPostgr + eSQLがデータベース仕様のシステムカタログを読み込むためで、そこには、た + とえそのふりをするだけにしろ、データベースを越えて問い合わせをするすべ + がありません。 + + contrib/dblink + はデータベース間(cross-database)の問い合わせを関数呼出しにより許します + 。もちろん、クライアントは同時に接続を別のデータベースへも張らなくては + ならず、結果をクライアント側でマージしなくてはなりません。 + + 4.25) 関数で複数のロウまたはカラムを返すにはどうしますか? + + もし、PL/pgSQL 関数でrefcursorsを使うと結果の組を返すことがでい泙后� + http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html の + 23.7.3.3 節をご覧下さい。 + + 4.26)なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop + することがでい覆い里任靴腓Δ�� + + PL/PgSQL は関数の内容をゥ礇奪轡紊掘△修良垤�壁益醉僂里燭瓠△發� + PL/PgSQL + 関数が一時テーブルにアクセスすると、そのテーブルはあとでドロップされ再 + 作成されますが、関数が再び呼び出されると、キ + ャッシュされているその関数の内容はまだ古い一時テーブルを依然として指し + ているからです。解決策は、 PL/PgSQL の中で EXECUTE + を一時テーブルアクセスのために使うことです。これで、毎回クエリーのパー + スし直しを起こすでしょう。 + + 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.c + onfの中でhostsslを使うことによります。 + * バージョン7.3 + ではデータベースユーザのパスワードは保存される時に自動的に暗号化さ + れます。 + それより前のバージョンではpostgresql.conf中でPASSWORD_ENCRYPTIONを + 邑悊砲垢詆�廚�△蠅泙后� + * サーバーは暗号化ファイルシステムを使って走ることもでい泙后� + _________________________________________________________________ + + PostgreSQLの拡張についての質問 + + 5.1) 自分で書いたユーザ定義関数を psql + の中で実行するとコア・ダンプしてしまうのはなぜですか? + + 問題は色々と考えられますが、まず最初に、作成したユーザ定義関数を単独の + テストプログラムにして試してみて下さい。 + + 5.2) PostgreSQL + 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクトに貢献したいの� + 任垢�� + + 皆さんの行なった拡張を、pgsql-hackers + メーリング・リストに送ってください。そして、ゆくゆくはそうした拡張が + contrib/ サブディレクトリの中に入ることになるでしょう。 + + 5.3) タプルを返す C言語の関数はどのように書い泙垢�� + + バージョン7.3以降のPostgreSQLでは、テーブルを返す関数を C, + PL/PgSQL、そして SQL + にて完全にサポートします。詳しくはプログラマガイドの情報を見てください + 。Cで定義された表を返す関数の例題がcontrib/tablefuncの中にあります。 + + 5.4) + ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜ� + 任垢�� + + いくつかの Makefile + がインクルード・ファイルに対して適切な依存関係を持っていません。make + clean をしてからもう一度 make を行なわなくてはなりません。もし、GCC + をお使いであれば configure の --enable-depend + オプションを使って、コンパイラに依存関係を自動的に調べさせることもでき + ます。 + _________________________________________________________________ + [訳注: 日本語版の製作については以下の通りです。 - 最終更新日: 2002年10月18日 + 最終更新日: 2003年04月10日 翻訳者: 桑村 潤 (Jun Kuwamura <juk@PostgreSQL.jp>) - このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます): + このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただい泙� +): - 田仲 稔(Minoru TANAKA <Tanaka.Minoru at keiken.co.jp>) + 田仲 �(Minoru TANAKA <Tanaka.Minoru at keiken.co.jp>) 石井 達夫(Tatsuo ISHII <t-ishii at sra.co.jp>) 齊藤 知人(Tomohito SAITOH <tomos at elelab.nsc.co.jp>) 馬場 肇(Hajime BABA <baba at kusastro.kyoto-u.ac.jp>) 岡本 一幸(Kazuyuki OKAMOTO <kokamoto at itg.hitachi.co.jp>) 小菅 昭一(Shoichi Kosuge <s-kosuge at str.hitachi.co.jp>) 山下 義之(Yoshiyuki YAMASHITA <dica at eurus.dti.ne.jp>) - 境 真太郎(Sintaro SAKAI <s_sakai at mxn.mesh.ne.jp>) + � 真太郎(Sintaro SAKAI <s_sakai at mxn.mesh.ne.jp>) 生越 昌己(Masami OGOSHI <ogochan at zetabits.com>) 石川 俊行(Toshiyuki ISHIKAWA <tosiyuki at gol.com>) - 本田 茂広(Shigehiro HONDA <fwif0083 at mb.infoweb.ne.jp>) + 本田 茂�(Shigehiro HONDA <fwif0083 at mb.infoweb.ne.jp>) せせ じゅん(Jun SESE <sesejun at linet.gr.jp>) 神谷 英孝(Hidetaka KAMIYA <hkamiya at catvmics.ne.jp>) 菅原 敦( Atsushi SUGAWARA <asugawar at f3.dion.ne.jp>) - をはじめ、ポストグレスに関する話題豊富な日本語ポストグレス・メーリングリスト、 - 和訳のきっかけを作ってくれた JF(Linux Japanese FAQ Mailing List)プロジェクト、その他、 + をはじめ、ポストグレスに関する話題防戮米鐱楔譽櫂好肇哀譽后Ε瓠璽螢鵐哀螢好函� + 和訳のい辰�韻鮑遒辰討�譴� JF(Linux Japanese FAQ Mailing List)プロジェクト、 +その他、 直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの 皆さんに感謝します。 日本語版のこの文書は、以下からもたどれます。 - 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.linux.or.jp/JF/Linux JFプロジェクト - http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/ なお、この和訳に関するご意見は(juk@PostgreSQL.jp)までお寄せ下さい。 ] diff --git a/doc/src/FAQ/FAQ_japanese.html b/doc/src/FAQ/FAQ_japanese.html index 8662b9657e2478314548c3879fc6d2f53672c125..40089d3b81a7534f6c94c32f0faabfab39e517bc 100644 --- a/doc/src/FAQ/FAQ_japanese.html +++ b/doc/src/FAQ/FAQ_japanese.html @@ -1,3 +1,4 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <TITLE>PostgreSQL FAQ in Japanese</TITLE> @@ -7,7 +8,7 @@ <H1> PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ)</H1> <P> -原文最終更新日: Sun Oct 13 23:15:09 EDT 2002 +原文最終更新日: Mon Mar 17 11:32:59 EST 2003</P> <P> 現在の維持管理者: Bruce Momjian (<A HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> @@ -15,14 +16,14 @@ Maintainer of Japanese Translation: Jun Kuwamura (<A HREF="mailto:juk@PostgreSQL.jp">juk@PostgreSQL.jp</A>)<BR><P> <P> この文書の最新版は -<A HREF="http://www.PostgreSQL.org/docs/faq-english.html"> -http://www.PostgreSQL.org/docs/faq-english.html</A> +<A HREF="http://www.PostgreSQL.org/docs/faqs/FAQ.html"> +http://www.PostgreSQL.org/docs/faqs/FAQ.html</A> で見ることができます。 <P> プラットホームに特有の質問については: - <A HREF="http://www.PostgreSQL.org/docs/"> - http://www.PostgreSQL.org/users-lounge/docs/faq.html</A> + <A HREF="http://www.PostgreSQL.org/docs/index.html"> + http://www.PostgreSQL.org/users-lounge/docs/index.html</A> <BR>に回答があります。 <P> @@ -32,8 +33,8 @@ http://www.PostgreSQL.org/docs/faq-english.html</A> [訳注: 日本語版製作についてのメモは最後尾へ移動しました。 - 日本語版のこの文書は 本家 "User's Lounge" の "Collection of FAQs" の - "Japanese" という見出しのところにあります。また、以下のサイトにも + 日本語版のこの文書は <a HREF="http://www.PostgreSQL.org/docs/index.html">本家 "Docs" </a> の "Frequently Asked Questions" の + ところに "Japanese FAQ" という見出であります。また、以下のサイトにも あります。 <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> @@ -41,7 +42,7 @@ http://www.PostgreSQL.org/docs/faq-english.html</A> この和訳についてお気づきの点は(<A HREF="mailto:juk@PostgreSQL.jp">juk@PostgreSQL.jp</A>)までメールでお寄せ下さい。 - 2002年10月16日 桑村 潤 + 2003年04月10日 桑村 潤 ] </PRE></SMALL> @@ -72,8 +73,7 @@ http://www.PostgreSQL.org/docs/faq-english.html</A> <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.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェースはありますか? -レポートジェネレータや埋め込み問い合わせ言語インターフェースはありますか?<BR> +<A HREF="#2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェイスはありますか?<BR> <A HREF="#2.4">2.4</A>) どのような言語で PostgreSQL と通信できすか?<BR> @@ -228,11 +228,11 @@ MODIFICATIONS.</P> <P><STRONG>クライアント</STRONG></P> -<P> MS Windows プラットホーム上で走せるために、<I>libpq</I> C ライブラリ、psql、その他のインターフェース、および、クライアントアプリケーションをコンパイルすることは可能です。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走るサーバと通信します。</P> +<P> MS Windows プラットホーム上で走せるために、<I>libpq</I> C ライブラリ、psql、その他のインターフェイス、および、クライアントアプリケーションをコンパイルすることは可能です。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走るサーバと通信します。</P> <P> Win32 <I>libpq</I> ライブラリと psql を作るために、<I>win32.mak</I> が配布に含まれてます。PostgreSQLは <SMALL>ODBC</SMALL> クライアントとも通信できます。</P> <P><STRONG>サーバ</STRONG></P> -<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>、あるいは、<A href="http://www.PostgreSQL.org/docs/faqs/faq-mswin.html">http://www.PostgreSQL.org/docs/faqs/faq-mswin.html</A>にある MS Windows FAQ をご覧下さい。</P> <P>MS Win NT/2000/XP ネイティブ版への移植が現在進行中です。</P> <BR> @@ -340,7 +340,7 @@ UNIX </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> +<P>商用サポート会社のリストは<a href="http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html">http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html</a>にあります。</P> <P> <SMALL><PRE> [訳注: @@ -353,7 +353,7 @@ UNIX <H4><A NAME="1.7">1.7</A>) 最新版はどれですか</H4> <P> -PostgreSQL の最新版はバージョン 7.2.3 です。</P> +PostgreSQL の最新版はバージョン 7.3.2 です。</P> <P> 我々は、4カ月毎にメジャーリリースを行なうことを計画しています。</P> @@ -361,8 +361,8 @@ PostgreSQL <H4><A NAME="1.8">1.8</A>) どのような文書がありますか?</H4> <P> 配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)およびいくつかの小さなテスト例題が含まれます。<I>/doc</I> ディレクトリをご覧下さい。また、マニュアルは、<A -HREF="http://www.PostgreSQL.org/users-lounge/docs/"> -http://www.PostgreSQL.org/users-lounge/docs/</A> +HREF="http://www.ca.PostgreSQL.org/users-lounge/docs/"> +http://www.ca.PostgreSQL.org/users-lounge/docs/</A> でオンラインでも閲覧できます。</P> <SMALL><PRE> @@ -512,7 +512,7 @@ href="http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bu <DT> <B>性能(Performance)</B></DT> <DD> - 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>にあります。 + PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ちます。ある面ではより早かったり、ほかの面ではより遅かったりします。MySQLなどの特化型データベース・システムにくらべて、PostgreSQLの挿入/更新が遅いのは、トランザクションによるオーバーヘッドがあるからです。もちろん、MySQLには上記の<I>Features</I>の節に示すような機能はまったくありません。我々は、PostgreSQLに柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛けたりソースコードを解析したりして、性能の改善を続けています。PostgreSQL と MySQL とを比較している面白い Web ページが<A href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>にあります。 <BR> PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有します。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせることができます。<BR> </DD> @@ -554,17 +554,17 @@ href="https://store.pgsql.com/shopping/">https://store.pgsql.com/shopping/</A> <H4><A NAME="2.1">2.1</A>) PostgreSQL のための <SMALL>ODBC</SMALL> ドライバーはありますか? </H4> -<P> PsqlODBC と OpenLink <SMALL>ODBC</SMALL> の二つの <SMALL>ODBC</SMALL> ドライバーが利用可能です。 +<P> PsqlODBC と OpenLink <SMALL>ODBC</SMALL> の二つの <SMALL>ODBC</SMALL> ドライバーが利用可能です。</P> -<P> PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情報は -<A HREF="ftp://ftp.PostgreSQL.org/pub/odbc/">ftp://ftp.PostgreSQL.org/pub/odbc/</A> -から取得できます。<P> +<P> PsqlODBC は次の場所からダウンロードできます。 +<A href= + "http://gborg.postgresql.org/project/psqlodbc/projdisplay.php"> + http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A> +</P> <SMALL><PRE> [訳注: - 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://w2422.nsk.ne.jp/~inoue/indexj.html">http://w2422.nsk.ne.jp/~inoue/indexj.html</A> ] </PRE></SMALL> @@ -587,7 +587,7 @@ Programmer's Guide</A> <P> データベースを裏に持つ Web ページについての素晴らしい紹介が、<BR> <A href="http://www.webreview.com">http://www.webreview.com</A>にあります。</P> -<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> [訳注: @@ -596,19 +596,10 @@ Programmer's Guide</A> あるいは、廣川 類さんのサイト <A HREF="http://www.geocities.jp/rui_hirokawa/php/">http://www.geocities.jp/rui_hirokawa/php/</A> にかなりまとめられています。 - 前田 充宏さんにより作られた<A HREF="http://pg.cni.co.jp/">PHP/FIの日本語パッチ</A>が様々な人の手を経てPHP3.0.7に適用されました。 - 現在はPHPJ-DEVにて、 - <A HREF="http://php.jpnnet.com/">http://php.jpnnet.com/</A> - 佐藤さんを中心にマルチバイト拡張として作り直され、最新版はPHP-3.0.18に対応しています。 - 塚田 卓也さんは、PHP4 用の日本語関係の拡張モジュール - <A HREF="ftp://night.fminn.nagano.nagano.jp/php4/">ftp://night.fminn.nagano.nagano.jp/php4/</A> - を用意して下さってます。 - 本家の方で国際化のMLも立ち上がっています。 - PHP-4.2 からマルチバイト拡張文字列として採り入れられました。 ] </PRE></SMALL> -<P> 処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm か mod_perl を使います。 +<P> 処理が複雑な場合、多くの人は Perl インターフェイスと CGI.pm か mod_perl を使います。 <SMALL><PRE> [訳注: @@ -623,48 +614,55 @@ Programmer's Guide</A> </PRE></SMALL> <P> -<H4><A NAME="2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェースはありますか? -レポートジェネレータや埋め込み問い合わせ言語インターフェースはありますか? +<H4><A NAME="2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェイスはありますか? </H4> - -<P> PgAccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この配布と共に出荷されます。PgAccess にはレポート・ジェネレータもあります。Web ページは<A HREF="http://www.pgaccess.org/">http://www.pgaccess.org/</A>です。 - -<P> <I>ecpg</I> という C 言語のための埋め込み <SMALL>SQL</SMALL> 問い合わせ言語インターフェースもあります。 + <p>もちろん、PostgreSQL へのグラフィカルインターフェイスがいくつかあります。 +その中にPgAccess <a + href="http://www.pgaccess.com">http://www.pgaccess.com</a> +も含まれます。 +PgAdmin II (<a + href="http://www.pgadmin.org">http://www.pgadmin.org</a> Win32-only)もあります。 +RHDB Admin (<a + href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/ +</a>)と Rekall (<a href="http://www.thekompany.com/products/rekall/"> + http://www.thekompany.com/products/rekall/</a>, proprietary)もありま +す。 +PHPPgAdmin (<a href="http://phppgadmin.sourceforge.net/"> + http://phppgadmin.sourceforge.net/ </a>) はPostgreSQLへのWebベースの +インターフェイスを提供します。 + +<P> PgAccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェイスがあり、この配布と共に出荷されます。PgAccess にはレポート・ジェネレータもあります。Web ページは<A HREF="http://www.pgaccess.org/">http://www.pgaccess.org/</A>です。 + +<P>より詳細なリストについては、<a + href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a> + をご覧ください。</P> <P> <H4><A NAME="2.4">2.4</A>) どのような言語で PostgreSQL と通信できすか? </H4> -<P>以下のものがあります: +<P>人気のあるほとんどの言語はPostgreSQLへのインターフェイスを持っています。 +あなたが使うプログラミング言語の拡張モジュールのリストを覗いてみてください。 +</P> + +<P>以下のインターフェイスはPostgreSQLの配布に含まれています。 <UL> <LI>C (libpq, libpgeasy) -<LI>C++ (libpq++) <LI>埋め込みC (ecpg) <LI>Java (jdbc) -<LI>Perl (DBD::Pg and perl5) -<LI>ODBC (odbc) <LI>Python (<A HREF="http://www.druid.net/pygresql/">PyGreSQL</A>) <LI>TCL (libpgtcl) -<LI>C Easy API (libpgeasy) -<LI>PHP ('pg_' 関数群、 Pear::DB) </UL> - <P>その他の利用可能なインターフェースは <a - href="http://www.PostgreSQL.org/interfaces.html"> - http://www.PostgreSQL.org/interfaces.html</A> - にあります。 + <P>その他の利用可能なインターフェイスは <a +href="http://www.PostgreSQL.org/interfaces.html">http://www.PostgreSQL.org/interfaces.html</a> + および、 +<a href="http://gborg.postgresql.org">http://gborg.postgresql.org</A> +の<I>Drivers/Interfaces</I>のセクションにあります。 </P> <SMALL><PRE> [訳注: - <A HREF="http://www.ruby-lang.org/">ruby</A>の作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが - ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。 - <A HREF="http://www.postgresql.jp/interfaces/ruby/">http://www.postgresql.jp/interfaces/ruby/</A> - PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。 - <A HREF="http://www.psn.co.jp/PostgreSQL/pgbash/">http://www.psn.co.jp/PostgreSQL/pgbash/</A> - Bashコマンドラインでpostgres に問い合わせできます。 - Perl のモジュールは古くからある Pg と DBI ドライバの DBD::Pg とがあり、 - いずれも Edmund Mergl 氏によるもので <A HREF="http://www.cpan.org/">CPAN サイト</A>にあります。 永安悟史さんは Palm 版の libpq を開発されました。 <a href="http://www.snaga.org/libpq/">http://www.snaga.org/libpq/</a> ] @@ -780,13 +778,12 @@ PostgreSQL Administrator's Gide PostgreSQLに許されるバックエンドのプロセス数が制限されているのは、 システムのリソースを使い果してしまうことを避けるためです。 -<P>6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更するには、<I>include/storage/sinvaladt.h</I>の中のMaxBackendId定数を修正した後に再構築が必要でした。 - <P> <H4><A NAME="3.9">3.9</A>) pgsql_tmp</I> ディレクトリの中には何がありますか? </H4> -<P> 問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし <SMALL>ORDER BY</SMALL> 句を満たすためにバックエンドの <I>-S</I> パラメータで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイルがいくつか生成されます。 +<P> 問い合わせ実行モジュールによって生成された一時的なファイルが、このディ +レクトリに含まれます。例えば、もし <SMALL>ORDER BY</SMALL> 句を満たすためにバックエンドの <I>-S</I> パラメータで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイルがいくつかここに生成されます。 <P> 一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエンドがクラッシュしてしまうとそうはなりません。<I>postmaster</I>の停止とリスタートでこれらのファイルはディレクトリから消しさられます。 @@ -794,7 +791,7 @@ PostgreSQL [訳注: SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog 付きで走らせた後、コンパイルとインストールを行ないます。 - 次に、syslog.conf に local0.* の 出力先を指定し(環境変数で変更可能)、 + 次に、syslog.conf に local?.* の 出力先を指定し(環境変数で変更可能)、 syslogd に HUP シグナルを送って初期化しておきます。そして、 $PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S オプション付きにてサーバモードで起動します。(バージョン 7.1 からは @@ -863,7 +860,7 @@ PostgreSQL <P> 制限は以下のとおりです。 <PRE> -データベースの最大サイズ? 制限無し (1 TB のデータベースも存在します) +データベースの最大サイズ? 制限無し (4 TB のデータベースも存在します) テーブルの最大サイズ? 16TB ロウの最大サイズ? 1.6TB フィールドの最大サイズ? 1GB @@ -955,13 +952,15 @@ ORDER BY LIMIT 1; </PRE> + <P>もし、オプティマイザが間違ってシーケンシャルスキャンを選択したことに疑いがなければ、<CODE>SET enable_seqscan TO 'off'</CODE>を使ってインデクススキャンでまちがいなく速くなっているかをテストをしてみてください。</P> + <P> <SMALL>LIKE</SMALL> あるいは <I>~</I> のようなワイルドカード演算 子は特別な環境でしか使えません: <UL> <LI>検索文字列が文字列の最初にききます。たとえば:</LI> <UL> - <LI><SMALL>LIKE</SMALL> パターンが<I>%.</I>で始まらない</LI> - <LI><I>~</I> (正規表現) パターンは<I>^.</I>で始まらなければならない</LI> + <LI><SMALL>LIKE</SMALL> パターンが<I>%</I>で始まらない</LI> + <LI><I>~</I> (正規表現) パターンは<I>^</I>で始まらなければならない</LI> </UL> <LI>検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。</LI> <LI><SMALL>ILIKE</SMALL> や <I>~*</I> のような大文字と小文字を区別し @@ -1067,8 +1066,8 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. <PRE> Type Internal Name Notes -------------------------------------------------- -"char" char 1 character CHAR(n) bpchar 指定された固定長となるように空白が詰められる +"char" char 1文字 VARCHAR(n) varchar 最大長のサイズを指定する、詰め物無し TEXT text 長さに上限の無いテキスト BYTEA bytea 可変長のバイト配列(null-byte safe) @@ -1077,15 +1076,9 @@ BYTEA bytea <P> 内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを受け取るときです。 -<P> 上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイトがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言された大きさよりも少し大きくなります。しかし、これらのデータ型は<SMALL>TOAST</SMALL>により圧縮されたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなります。 - - <P><SMALL>CHAR(n)</SMALL>はいつも長さが同じ文字列を保存するのに最適で -す。<SMALL>VARCHAR(n)</SMALL> は可変長の文字列を保存するのに最適ですが、 -保存できる文字列の長さに制限があります。<SMALL>TEXT</SMALL> は長さに制限 -の無い文字列の保存ためのもので、最大1ギガバイトです。 -<SMALL>BYTEA</SMALL>は、部分的に<SMALL>NULL</SMALL> のバイトを含むバイナ -リデータを保存するためのものです。</P> +<P> 上記の型のうち最初の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイトがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言された大きさよりも少し大きくなります。しかし、これらのデータ型は<SMALL>TOAST</SMALL>により圧縮されたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなります。 + <P><SMALL>VARCHAR(n)</SMALL> は可変長の文字列を保存するのに最適ですが、保存できる文字列の長さに制限があります。<SMALL>TEXT</SMALL> は長さに制限の無い文字列の保存ためのもので、最大で 1ギガバイトです。 <SMALL>CHAR(n)</SMALL>は、<SMALL>VARCHAR(n)</SMALL>が与えられた文字だけを保存するのに対し、ブランクを詰め込んでいつも同じ長さで文字列を保存するのに最適です。<SMALL>BYTEA</SMALL>は、部分的に<SMALL>NULL</SMALL> のバイトを含むバイナリデータを保存するためのものです。これらのタイプは同じくらいの性能特性ををもちます。</P> <P> <H4><A NAME="4.15.1">4.15.1</A>) 通番(serial)/自動増分フィールドはどのようにつくりますか? @@ -1142,14 +1135,10 @@ BYTEA bytea <P>それはありません。<I>currval()</I> は、すべてのユーザではありませんが、あなたのバックエンドに与えられた現在の値を返します。 -<H4><A name="4.15.4">4.15.4</A>) トランザクションが中断したときにもうい -ちどシーケンス番号が使われないのはなぜですか?シーケンス/SERIALカラムに -空きがあるのはなぜですか? +<H4><A name="4.15.4">4.15.4</A>) トランザクションが中断したときにもういちどシーケンス番号が使われないのはなぜですか?シーケンス/SERIALカラムに空きがあるのはなぜですか? </H4> - <P>同時性を改善するために、実行中のトランザクションに、必要でト -ランザクションが終了するまでロックされないシーケンス値を与えています。 -このためトランザクションが中断されると番号割り当てにギャップを生じます。 + <P>同時性を改善するために、実行中のトランザクションに、必要でトランザクションが終了するまでロックされないシーケンス値を与えています。このためトランザクションが中断されると番号割り当てにギャップを生じます。 </P> <P> @@ -1231,7 +1220,7 @@ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glo <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> @@ -1247,10 +1236,7 @@ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glo <H4><A NAME="4.22">4.22</A>) なぜ、<SMALL>IN</SMALL>を使う副問い合わせがとても遅いのですか? </H4> <P> -現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキャンす -ることにより、副問い合わせを外部問い合わせに結合しています。 -もし、副問い合わせが数行しか返さず、外部問い合わせが沢山の行を返すなら、 -当面は<CODE>IN</CODE>を<CODE>EXISTS</CODE>で置き換えることです: +現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキャンすることにより、副問い合わせを外部問い合わせに結合しています。もし、副問い合わせが数行しか返さず、外部問い合わせが沢山の行を返すなら、当面は<CODE>IN</CODE>を<CODE>EXISTS</CODE>で置き換えることです: <PRE> SELECT * FROM tab @@ -1264,7 +1250,7 @@ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glo </PRE> とします。 これが手っ取り早いですが、<CODE>subcol</CODE>は索引付きカラムであるべきです。 -この制限は将来のリリースで直したいと思っています。 +ここで示した問題は7.4で修正されます。 <P> <H4><A NAME="4.23">4.23</A>) <i>外部</i>結合(<i>outer</i> join)はどのように実現しますか?<BR></H4> @@ -1303,7 +1289,7 @@ PostgreSQL <P> 現行のデータベース以外への問い合わせ方法はありません。というのもPostgreSQLがデータベース仕様のシステムカタログを読み込むためで、そこには、たとえそのふりをするだけにしろ、データベースを越えて問い合わせをするすべがありません。 <P> -<I>/contrib/dblink</I> はデータベース間(cross-database)の問い合わせを関数呼出しにより許します。もちろん、クライアントは同時に接続を別のデータベースへも張らなくてはならず、結果をクライアント側でマージしなくてはなりません。</P> +<I>contrib/dblink</I> はデータベース間(cross-database)の問い合わせを関数呼出しにより許します。もちろん、クライアントは同時に接続を別のデータベースへも張らなくてはならず、結果をクライアント側でマージしなくてはなりません。</P> <P> @@ -1334,28 +1320,26 @@ 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> + http://www.postgresql.jp/subcommittee/dt/index.html + http://www.snaga.org/jpug-dt/ 三谷篤さんによる双方向リプリケーションPGReplicate - <A href="http://www.csra.co.jp/~mitani/jpug/pgreplicate/">http://www.csra.co.jp/~mitani/jpug/pgreplicate/</A> + http://www.csra.co.jp/~mitani/jpug/pgreplicate/ ] -</PRE></SMALL> <H4><A name="4.28">4.28</A>) どのような暗号化オプションを利用できますか? </H4> <UL> -<LI><I>/contrib/pgcrypto</I> +<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>バージョン7.3 ではデータベースユーザのパスワードは保存される時に自動的に暗号化されます。 それより前のバージョンでは<I>postgresql.conf</I>中で<I>PASSWORD_ENCRYPTION</I>を有効にする必要があります。 </LI> <LI></LI>サーバーは暗号化ファイルシステムを使って走ることもできます。 </UL> @@ -1382,7 +1366,8 @@ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a> <H4><A NAME="5.3">5.3</A>) タプルを返す C言語の関数はどのように書きますか? </H4> -<P> 原理的には可能ですが、これには究極の妙技を要しますので、著者のまわりでは未だ誰もやったことがありません。 +<P>バージョン7.3以降のPostgreSQLでは、テーブルを返す関数を C, PL/PgSQL、そして SQL にて完全にサポートします。詳しくはプログラマガイドの情報を見てください。Cで定義された表を返す関数の例題が<I>contrib/tablefunc</I>の中にあります。 + <P><H4><A NAME="5.4">5.4</A>) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか? </H4> @@ -1396,7 +1381,7 @@ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a> [訳注: 日本語版の製作については以下の通りです。 - 最終更新日: 2002年10月18日 + 最終更新日: 2003年04月10日 翻訳者: 桑村 潤 (<A HREF="mailto:juk@PostgreSQL.jp">Jun Kuwamura <juk@PostgreSQL.jp></A>) このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます): @@ -1426,7 +1411,6 @@ Atsushi SUGAWARA <asugawar at f3.dion.ne.jp></A>) <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.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="mailto:juk@PostgreSQL.jp">juk@PostgreSQL.jp</A>)までお寄せ下さい。 ]