diff --git a/doc/FAQ_japanese b/doc/FAQ_japanese index 245df7e8bb..54a9da0c4c 100644 --- a/doc/FAQ_japanese +++ b/doc/FAQ_japanese @@ -1,13 +1,14 @@ PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ) -原文最終更新日: Tue Jul 10 21:01:47 EDT 2001 +原文最終更新日: Sat Sep 22 20:07:41 EDT 2001 現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us) -この文書の最新版は http://www.PostgreSQL.org/ で見ることができます。 +この文書の最新版は http://www.PostgreSQL.org/docs/faq-english.html で見ることが +できます。 -プラットホームに特有の質問については -:http://www.PostgreSQL.org/users-lounge/docs/faq.html +プラットホームに特有の質問については:http://www.PostgreSQL.org/users-lounge/ +docs/faq.html に回答があります。 (以下、訳者による注釈を [訳注: と ] とで囲んで記します。) @@ -21,9 +22,9 @@ PostgreSQL( この和訳についてお気づきの点は(juk@jp.postgresql.org)までメールでお寄せ下さい。 ] - ------------------------------------------------------------------------ - 一般的な質問 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + 一般的な質問 1.1) PostgreSQLとは何ですか? 1.2) PostgreSQLの著作権はどうなってますか? @@ -40,34 +41,34 @@ PostgreSQL( 1.13) バグレポートはどのように発信しますか? 1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか? - ユーザー・クライアントの質問 + ユーザー・クライアントの質問 2.1) PostgreSQL の ODBC ドライバーはありますか? 2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか? -2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか? レポー -トジェネレータは? 埋め込み問い合わせ言語インターフェースは? +2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポートジ +ェネレータは?埋め込み問い合わせ言語インターフェースは? 2.4) PostgreSQL と通信するにはどんな言語が使えますか? - 管理上の質問 + 管理上の質問 3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか? -3.2) postmaster を走らせると、 Bad System Call とかコア・ダンプしたとのメッ -セージが出ます。なぜですか? -3.3) postmaster を走らせようとすると、 IpcMemoryCreate エラーが出ます。なぜ -ですか? -3.4) postmasterを走らせようとすると、 IpcSemaphoreCreate エラーが出ます。な -ぜですか? -3.5) 他のホストから自分のPostgreSQLデータベースへのアクセスを防ぐにはどうし -ますか? +3.2) postmaster を走らせると、 Bad System Call とかコア・ダンプしたとのメッセー +ジが出ます。なぜですか? +3.3) postmaster を走らせようとすると、 IpcMemoryCreate エラーが出ます。なぜです +か? +3.4) postmasterを走らせようとすると、 IpcSemaphoreCreate エラーが出ます。なぜで +すか? +3.5) 他のホストから自分のPostgreSQLデータベースへのアクセスを防ぐにはどうします +か? 3.6) なぜ、他のマシンから自分のデータベースに接続できないのでしょうか? -3.7) より良い性能を得るためには、データベース・エンジンをどのように調整すれ -ば良いですか? +3.7) より良い性能を得るためには、データベース・エンジンをどのように調整すれば良 +いですか? 3.8) どのようなデバグ機能が使えますか? 3.9) 接続しようとするときに 'Sorry, too many clients' が出ます。なぜですか? -3.10) 自分のデータベース・ディレクトリにある pg_sorttemp.XXX ファイルは何で -すか? +3.10) 自分のデータベース・ディレクトリにある pg_sorttemp.XXX ファイルは何ですか +? - 操作上の質問 + 操作上の質問 4.1) なぜ、システムはカンマや小数点や日付フォーマットで混乱するのですか? 4.2) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか? @@ -75,121 +76,121 @@ PostgreSQL( 4.4) テーブルやその他の情報のリストを psql で見るにはどうしますか? 4.5) テーブルから列の削除はどのようにしますか? 4.6) 行、テーブル、データベースの最大サイズは? -4.7) 一般的なテキストファイルからデータを保存するには、 データベースのディス -ク容量はどのくらい必要ですか? -4.8) データベース内に定義されたテーブルやインデックスをどのようにして見つけ -出しますか? -4.9) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜで -すか? -4.10) 問い合わせオブティマイザがどのように問い合わせを評価するかを見るにはど -うしますか? +4.7) 一般的なテキストファイルからデータを保存するには、データベースのディスク容 +量はどのくらい必要ですか? +4.8) データベース内に定義されたテーブルやインデックスをどのようにして見つけ出し +ますか? +4.9) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか +? +4.10) 問い合わせオブティマイザがどのように問い合わせを評価するかを見るにはどう +しますか? 4.11) R-tree インデックスとは何ですか? 4.12) 遺伝的問い合わせ最適化とは何ですか? -4.13) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように -実現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのよう -に使いますか? -4.14) 問い合わせの中で、フィールドが NULL であることを検出するにはどうします -か? +4.13) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実 +現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのように使 +いますか? +4.14) 問い合わせの中で、フィールドが NULL であることを検出するにはどうしますか +? 4.15) 色々な文字型のそれぞれの違いは何ですか? 4.16.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? 4.16.2) SERIALデータ型に挿入される値は、どうすれば得られますか? -4.16.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使 -わないほうがよいのでしょうか? +4.16.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使わな +いほうがよいのでしょうか? 4.17) OID とは何ですか? TID とは何ですか? 4.18) PostgreSQL で使われるいくつかの用語の意味は何ですか? -4.19) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るの -はなぜですか? -4.20) どのバージョンの PostgreSQL を走らせているのかを調べるにはどうします -か? -4.21) ラージオブジェクトの操作で、invalid large obj descriptorと出ます。なぜ -ですか? +4.19) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るのはな +ぜですか? +4.20) どのバージョンの PostgreSQL を走らせているのかを調べるにはどうしますか? +4.21) ラージオブジェクトの操作で、invalid large obj descriptorと出ます。なぜで +すか? 4.22) 現在の時刻がデフォルトとなるような列はどのようにつくりますか? 4.23) なぜ、INを使う副問い合わせがとても遅いのですか? 4.24) 外部結合(outer join)はどのように実現しますか? +4.25) 複数のデータベースを使う問い合わせはどのようにすればできますか? - PostgreSQLの拡張についての質問 + PostgreSQLの拡張についての質問 -5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしま -うのはなぜですか? -5.2) PostgreSQL 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクト -に貢献したいのですが? +5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうの +はなぜですか? +5.2) PostgreSQL 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクトに +貢献したいのですが? 5.3) タプルを返す C言語の関数はどのように書きますか? -5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのは -なぜですか? +5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜ +ですか? - ------------------------------------------------------------------------ - - 一般的な質問 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + 一般的な質問 1.1) PostgreSQL とは何ですか? -PostgreSQL は次世代 DBMS 研究用のプロトタイプであった POSTGRES データベース -管理システムの改良版です。PostgreSQL は POSTGRES の強力なデータ・モデルと豊 -富なデータ・タイプ(型)を保持しながら、POSTGRES で使われた PostQuel 問い合わ -せ言語を、拡張した SQL のサブセットに置き換えています。PostgreSQL は無料で完 -全なソースを利用できます。 +PostgreSQL は次世代 DBMS 研究用のプロトタイプであった POSTGRES データベース管理 +システムの改良版です。PostgreSQL は POSTGRES の強力なデータ・モデルと豊富なデー +タ・タイプ(型)を保持しながら、POSTGRES で使われた PostQuel 問い合わせ言語を、拡 +張した SQL のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利 +用できます。 -PostgreSQL の開発は、PostgreSQL 開発メーリングリストに参加しているインターネ -ット上の開発者チームですべて行なわれています。現在の座長は Marc G. Fournier -( scrappy@PostgreSQL.org )です。(以下に参加の仕方があります。)現在、このチー -ムが PostgreSQL 開発のすべての面倒をみています。 +PostgreSQL の開発は、PostgreSQL 開発メーリングリストに参加しているインターネッ +ト上の開発者チームですべて行なわれています。現在の座長は Marc G. Fournier ( +scrappy@PostgreSQL.org )です。(以下に参加の仕方があります。)現在、このチームが +PostgreSQL 開発のすべての面倒をみています。 -Postgres95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen でしたが、その他 -大勢の人々がこのコードの移植、テスト、デバグ、および、改良に参加しました。 -PostgreSQL の派生元コードである POSTGRES はカリフォルニア大学バークレイ校に -おいて、 Michael Stonebraker 教授の指揮のもと、多くの学生、卒業生、本職のプ -ログラマたちの努力により作られました。 +Postgres95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen でしたが、その他大勢 +の人々がこのコードの移植、テスト、デバグ、および、改良に参加しました。 +PostgreSQL の派生元コードである POSTGRES はカリフォルニア大学バークレイ校におい +て、 Michael Stonebraker 教授の指揮のもと、多くの学生、卒業生、本職のプログラマ +たちの努力により作られました。 -バークレイにおけるこのソフトウェアのもとの名前は Postgres でしたが、SQL の機 -能が追加された 1995 年にその名前は Postgres95 に変更され、1996 年の終りにそ -の名前は PostgreSQL に変更されました。 Post-Gres-Q-L.(ポスト - グレス - キュ -ー - エル) と発音します。 +バークレイにおけるこのソフトウェアのもとの名前は Postgres でしたが、SQL の機能 +が追加された 1995 年にその名前は Postgres95 に変更され、1996 年の終りにその名前 +は PostgreSQL に変更されました。 Post-Gres-Q-L.(ポスト - グレス - キュー - エ +ル) と発音します。 1.2) PostgreSQL の著作権はどうなってますか? PostgreSQL は下記の著作権に従います。 - [訳注: 正文は英語です。参考として、訳文を併記掲載します。 ] + PostgreSQL Data Base Management System -Portions Copyright (c) 1996-2000, PostgreSQL Global Development Group -Portions Copyright (c) 1994-6 Regents of the University of California +Portions Copyright (c) 1996-2000, PostgreSQL Global Development Group Portions +Copyright (c) 1994-6 Regents of the University of California Permission to use, copy, modify, and distribute this software and its -documentation for any purpose, without fee, and without a written agreement -is hereby granted, provided that the above copyright notice and this -paragraph and the following two paragraphs appear in all copies. +documentation for any purpose, without fee, and without a written agreement is +hereby granted, provided that the above copyright notice and this paragraph and +the following two paragraphs appear in all copies. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR -DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING -LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, -EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST +PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF +THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. -THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN -"AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO -PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND +THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, +SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. POSTGRESQL データベース管理システム 部分的著作権 (c) 1996-2001, PostgreSQL国際開発チーム 部分的著作権 (c) 1994-6 カリフォルニア大学本校 + 本ソフトウェアおよびその文書一式は上記の著作権表示と、この文章 およびこれに続く二つの段落が全ての複製に添付されている限りにおい て、使用、複製、修正および配付の許可を、いかなる目的であっも、無 償でかつ同意書無しに行なえることをここに認めます。 - + カリフォルニア大学は、いかなる当事者にたいしても、利益の壊失を 含む、直接的、間接的、特別、偶然あるいは必然的にかかわらず生じた 損害について、たとえカリフォルニア大学がこれらの損害について訴追 を受けていたとしても、一切の責任を負いません。 - + カリフォルニア大学は、商用目的における暗黙の保証と、特定目的で の適合性に関してはもとより、これらに限らず、いかなる保証も放棄す ることを明言します。以下に用意されたソフトウェアは「そのまま」を @@ -201,42 +202,43 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 参考です。 ] + 1.3) PostgreSQL の動作環境は? -著者らは PostgreSQL のコンパイルとテストを次のプラットホーム上で行ないまし -た。(これらのうちのいくつかはコンパイルに gcc が必要です): +著者らは PostgreSQL のコンパイルとテストを次のプラットホーム上で行ないました。 +(これらのうちのいくつかはコンパイルに gcc が必要です): -一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずで -す。リリースの時点で実際にテストを行なったことの報告がなされたプラットホーム -についてはインストール手引書に列挙してあります。 +一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずです +。リリースの時点で実際にテストを行なったことの報告がなされたプラットホームにつ +いてはインストール手引書に列挙してあります。 1.4) Unix以外の移植版で使えるものは? クライアント -MS Windows プラットホーム上で、libpq C ライブラリ、psql、それとその他のイン -ターフェースは コンパイル可能で、バイナリーが走ります。この場合、クライアン -トを MS Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラット -ホーム上で走るサーバと通信します。 +MS Windows プラットホーム上で、libpq C ライブラリ、psql、それとその他のインター +フェースはコンパイル可能で、バイナリーが走ります。この場合、クライアントを MS +Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走 +るサーバと通信します。 Win32 libpq ライブラリと psql を作るために、win31.mak が配布に含まれてます。 PostgreSQLは ODBC クライアントとも通信できます。 サーバ -現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベー -スサーバは Windows NT と Win2k 上で稼働しています。配布に含まれる -pgsql/doc/FAQ_MSWINあるいはウェブサイトにある MS Windows FAQ をご覧下さい。 -Microsoft の素のプラットホームに移植する計画はありません。 +現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベース +サーバは Windows NT と Win2k 上で稼働しています。配布に含まれるpgsql/doc/ +FAQ_MSWINあるいはウェブサイトにある MS Windows FAQ をご覧下さい。Microsoft の素 +のプラットホームに移植する計画はありません。 1.5) PostgreSQL はどこから入手できますか? PostgreSQL の元の anonymous ftp サイトです: - - * ftp://ftp.PostgreSQL.org/pub/ + + + ・ ftp://ftp.PostgreSQL.org/pub/ ミラーサイトについては、我々のメイン Web ページをご覧下さい。 - [訳注: 以下は日本のミラーサイトです: @@ -254,47 +256,44 @@ PostgreSQL Japan: ftp://ring.aist.go.jp/pub/misc/db/postgresql/ ] + 1.6) サポートはどこで受けられますか? -主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に -関することであれば議論ができます。このリストへの参加のは、電子メールの本文 -(Subject 行ではありません)に次の2行を書いて、 - +主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に関す +ることであれば議論ができます。このリストへの参加のは、電子メールの本文(Subject +行ではありません)に次の2行を書いて、 subscribe end pgsql-general-request@PostgreSQL.org へ送って下さい。 -ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文" -に: - +ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"に: subscribe end +と書いて pgsql-general-digest-request@PostgreSQL.org へ電子メールを送って下さい +。 -と書いて pgsql-general-digest-request@PostgreSQL.org へ電子メールを送って下 -さい。 +ダイジェスト版は、メインリストで受信するメッセージが 30k 程度溜る毎にダイジェス +ト版リストのメンバーに送付されます。 -ダイジェスト版は、メインリストで受信するメッセージが 30k 程度溜る毎にダイジ -ェスト版リストのメンバーに送付されます。 +バグレポート用のメーリングリストもあります。このリストへの参加は "本文"といっし +ょに: bugs-request@PostgreSQL.org へ電子メールを送って下さい。 -バグレポート用のメーリングリストもあります。このリストへの参加は "本文"とい -っしょに: bugs-request@PostgreSQL.org へ電子メールを送って下さい。 - -開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子 -メールの本文に: +開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メ +ールの本文に: subscribe end と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。 -PostgreSQL についてもっと詳しく知りたければ、次の postgreSQL WWWホームページ -からたどれます: +PostgreSQL についてもっと詳しく知りたければ、次の postgreSQL WWWホームページか +らたどれます: + + http://www.PostgreSQL.org - http://www.PostgreSQL.org - -EFNet に #PostgreSQL という IRC チャンネルもあります。 unix コマンドでirc -c -'#PostgreSQL' "$USER" irc.phoenix.net を使います。 +EFNet に #PostgreSQL という IRC チャンネルもあります。 unix コマンドでirc -c '# +PostgreSQL' "$USER" irc.phoenix.net/ を使います。 [訳注: 1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。 @@ -309,27 +308,28 @@ EFNet で検索することもできます。 ] -商用サポート会社のリストは -http://www.postgresql.org/users-lounge/commercial-support.htmlにあります。 +商用サポート会社のリストはhttp://www.postgresql.org/users-lounge/ +commercial-support.htmlにあります。 [訳注: 日本では、SRA Inc. オープンシステム事業部 にて商用サポートが行なわれています。 ミラクル・リナックス株式会社 で "Miracle Linux for PostgreSQL" の販売とサポートが 開始されました。 ] + 1.7) 最新版はどれですか -PostgreSQL の最新版はバージョン 7.1.2 です。 +PostgreSQL の最新版はバージョン 7.1.3 です。 我々は、4カ月毎にメジャーリリースを行なうことを計画しています。 1.8) どのような文書がありますか? -配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ) -およびいくつかの小さなテスト例題が含まれます。/doc ディレクトリをご覧下さ -い。また、マニュアルは、 http://www.PostgreSQL.org/users-lounge/docs/ でオン -ラインでも閲覧できます。 +配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)お +よびいくつかの小さなテスト例題が含まれます。/doc ディレクトリをご覧下さい。また +、マニュアルは、 http://www.PostgreSQL.org/users-lounge/docs/ でオンラインでも +閲覧できます。 PostgreSQL の本もあります。 http://www.PostgreSQL.org/docs/awbook.html @@ -338,30 +338,31 @@ PostgreSQL 翻訳作業が進行中。 ] -psql も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴ら -しい \d コマンドを持ちます。 + +psql も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴らしい +\d コマンドを持ちます。 我々の Web サイトには、もっと沢山の文書があります。 1.9) 既知のバグや未だ無い機能はどうやって見つけますか? -PostgreSQLは拡張されたSQL-92のサブセットをサポートします。 我々のページの -TODO リストに、既知のバグや欠落機能や将来計画についての記述があります。 +PostgreSQLは拡張されたSQL-92のサブセットをサポートします。我々のページの TODO +リストに、既知のバグや欠落機能や将来計画についての記述があります。 1.10) SQL はどうすれば学べますか? -http://www.PostgreSQL.org/docs/awbook.html にあるPostgreSQL本で SQL を教えて -います。 +http://www.PostgreSQL.org/docs/awbook.html にあるPostgreSQL本で SQL を教えてい +ます。 -素晴らしい学習書には、 http://w3.one.net/~jhoffman/sqltut.htm と -http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM. +素晴らしい学習書には、 http://w3.one.net/~jhoffman/sqltut.htm と http:// +ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM. -とがあります。その他に、 "Teach Yourself SQL in 21 Days, Second Edition" -が、 http://members.tripod.com/er4ebus/sql/index.htm にあります。 +とがあります。その他に、 "Teach Yourself SQL in 21 Days, Second Edition" が、 +http://members.tripod.com/er4ebus/sql/index.htm にあります。 多くのユーザに、 The Practical SQL Handbook, Bowman Judith S. et al., -Addison-Wesley が好評です。 その他に、The Complete Reference SQL, Groff et -al., McGraw-Hill のようなのもあります。 +Addison-Wesley が好評です。その他に、The Complete Reference SQL, Groff et al., +McGraw-Hill のようなのもあります。 [訳注: 石井達夫氏による日本語の参考文献の紹介ページ @@ -380,114 +381,114 @@ al., McGraw-Hill 1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか? -対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡単に扱 -えます。 +対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡単に扱え +ます。 1.12) 開発チームにはどのように参加しますか? -まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に -含まれている PostgreSQL Developersの文書を読みます。 2番目に、pgsql-hackers -と pgsql-patches メーリング・リストを購読(subscribe)します。 3番目に、高品 -質のパッチをpgsql-patchesに発信します。 およそ十人ちょっとの人達が、 -PostgreSQL CVSアーカイブにコミットする権限を持っています。 そのそれぞれの人 -達が沢山の高品質なパッチを発信するので、現在コミッターとなっている人達はそれ -に追い付くのが大変ですが、我々は彼らがコミットしたパッチは高品質であると確信 -しています。 +まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に含ま +れている PostgreSQL Developersの文書を読みます。2番目に、pgsql-hackers と +pgsql-patches メーリング・リストを購読(subscribe)します。3番目に、高品質のパッ +チをpgsql-patchesに発信します。およそ十人ちょっとの人達が、PostgreSQL CVSアーカ +イブにコミットする権限を持っています。そのそれぞれの人達が沢山の高品質なパッチ +を発信するので、現在コミッターとなっている人達はそれに追い付くのが大変ですが、 +我々は彼らがコミットしたパッチは高品質であると確信しています。 1.13) バグレポートはどのように発信しますか? -"bug-template" ファイルの項目を満たして、pgsql-bugs@PostgreSQL.orgに送って下 -さい。 +"bug-template" ファイルの項目を満たして、pgsql-bugs@PostgreSQL.orgに送って下さ +い。 その前に http://postgreSQL.orgにある最新の FAQ をチェックして下さい。 -それと同時に ftp サイト ftp://ftp.postgreSQL.org/pub/で、もっと新しいバージ -ョンの PostgreSQL あるいはパッチをさがしてみて下さい。 +それと同時に ftp サイト ftp://ftp.postgreSQL.org/pub/で、もっと新しいバージョン +の PostgreSQL あるいはパッチをさがしてみて下さい。 1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか? -ソフトウェアを計る方法にはいくつかあります。機能と性能と信頼性とサポートと価 -格です。 +ソフトウェアを計る方法にはいくつかあります。機能と性能と信頼性とサポートと価格 +です。 機能(Features) - PostgreSQLは、トランザクション、副問い合わせやトリガーやビューや外部キ - ー 参照や、そして、洗練されたロック機構など、大規模商用DBMSが持つ機能を - ほ とんど持っています。PostgreSQLは、さらに、ユーザ定義型や継承やマルチ - - バージョン・コンテンションなど、商用DBMSが持ち合わせない機能をいくつ - か 持ち合わせています。外部キーの参照整合性(foreign key referential - integrity)やロック・コンテンションを減らすための外部競合状態制御 (outer - concurrency control)は持ち合わせません。 - + PostgreSQLは、トランザクション、副問い合わせやトリガーやビューや外部キー参 + 照や、そして、洗練されたロック機構など、大規模商用DBMSが持つ機能をほとんど + 持っています。PostgreSQLは、さらに、ユーザ定義型や継承やマルチ- バージョン + ・コンテンションなど、商用DBMSが持ち合わせない機能をいくつか持ち合わせてい + ます。外部キーの参照整合性(foreign key referential integrity)やロック・コン + テンションを減らすための外部競合状態制御 (outer concurrency control)は持ち + 合わせません。 + + 性能(Performance) - PostgreSQLは二つのモードで走ります。普通のfsyncモードは、OSがク ラッシ - ュしたり、数秒後に電源が落ちたりしたときのために、トランザクショ ンが完 - 了する毎にディスクに書き込み、すべてのデータをディスクに保存しま す。こ - のモードでは、ほとんどの商用データベースよりも遅くなりますが、そ の部分 - 的な理由として、商用のデータベースの中にはこのように保守的なディ スク書 - き込みをデフォルトとしているものが少ないということもあります。 no-fsync - モードで、普通、PostgreSQLは商用データベースよりも速く なりますが、しか - しながら、OSのクラッシュでデータが破壊されるかもしれま せん。我々は、そ - の中間モードを開発中で、それがうまくゆくと、完全fsync モードほど性能を - 犠牲にすることなく、OSがクラッシュする30秒前までのデー タ整合性を保てる - ようになります。 - - MySQLなどの特化型データベース・システムにくらべて、PostgreSQLの挿入/ - 更新が遅いのは、トランザクションによるオーバーヘッドがあるからです。も - ちろん、MySQLには上記のFeaturesの節に示すような機能はまったくあ りませ - ん。我々は、PostgreSQLに柔軟性と機能性を組み込みながらも、絶えず、 プロ - ファイラーに掛けたりソースコードを解析したりして、性能の改善を続け てい - ます。PostgreSQL と MySQL とを比較している面白い Web ページが - http://openacs.org/why-not-mysql.html にあります。 - - PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作しま - す。 複数のバックエンド・プロセスが情報をロックしながらデータ・バッファ - ーを 共有します。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPU - で走 らせることができます。 - + PostgreSQLは二つのモードで走ります。普通のfsyncモードは、OSがクラッシュした + り、数秒後に電源が落ちたりしたときのために、トランザクションが完了する毎に + ディスクに書き込み、すべてのデータをディスクに保存します。このモードでは、 + ほとんどの商用データベースよりも遅くなりますが、その部分的な理由として、商 + 用のデータベースの中にはこのように保守的なディスク書き込みをデフォルトとし + ているものが少ないということもあります。 no-fsyncモードで、普通、PostgreSQL + は商用データベースよりも速くなりますが、しかしながら、OSのクラッシュでデー + タが破壊されるかもしれません。我々は、その中間モードを開発中で、それがうま + くゆくと、完全fsync モードほど性能を犠牲にすることなく、OSがクラッシュする + 30秒前までのデータ整合性を保てるようになります。 + + MySQLなどの特化型データベース・システムにくらべて、PostgreSQLの挿入/更新が + 遅いのは、トランザクションによるオーバーヘッドがあるからです。もちろん、 + MySQLには上記のFeaturesの節に示すような機能はまったくありません。我々は、 + PostgreSQLに柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛け + たりソースコードを解析したりして、性能の改善を続けています。PostgreSQL と + MySQL とを比較している面白い Web ページが http://openacs.org/ + why-not-mysql.html にあります。 + + PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複 + 数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有し + ます。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせること + ができます。 + + 信頼性(Reliability) - 我々は、DBMSの信頼性が高くなくてはその価値が無いことを理解してます。十 - 分テストして、安定したコードをバグを最小にしてからリリースするように勤 - めてます。それぞれのリリースは少なくとも1カ月以上のベータ・テストを行 - ない、これまでのリリースの履歴が、製品版として安定した堅固なリリースで - あることを物語っています。この分野では、他のデータベースと比べても遜色 - がないことに自信を持っています。 + 我々は、DBMSの信頼性が高くなくてはその価値が無いことを理解してます。十分テ + ストして、安定したコードをバグを最小にしてからリリースするように勤めてます + 。それぞれのリリースは少なくとも1カ月以上のベータ・テストを行ない、これまで + のリリースの履歴が、製品版として安定した堅固なリリースであることを物語って + います。この分野では、他のデータベースと比べても遜色がないことに自信を持っ + ています。 サポート(Support) - 我々のメーリングリストは、遭遇するいかなる問題についても解決への手 助け - をしてくれる、開発者やユーザの大きな集まりを提供しています。我々は 問題 - の解決を保証することはできませんが、商用データベースであっても常に 解決 - されるわけではありません。開発者や、ユーザ・コミュニティ、マニュア ル - 類、それに、ソースコードなどへ直接アクセスできることよって、 PostgreSQL - のサポートは、他のDBMSサポートよりも優れたものとなっています。 御要望に - 答えて、事柄毎の商用サポートなどもあります(サポートFAQ項目をご覧 下さ - い)。 + 我々のメーリングリストは、遭遇するいかなる問題についても解決への手助けをし + てくれる、開発者やユーザの大きな集まりを提供しています。我々は問題の解決を + 保証することはできませんが、商用データベースであっても常に解決されるわけで + はありません。開発者や、ユーザ・コミュニティ、マニュアル類、それに、ソース + コードなどへ直接アクセスできることよって、 PostgreSQLのサポートは、他のDBMS + サポートよりも優れたものとなっています。御要望に答えて、事柄毎の商用サポー + トなどもあります(サポートFAQ項目をご覧下さい)。 価格(Price) - PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあ - るBSDスタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで - 商品に組み込むことができます。 - - ------------------------------------------------------------------------ - - ユーザー・クライアントの質問 + PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあるBSD + スタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで商品に組み + 込むことができます。 + + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + ユーザー・クライアントの質問 2.1) PostgreSQL のための ODBC ドライバーはありますか? PsqlODBC と OpenLink ODBC の二つの ODBC ドライバーが利用可能です。 -PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情 -報は ftp://ftp.PostgreSQL.org/pub/odbc/ から取得できます。 +PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情報は +ftp://ftp.PostgreSQL.org/pub/odbc/ から取得できます。 [訳注: PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました: ●http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html ] -OpenLink ODBC は http://www.openlinksw.com/から入手できます。標準的な ODBC -クライアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム -(Win, Mac, Unix, VMS)から PostgreSQL の ODBC が利用できます。 -たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリー -ウェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.ukにお -願いします。 Programmer's Guide の ODBC の章もご覧ください。 +OpenLink ODBC は http://www.openlinksw.com/から入手できます。標準的な ODBC クラ +イアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム(Win, +Mac, Unix, VMS)から PostgreSQL の ODBC が利用できます。 + +たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリーウ +ェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.ukにお願いし +ます。 Programmer's Guide の ODBC の章もご覧ください。 2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか? @@ -496,9 +497,8 @@ http://www.webtools.com http://www.phone.net/home/mwm/hotlist/にも、もう一つあります。 -Web への拡張のためには、PHP が卓越したインターフェースとなっています。 -http://www.php.net/にあります。 - +Web への拡張のためには、PHP が卓越したインターフェースとなっています。http:// +www.php.net/にあります。 [訳注: PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト http://www.php.gr.jp/ @@ -515,8 +515,8 @@ http://www.php.net/ 本家の方で国際化のMLも立ち上がっています。 ] -処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。 +処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。 [訳注: WDB は、Web から DataBase への Perl の Interface です。 wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。 @@ -527,30 +527,32 @@ http://www.php.net/ とがあります。その経緯はよくわかりません。 ] -2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか? レポー -ト・ジェネレータは? 埋め込み問い合わせ言語へのインターフェースは? -pgaccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、 -この配布と共に出荷されます。Pgaccess にはレポート・ジェネレータもあります。 -Web ページはhttp://www.flex.ro/pgaccessです。 +2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポート・ +ジェネレータは?埋め込み問い合わせ言語へのインターフェースは? -ecpg という C 言語のための埋め込み SQL 問い合わせ言語インターフェースもあり -ます。 +pgaccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この +配布と共に出荷されます。Pgaccess にはレポート・ジェネレータもあります。Web ペー +ジはhttp://www.flex.ro/pgaccessです。 + +ecpg という C 言語のための埋め込み SQL 問い合わせ言語インターフェースもあります +。 2.4) PostgreSQL と通信するにはどんな言語が使えますか? 以下のものがあります: - - * C (libpq) - * C++ (libpq++) - * 埋め込みC (ecpg) - * Java (jdbc) - * Perl (perl5) - * ODBC (odbc) - * Python (PyGreSQL) - * TCL (libpgtcl) - * C Easy API (libpgeasy) - * 埋め込みHTML (PHP from http://www.php.net) + + + ・ C (libpq) + ・ C++ (libpq++) + ・ 埋め込みC (ecpg) + ・ Java (jdbc) + ・ Perl (perl5) + ・ ODBC (odbc) + ・ Python (PyGreSQL) + ・ TCL (libpgtcl) + ・ C Easy API (libpgeasy) + ・ 埋め込みHTML (PHP from http://www.php.net) [訳注: rubyの作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが @@ -563,201 +565,196 @@ ecpg いずれも Edmund Mergl 氏によるもので CPAN サイトにあります。 ] - ------------------------------------------------------------------------ - 管理上の質問 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + 管理上の質問 3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか? -簡単な方法は、 configure を走らせるときに --prefix オプションを指定すること -です。 +簡単な方法は、 configure を走らせるときに --prefix オプションを指定することです +。 -3.2) postmaster を走らせると、Bad System Call とかコア・ダンプしたとのメッセ -ージが出ます。なぜですか? +3.2) postmaster を走らせると、Bad System Call とかコア・ダンプしたとのメッセー +ジが出ます。なぜですか? -さまざまな問題が考えられますが、まず最初にあなたのカーネルに System V IPC の -拡張がインストールされているかを確認して見てください。PostgreSQL はカーネル -による共有メモリーとセマフォのサポートを必要とします。 +さまざまな問題が考えられますが、まず最初にあなたのカーネルに System V IPC の拡 +張がインストールされているかを確認して見てください。PostgreSQL はカーネルによる +共有メモリーとセマフォのサポートを必要とします。 -3.3) postmaster を走らせようとすると、IpcMemoryCreate エラーが出ます。なぜで +3.3) postmaster を走らせようとすると、IpcMemoryCreate エラーが出ます。なぜです +か? + +カーネルが共有メモリーを持つ設定になっていなかったか、でなければ、カーネルに対 +して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大きさは +、使っているアーキテクチャとpostmaster を走らせるときに設定するバッファの数とバ +ックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッファサイズ +のままで、少なくとも約1MBが必要です。 PostgreSQL Administrator's Gide に共有メ +モリーとセマフォについての情報の詳細があります。 + +3.4) postmasterを走らせようとすると、IpcSemaphoreCreate エラーが出ます。なぜで すか? -カーネルが共有メモリーを持つ設定になっていなかったか、でなければ、カーネルに -対して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大き -さは、使っているアーキテクチャとpostmaster を走らせるときに設定するバッファ -の数とバックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッ -ファサイズのままで、少なくとも約1MBが必要です。 PostgreSQL Administrator's -Gide に共有メモリーとセマフォについての情報の詳細があります。 - -3.4) postmasterを走らせようとすると、IpcSemaphoreCreate エラーが出ます。なぜ -ですか? - もしエラーメッセージがIpcSemaphoreCreate: semget failed (No space left on device)であれば、カーネルが十分なセマフォを使えるように構成されていません。 -Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要とします。とり -あえずの解決策はpostmasterを起動するときに、バックエンドプロセスの数をより少 -なく制限をすることです。既定値の32より小さな数のパラメータを-Nで使います。よ -り恒久的な解決策は、カーネルのSEMMNS と SEMMNI パラメータを増やすことです。 +Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要とします。とりあ +えずの解決策はpostmasterを起動するときに、バックエンドプロセスの数をより少なく +制限をすることです。既定値の32より小さな数のパラメータを-Nで使います。より恒久 +的な解決策は、カーネルのSEMMNS と SEMMNI パラメータを増やすことです。 -もし、エラーメッセージがなにか他のものであれば、カーネルの構成でまったくセマ -フォのサポートをしていないかもしれません。 PostgreSQL Administrator's Gide -に共有メモリーとセマフォについての情報の詳細があります。 +もし、エラーメッセージがなにか他のものであれば、カーネルの構成でまったくセマフ +ォのサポートをしていないかもしれません。 PostgreSQL Administrator's Gide に共有 +メモリーとセマフォについての情報の詳細があります。 -3.5) 他のホストから自分の PostgreSQL データベースへのアクセスを防ぐにはどう -しますか? +3.5) 他のホストから自分の PostgreSQL データベースへのアクセスを防ぐにはどうしま +すか? -既定値では、PostgreSQL は unix ドメインソケットを使うローカルマシンからの接 -続しか許しません。postmaster 起動に -i フラッグを加え、$PGDATA/pg_hba.conf -ファイルを適切に直して、ホスト主導型の認証を使わないかぎりは他のマシンからは -接続できないでしょう。これによりTCP/IPの接続が可能になります。 +既定値では、PostgreSQL は unix ドメインソケットを使うローカルマシンからの接続し +か許しません。postmaster 起動に -i フラッグを加え、$PGDATA/pg_hba.conf ファイル +を適切に直して、ホスト主導型の認証を使わないかぎりは他のマシンからは接続できな +いでしょう。これによりTCP/IPの接続が可能になります。 -操作不能なセマフォも過度のデータベースアクセス中にクラッシュを引き起こすこと -があります。 +操作不能なセマフォも過度のデータベースアクセス中にクラッシュを引き起こすことが +あります。 3.6) 他のマシンから自分のデータベースに接続できないのはなぜですか? -既定の設定ではローカルマシンからの unix ドメインのソケット接続しか許しませ -ん。TCP/IP 接続を可能にするには postmaster が -i オプションで開始されてい -て、pgsql/data/pg_hba.conf ファイルに適切なホストの記載が追加されていること -を確認してください。 +既定の設定ではローカルマシンからの unix ドメインのソケット接続しか許しません。 +TCP/IP 接続を可能にするには postmaster が -i オプションで開始されていて、pgsql/ +data/pg_hba.conf ファイルに適切なホストの記載が追加されていることを確認してくだ +さい。 -3.7) より良い性能を得るためには、データベース・エンジンをどのように調整すれ -ば良いですか? +3.7) より良い性能を得るためには、データベース・エンジンをどのように調整すれば良 +いですか? -確かにインデックスは問い合わせの速度を増します。EXPLAINコマンドで PostgreSQL -がどのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どの -インデックスが使われているかを見ることができます。 +確かにインデックスは問い合わせの速度を増します。EXPLAINコマンドで PostgreSQL が +どのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どのイン +デックスが使われているかを見ることができます。 -もし INSERT を多用している場合は、COPY コマンドを使って大きなバッチ処理でそ -れを行なうことを検討して下さい。これは、INSERT を別々に行なうよりもっと高速 -です。次に、BEGIN WORK/COMMIT のトランザクション・ブロックの中に無い文は、そ -れら自身がそれぞれのトランザクションに入っていると見なされます。いくつかの文 -を一つのトランザクション・ブロックの中で行なうことを考えて下さい。これにより -トランザクションのオーバーヘッドが減ります。また、大きなデータの変更を行なう -際はインデックスを一度外して、作り直すことを考えてみて下さい。 +もし INSERT を多用している場合は、COPY コマンドを使って大きなバッチ処理でそれを +行なうことを検討して下さい。これは、INSERT を別々に行なうよりもっと高速です。次 +に、BEGIN WORK/COMMIT のトランザクション・ブロックの中に無い文は、それら自身が +それぞれのトランザクションに入っていると見なされます。いくつかの文を一つのトラ +ンザクション・ブロックの中で行なうことを考えて下さい。これによりトランザクショ +ンのオーバーヘッドが減ります。また、大きなデータの変更を行なう際はインデックス +を一度外して、作り直すことを考えてみて下さい。 -チューニングのオプションがいくつかあります。postmaster を -o -F オプションで -起動することによって、fsync() を無効にすることができます。これによって、各ト -ランザクション毎に fsync() でディスクを更新するのを止めさせます。 +チューニングのオプションがいくつかあります。postmaster を -o -F オプションで起 +動することによって、fsync() を無効にすることができます。これによって、各トラン +ザクション毎に fsync() でディスクを更新するのを止めさせます。 -postmaster -B オプションを使ってバックエンド・プロセスにより使われる共有メモ -リー・バッファを大きくすることもできます。もし、このパラメータを高くしすぎる -と、カーネルの共有メモリー空間の制限値を越えてしまっうために postmaster が走 -らなくなるでしょう。既定値では、それぞれのバッファの大きさは 8K で、バッファ -数は 64 です。 +postmaster -B オプションを使ってバックエンド・プロセスにより使われる共有メモリ +ー・バッファを大きくすることもできます。もし、このパラメータを高くしすぎると、 +カーネルの共有メモリー空間の制限値を越えてしまっうために postmaster が走らなく +なるでしょう。既定値では、それぞれのバッファの大きさは 8K で、バッファ数は 64 +です。 -バックエンドを -S オプションを使って、それぞれのバックエンド・プロセスが一時 -的な並べ替えによって使うメモリーの最大サイズを増やすこともできます。 その -S -の値はキロバイト単位で、既定値は 512 (すなわち、512K)です。 +バックエンドを -S オプションを使って、それぞれのバックエンド・プロセスが一時的 +な並べ替えによって使うメモリーの最大サイズを増やすこともできます。その -S の値 +はキロバイト単位で、既定値は 512 (すなわち、512K)です。 -また、CLUSTER コマンドを使って、テーブルのデータをインデックスに合わせるため -にグループ化することもできます。詳しくは、オンラインマニュアルで CLUSTER を -見て下さい。 +また、CLUSTER コマンドを使って、テーブルのデータをインデックスに合わせるために +グループ化することもできます。詳しくは、オンラインマニュアルで CLUSTER を見て下 +さい。 3.8) どのようなデバグ機能が使えますか? -PostgreSQL は、デバグのために意味のある、状態情報を報告するいくつかの機能を -持ちます。 +PostgreSQL は、デバグのために意味のある、状態情報を報告するいくつかの機能を持ち +ます。 -まず、--enable-cassert オプションで configure を走らせます。そうしてコンパイ -ルすることにより、沢山の assert() が、バックエンドの進捗状況を監視し、何か予 -期せぬことが起きるとプログラムを停止するようになります。 - -postmaster と postgres の両方でいくつかのデバグ・オプションの利用ができま -す。まず、次のように postmaster を起動するときはいつでも、標準出力とエラー出 -力をログ・ファイルに送るようにしてあることを確かめて下さい。 +まず、--enable-cassert オプションで configure を走らせます。そうしてコンパイル +することにより、沢山の assert() が、バックエンドの進捗状況を監視し、何か予期せ +ぬことが起きるとプログラムを停止するようになります。 +postmaster と postgres の両方でいくつかのデバグ・オプションの利用ができます。ま +ず、次のように postmaster を起動するときはいつでも、標準出力とエラー出力をログ +・ファイルに送るようにしてあることを確かめて下さい。 cd /usr/local/pgsql ./bin/postmaster >server.log 2>&1 & -これにより PostgreSQL の最上部のディレクトリに server.log ファイルが置かれま -す。このファイルはサーバーが遭遇した問題やエラーについて有用な情報を含みま -す。Postmaster は更に詳細な情報を報告するための -d オプションを持ちます。そ -の -d オプションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大き -なログファイルを生成することに注意しなくてはなりません。 +これにより PostgreSQL の最上部のディレクトリに server.log ファイルが置かれます +。このファイルはサーバーが遭遇した問題やエラーについて有用な情報を含みます。 +Postmaster は更に詳細な情報を報告するための -d オプションを持ちます。その -d オ +プションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大きなログファ +イルを生成することに注意しなくてはなりません。 -もし、postmasterが走っていなければ、postgresバックエンドをコマンド行から走ら -せることができ、直接SQL文をタイプすることができます。このやりかたは、デバグ -目的のときだけお奨めします。セミコロンではなく、改行が問い合わせの終りになる -ことに注意してください。もし、デバグシンボルを入れてコンパイルしていれば、デ -バッガを使って何が起きているかを見ることができます。postmaster からバックエ -ンドを開始したわけではないので、独立な環境で走っているのではなくロック/バッ -クエンドとの対話の問題が重複することはありません。 +もし、postmasterが走っていなければ、postgresバックエンドをコマンド行から走らせ +ることができ、直接SQL文をタイプすることができます。このやりかたは、デバグ目的の +ときだけお奨めします。セミコロンではなく、改行が問い合わせの終りになることに注 +意してください。もし、デバグシンボルを入れてコンパイルしていれば、デバッガを使 +って何が起きているかを見ることができます。postmaster からバックエンドを開始した +わけではないので、独立な環境で走っているのではなくロック/バックエンドとの対話 +の問題が重複することはありません。 -もし、postmasterが走っていれば、あるウィンドウでpsqlを開始すると、psql で使 -われる postgresプロセスのPIDが見つかります。デバッガを使ってpostgresのPIDに -アタッチ(attach)します。デバッガの中からブレーク・ポイントをセットし、psqlか -ら問い合わせを発行します。デバグのためにpostgresを始動する場合は、 -PGOPTIONS="-W n" を設定でき、それから、psql を開始します。これにより、n 秒開 -始を遅らせるはずなので、デバッガでアタッチして始動を順を追って見ることができ -ます。 +もし、postmasterが走っていれば、あるウィンドウでpsqlを開始すると、psql で使われ +る postgresプロセスのPIDが見つかります。デバッガを使ってpostgresのPIDにアタッチ +(attach)します。デバッガの中からブレーク・ポイントをセットし、psqlから問い合わ +せを発行します。デバグのためにpostgresを始動する場合は、PGOPTIONS="-W n" を設定 +でき、それから、psql を開始します。これにより、n 秒開始を遅らせるはずなので、デ +バッガでアタッチして始動を順を追って見ることができます。 -postgreSQL プログラムには、デバグと性能測定にとても役に立つ -sや -Aや -t 等 -のオプションがあります。 +postgreSQL プログラムには、デバグと性能測定にとても役に立つ -sや -Aや -t 等のオ +プションがあります。 -何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング -(プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフ -ィール・ファイルは pgsql/data/base/dbname ディレクトリに格納されるでしょう。 -クライアントのプロフィールはクライアントの現行ディレクトリに置かれるでしょ -う。 +何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング( +プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフィー +ル・ファイルは pgsql/data/base/dbname ディレクトリに格納されるでしょう。クライ +アントのプロフィールはクライアントの現行ディレクトリに置かれるでしょう。 3.9) 接続しようとするときに 'Sorry, too many clients' が出ます。なぜですか? -postmasterが同時始動できるバックエンドプロセスに対する制限数を増やす必要があ -ります。 +postmasterが同時始動できるバックエンドプロセスに対する制限数を増やす必要があり +ます。 -PostgreSQL 6.5以降では、既定の最大プロセスは32プロセスです。適切な-Nの値で -postmasterを再起動することにより増加させることができます。既定の構成では-Nは -最大1024まで設定できます。もし、もっと必要であればinclude/config.hの中の -MAXBACKENDSを増加させ、再構築します。もし、望むならconfigureの +既定の最大プロセスは32プロセスです。-Nに適切な値を引数にしてpostmasterを再起動 +するか、postgresql.conf を修正することによって、その値を増やすことができます。 +。既定の構成では-Nは最大1024まで設定できます。もし、もっと必要であればinclude/ +config.hの中のMAXBACKENDSを増加させ、再構築します。もし、望むならconfigureの --with-maxbackends切替を使って、-Nの既定値を構成時に設定できます。 -もし、-N を 32よりも大きくするのであれば、-Bも既定の64より大きい値に増加させ -なくてはならないし、-B は少なくとも -N の2倍はなくてはならず、おそらく最高性 -能を望むならばそれより大きい値が必要なはずです。バックエンドプロセスをたくさ -んにすると、いろいろなUnixカーネル構成パラメータも増やすことが必要になるかも -しれません。 共有メモリー・ブロックの最大値(SHMMAX)、 セマフォの最大数 -(SEMMNSとSEMMNI)、 プロセスの最大数(NPROC)、 ユーザ毎の最大プロセス数 -(MAXUPRC)、 開くファイルの最大数(NFILEとNINODE も確認事項に含まれます。 -PostgreSQLに許されるバックエンドのプロセス数が制限されているのは、 システム -のリソースを使い果してしまうことを避けるためです。 +もし、-N を 32よりも大きくするのであれば、-Bも既定の64より大きい値に増加させな +くてはならないし、-B は少なくとも -N の2倍はなくてはならず、おそらく最高性能を +望むならばそれより大きい値が必要なはずです。バックエンドプロセスをたくさんにす +ると、いろいろなUnixカーネル構成パラメータも増やすことが必要になるかもしれませ +ん。共有メモリー・ブロックの最大値(SHMMAX)、セマフォの最大数(SEMMNSとSEMMNI)、 +プロセスの最大数(NPROC)、ユーザ毎の最大プロセス数(MAXUPRC)、開くファイルの最大 +数(NFILEとNINODE も確認事項に含まれます。 PostgreSQLに許されるバックエンドのプ +ロセス数が制限されているのは、システムのリソースを使い果してしまうことを避ける +ためです。 -6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更 -するには、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再 -構築が必要でした。 +6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更する +には、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再構築が必 +要でした。 -3.10) 自分のデータベース・ディレクトリにある pg_sorttemp.XXXファイルは何です -か? +3.10) 自分のデータベース・ディレクトリにある pg_sorttemp.XXXファイルは何ですか +? 問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし -ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大き -なスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的な -ファイルがいくつか生成されます。 - -一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバック -エンドがクラッシュしてしまうとそうはなりません。そのときバックエンドがひとつ -も走ってなければ、pg_tempNNN.NNファイルを消しても大丈夫です。 +ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大きなス +ペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイ +ルがいくつか生成されます。 +一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエ +ンドがクラッシュしてしまうとそうはなりません。そのときバックエンドがひとつも走 +ってなければ、pg_tempNNN.NNファイルを消しても大丈夫です。 [訳注: - SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog + SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog 付きで走らせた後、コンパイルとインストールを行ないます。 次に、syslog.conf に local0.* の 出力先を指定し(環境変数で変更可能)、 syslogd に HUP シグナルを送って初期化しておきます。そして、 - $PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S - オプション付きにてサーバモードで起動します。(バージョン 7.1 からは + $PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S + オプション付きにてサーバモードで起動します。(バージョン 7.1 からは pg_options は postgresql.conf になっています。) ] - ------------------------------------------------------------------------ - 操作上の質問 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + 操作上の質問 4.1) なぜ、システムはカンマや小数点や日付フォーマットで混乱するのですか? -ロケールの設定を確かめて下さい。PostgreSQL は postmaster プロセスを走らせた -ユーザーのロケールの設定を使います。postgres とpsql には SET コマンドがあ -り、データ書式を制御できます。これらをあなたの操作環境に合わせて設定して下さ -い。 +ロケールの設定を確かめて下さい。PostgreSQL は postmaster プロセスを走らせたユー +ザーのロケールの設定を使います。postgres とpsql には SET コマンドがあり、データ +書式を制御できます。これらをあなたの操作環境に合わせて設定して下さい。 4.2) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか? @@ -765,38 +762,35 @@ ORDER BY 4.3) 最初の数行のみを SELECT するにはどうしますか? -オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を -使ってみて下さい。 +オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を使っ +てみて下さい。 -たとえ、欲しいのは最初の数行だけでも、すべての問い合わせを評価しなくてはなら -ないかもしれません。ORDER BY を持った問い合わせを考えてみて下さい。 もし、 -ORDER BYに合ったインデックスがあるとすると PostgreSQLは要求された最初の数行 -だけで評価できるかもしれませんが、でなれば、PostgreSQL は意図した行が生成さ -れるまですべての行を評価しなければならないかもしれません。 +たとえ、欲しいのは最初の数行だけでも、すべての問い合わせを評価しなくてはならな +いかもしれません。ORDER BY を持った問い合わせを考えてみて下さい。もし、ORDER BY +に合ったインデックスがあるとすると PostgreSQLは要求された最初の数行だけで評価で +きるかもしれませんが、でなれば、PostgreSQL は意図した行が生成されるまですべての +行を評価しなければならないかもしれません。 4.4) テーブルやその他の情報のリストを psql で見るにはどうしますか? -psqlのソースコードとして書かれた pgsql/src/bin/psql/describe.c ファイルを読 -むことがその答えです。 そこには、psqlのバックスラッシュコマンドによる出力の -ためのSQLコマンドが含まれています。 psql に -E オプションをつけて起動すれ -ば、与えたコマンドを実行するための問い合わせが出力されます。 +psqlのソースコードとして書かれた pgsql/src/bin/psql/describe.c ファイルを読むこ +とがその答えです。そこには、psqlのバックスラッシュコマンドによる出力のためのSQL +コマンドが含まれています。 psql に -E オプションをつけて起動すれば、与えたコマ +ンドを実行するための問い合わせが出力されます。 4.5) テーブルから列の削除はどのようにしますか? ALTER TABLE DROP COLUMN はサポートしていませんが、その代わりにこうします: - SELECT ... -- 削除したい列以外の列をすべて選択します。 INTO TABLE new_table FROM old_table; DROP TABLE old_table; ALTER TABLE new_table RENAME TO old_table; - [訳注:列の追加は ALTER TABLE ADD COLUMN で行えます。] 4.6) 行、テーブル、データベースの最大サイズは? 制限は以下のとおりです。 - データベースの最大サイズ? 制限無し (60GB のデータベースも存在します) テーブルの最大サイズ? 16TB 行の最大サイズ? 7.1以降で制限無し @@ -805,27 +799,26 @@ ALTER TABLE DROP COLUMN テーブル内での最大カラム数? カラムの型により250-1600 テーブル内での最大インデクス数? 制限無し -もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワップスペ -ースの大きさにより制限されます。性能はこれらの値がことのほか大きな時に煽りを -受けます。 +もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワップスペー +スの大きさにより制限されます。性能はこれらの値がことのほか大きな時に煽りを受け +ます。 -最大テーブルサイズの16TBはオペレーティングシステムによる巨大ファイルのサポー -トは必要としません。巨大なテーブルは複数の1GBのファイルに分けて保存されます -ので、ファイルシステムの制限は重要ではありません。 +最大テーブルサイズの16TBはオペレーティングシステムによる巨大ファイルのサポート +は必要としません。巨大なテーブルは複数の1GBのファイルに分けて保存されますので、 +ファイルシステムの制限は重要ではありません。 -デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム数とが -増加します。 +デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム数とが増加 +します。 -4.7) 一般的なテキストファイルからデータを保存するには、データベースのディス -ク容量はどのくらい必要です? +4.7) 一般的なテキストファイルからデータを保存するには、データベースのディスク容 +量はどのくらい必要です? -PostgreSQL のデータベースに保存するには、普通のファイルの約6.5倍のディスク容 -量を必要とします。 - -各行に二つずつ整数を持つ 300,000行のファイルを考えてみましょう。ただのファイ -ルでは 2.4MB です。このデータを含む PostgreSQL データベースファイルの大きさ -は次のように約14MBと見積もることができます: +PostgreSQL のデータベースに保存するには、普通のファイルの約6.5倍のディスク容量 +を必要とします。 +各行に二つずつ整数を持つ 300,000行のファイルを考えてみましょう。ただのファイル +では 2.4MB です。このデータを含む PostgreSQL データベースファイルの大きさは次の +ように約14MBと見積もることができます: 36 bytes: 各行のヘッダ(概算) + 8 bytes: 各4バイトの二つの整数(int)フィールド + 4 bytes: ページ上のタップルへのポインタ @@ -841,80 +834,81 @@ PostgreSQL 300000 data rows -------------------- = 1755 database pages 171 rows per page - + 1755 database pages * 8192 bytes per page = 14,376,960 bytes (14MB) -インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされ -るデータを含む以上、それなりに大きくなります。 +インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされる +データを含む以上、それなりに大きくなります。 -4.8) データベース内に定義されたテーブルやインデックスをどのようにして見つけ -出しますか? +4.8) データベース内に定義されたテーブルやインデックスをどのようにして見つけ出し +ますか? -psql にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示しま -す。バックスラッシュ・コマンドの種類を見るには \? を使って下さい。 +psql にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示します。 +バックスラッシュ・コマンドの種類を見るには \? を使って下さい。 -また、pgsql/src/tutorial/syscat.source ファイルを走らせてみて下さい。それ -は、沢山の SELECT 文により必要な情報をデータベースのシステム・テーブルから取 -り出して例示してくれます。 +また、pgsql/src/tutorial/syscat.source ファイルを走らせてみて下さい。それは、沢 +山の SELECT 文により必要な情報をデータベースのシステム・テーブルから取り出して +例示してくれます。 -4.9) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜで -すか? +4.9) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか +? PostgreSQL は統計情報を自動的には保守しません。統計情報を更新するためには、 -VACUUM を走らせなくてはなりません。統計情報が更新された後は、オブティマイザ -がテーブルに何行あるかを知って、インデックスを使うべきかの決定をより良く下し -ます。オブティマイザはテーブルが小さくて連続スキャンの方が速いであろう場合は -インデックスを使わないことにご注意下さい。 +VACUUM を走らせなくてはなりません。統計情報が更新された後は、オブティマイザがテ +ーブルに何行あるかを知って、インデックスを使うべきかの決定をより良く下します。 +オブティマイザはテーブルが小さくて連続スキャンの方が速いであろう場合はインデッ +クスを使わないことにご注意下さい。 -列特定の最適化統計のためにVACUUM ANALYZEを使います。VACUUM ANALYZEは複雑な複 -合結合(multi-join)問い合わせのために大切ですので、オブティマイザはそれぞれの -テーブルから返される行の数を見積ることができ、特定の結合順序を選びます。バッ -クエンドはそれ自身では列の統計を保持しないので、定期的にそれらを集めるために -は VACUUM ANALYZE を走らせなくてはなりません。 +列特定の最適化統計のためにVACUUM ANALYZEを使います。VACUUM ANALYZEは複雑な複合 +結合(multi-join)問い合わせのために大切ですので、オブティマイザはそれぞれのテー +ブルから返される行の数を見積ることができ、特定の結合順序を選びます。バックエン +ドはそれ自身では列の統計を保持しないので、定期的にそれらを集めるためには VACUUM +ANALYZE を走らせなくてはなりません。 -普通、インデックスは ORDER BY や結合の操作のためには使われません。ランダムな -ディスクアクセスはとても遅いので、順次スキャンに続く明示的ソートは、巨大なテ -ーブルの全件をインデックススキャンするよりも高速です。 +普通、インデックスは ORDER BY や結合の操作のためには使われません。ランダムなデ +ィスクアクセスはとても遅いので、順次スキャンに続く明示的ソートは、巨大なテーブ +ルの全件をインデックススキャンするよりも高速です。 -LIKE あるいは ~ のようなワイルドカード演算子(wild-card operators)を使うと -き、検索の開始が文字列の始めの部分に固定されているときにのみ、インデックスが -使われます。 そういうわけで、インデックスを使うためには、LIKE 検索では%で始 -めないようにして、また、~(正規表現検索)は^ で始めるようにするべきです。 [訳 -注:強制的にインデックスを使うには SET enable_seqscan = off を実行します] +LIKE あるいは ~ のようなワイルドカード演算子(wild-card operators)を使うとき、検 +索の開始が文字列の始めの部分に固定されているときにのみ、インデックスが使われま +す。そういうわけで、インデックスを使うためには、LIKE 検索では%で始めないように +して、また、~(正規表現検索)は^ で始めるようにするべきです。 [訳注:強制的にイン +デックスを使うには SET enable_seqscan = off を実行します] -4.10) 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るには -どうしますか? +4.10) 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るにはど +うしますか? オンラインマニュアルで EXPLAIN を見て下さい。 4.11) R-tree インデックスとは何ですか? -R-tree インデックスは空間的なデータにインデックスを付けるために使われます。 -ハッシュインデックスでは範囲の検索ができません。また、B-tree インデックスで -は、1次元でしか範囲の検索ができません。R-tree インデックスであれば多次元の -データを扱えます。たとえば、もし R-tree インデックスを point 型の属性に付け -ることができるとするとシステムは、「長方形に囲まれた点をすべて選択する」とい -うような問い合わせに、より効率良く答えられます。 +R-tree インデックスは空間的なデータにインデックスを付けるために使われます。ハッ +シュインデックスでは範囲の検索ができません。また、B-tree インデックスでは、1次 +元でしか範囲の検索ができません。R-tree インデックスであれば多次元のデータを扱え +ます。たとえば、もし R-tree インデックスを point 型の属性に付けることができると +するとシステムは、「長方形に囲まれた点をすべて選択する」というような問い合わせ +に、より効率良く答えられます。 R-Tree の設計の原典となる権威ある論文は: -Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching." Proc -of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. +Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching." Proc 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関係の文献を紹介して頂きました。 - 日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial data structures" + 日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial data structures" http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html をご覧下さい。 ] -組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっ -と高い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょ -っとした作業が必要でして、現在、我々はそれをどのようにするかについての文書を -持っていません。 + +組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっと高 +い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょっとした +作業が必要でして、現在、我々はそれをどのようにするかについての文書を持っていま +せん。 [訳注: インターウィズの片岡さんが多次元幾何オブジェクトへの拡張作業中です。詳しくは、 @@ -922,37 +916,34 @@ of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. をご覧ください。 ] + 4.12) 遺伝的問い合わせ最適化とは何ですか? -GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で -問合わせを高速化します。これにより、しらみつぶしに探索を行なわなくても、大き -な結合(join queries)を扱うことができるようになります。 +GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で問合 +わせを高速化します。これにより、しらみつぶしに探索を行なわなくても、大きな結合 +(join queries)を扱うことができるようになります。 -4.13) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように -実現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのよう -に使いますか? +4.13) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実 +現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのように使 +いますか? ~演算子は正規表現照合を行ない、~* は大文字と小文字を区別しない -(case-insensitive)正規表現照合を行います。 PostgreSQL 7.1 以降では、大文字と -小文字を区別しない LIKE 演算子を ILIKE といいます。 +(case-insensitive)正規表現照合を行います。 PostgreSQL 7.1 以降では、大文字と小 +文字を区別しない LIKE 演算子を ILIKE といいます。 大文字と小文字を区別しない等値比較次のように表現できる: - SELECT * FROM tab WHERE lower(col) = 'abc' - - -標準インデックスでは使われず、しかしながら、もし関数インデックスを 作ったな -らそれが使われるでしょう。 - + +標準インデックスでは使われず、しかしながら、もし関数インデックスを作ったならそ +れが使われるでしょう。 CREATE INDEX tabindex on tab (lower(col)); - - + WHERE lower(textfield) LIKE lower(pattern) -4.14) 問い合わせの中で、フィールドが NULL であることを検出するにはどうします -か? +4.14) 問い合わせの中で、フィールドが NULL であることを検出するにはどうしますか +? IS NULLのカラムを IS NOT NULL で試してみて下さい。 @@ -966,252 +957,238 @@ VARCHAR(#) varchar 長 TEXT text 長さの制限は最大行長による BYTEA bytea 可変長のバイト配列 -内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージ -を受け取るときです。 +内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを +受け取るときです。 -上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バ -イトがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は -宣言された大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTに -より圧縮されたり複数行に渡って保存されたりして、ディスク上の空間は思ったより -小さくなります。 +上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイ +トがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言さ +れた大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTにより圧縮さ +れたり複数行に渡って保存されたりして、ディスク上の空間は思ったより小さくなりま +す。 4.16.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? -PostgreSQL は SERIAL データ型をサポートします。列上に通番とインデックスを自 -動作成します。たとえば、 - - CREATE TABLE person ( - id SERIAL, - name TEXT +PostgreSQL は SERIAL データ型をサポートします。列上に通番とインデックスを自動作 +成します。たとえば、 + CREATE TABLE person ( + id SERIAL, + name TEXT ); - は自動的に次のように翻訳されます: - CREATE SEQUENCE person_id_seq; - CREATE TABLE person ( + CREATE TABLE person ( id INT4 NOT NULL DEFAULT nextval('person_id_seq'), - name TEXT + name TEXT ); CREATE UNIQUE INDEX person_id_key ON person ( id ); +通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence をご覧 +下さい。 -通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence を -ご覧下さい。 - -また、各行のOIDフィールドを一意値として使うこともできます。しかしながら、も -しもデータベースをダンプしてりロードする必要がある場合は、OIDを温存するため -にpg_dump で -oオプションを使うか、または、COPY WITH OIDSオプションを使う必 -要があります。 Bruce Momjian の -(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rowsの章にありあ -ます。 +また、各行のOIDフィールドを一意値として使うこともできます。しかしながら、もしも +データベースをダンプしてりロードする必要がある場合は、OIDを温存するために +pg_dump で -oオプションを使うか、または、COPY WITH OIDSオプションを使う必要があ +ります。 Bruce Momjian の(http://www.PostgreSQL.org/docs/aw_pgsql_book)の +Numbering Rowsの章にありあます。 4.16.2) SERIALデータ型に挿入される値は、どうすれば得られますか? -ひとつの方法は、nextval() 関数を使ってその値を挿入する前(before)に SEQUENCE -オブジェクトから次の SERIAL 値を取り出し、それから実際に挿入をすることです。 +ひとつの方法は、nextval() 関数を使ってその値を挿入する前(before)に SEQUENCE オ +ブジェクトから次の SERIAL 値を取り出し、それから実際に挿入をすることです。 4.16.1 の例で使ったテーブルを使うとすると、次のようになります。 - $newSerialID = nextval('person_id_seq'); INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal'); - -そうして、$newSerialID に保存した新しい値を他の問い合わせに(たとえば、person -テーブルに対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作 -られたSEQUENCEオブジェクトの名前は、