Skip to content
Snippets Groups Projects
Commit dde302dd authored by Bruce Momjian's avatar Bruce Momjian
Browse files

Update Japanese FAQ, from Jun Kuwamura.

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