サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
lets.postgresql.jp
富士通株式会社 ソフトウェアプロダクト事業本部 データマネジメント事業部 デジタル技術の進化により、ビジネスは大きく変わりつつあります。IoTにより取得できる多種多様なデータと、既存の業務データとを組み合わせて、新たな価値へとつなげるなど、システムは様々なデータ(システム)と連携できることが求められています。PostgreSQLには、Foreign Data Wrapper(日本語では「外部データラッパ」と呼ばれ、以降「FDW」と略します)という機能があり、RDBやNoSQLなど様々な外部データにアクセスできます。ここでは、FDWの概要と仕組み、利用時のポイントについて説明します。なお、この記事は、PostgreSQL 11.1を前提として作成しています。 1. FDWとは FDWとは、SELECT文やUPDATE文などのSQL文を使用して、外部にあるデータにアクセスできるようにするための
NTT オープンソースソフトウェアセンタ 笠原 辰仁 さて、HOTシリーズの第3回目となりました。前回・前々回を通じて、HOTがどんな効果を持ち、どのように振舞うのかを見てきました。今回は、HOTを上手く使うためのコツを解説していきたいと思います。HOTの機能を上手く生かすには何が必要になるのでしょうか?次の4つのキーワードに沿って進んでいきましょう。 インデックスキーの更新は避けよう 使われないインデックスは削除しよう ページの空き領域を確保しておこう ロングトランザクションに要注意 インデックスキーの更新は避けよう! 1つ目のコツは、「インデックスキーの更新を避ける」です。 HOTが機能するための前提として、「インデックスキーの更新が起こらない」ことが挙げられます。もちろん、必要不可欠なインデックスキーの更新処理は避けることができませんが、HOTを機能させるための条件ですので、覚えてお
NTT オープンソースソフトウェアセンタ 鈴木 幸市 はじめに この記事では、Linuxの代表的なフリーのディストリビューションであるubuntuでPostgreSQLを動かす方法を紹介するものです。Linuxを動かすからといって、新しいPCを用意したり、デュアルブートにしたりする必要はありません。今回の「やってみよう」では、ごくふつうのWindows XP が動作しているPC上にubuntuをインストールして、この上でPostgreSQLを動かしてみることにします。そして、PostgreSQLのマニュアルにのっているチュートリアルが全部できるようにしてみましょう。 1.用意するもの 1.1 PC ごくふつうにWindows XP が動いているものであればOKです。ちなみに、本記事で試したPCは3年前のデスクトップで、スペックは次のようなものです。 CPU: Pentium D 3.00G
NTT オープンソースソフトウェアセンタ 笠原 辰仁 はじめに PostgreSQLのcontribモジュールの一つに、pgcryptoというものがあります。pgcryptoは、その名の通り暗号化をサポートするツールです。主にはDB内のデータの暗号化を実施したい場合に使われます。オンラインマニュアルに詳しい機能の解説や参考文献へのリンクが載っています。本記事では、pgcryptoの簡単な使い方と、pgcryptoを使う際に有用なテクニックを紹介します。 暗号化について 昨今では、個人情報保護法に備えるため、暗号化を必要とするケースが増えてきました。特にデータベースには重要な個人情報が格納されるため、特にシビアな暗号化を検討されることが多いです。 一口に暗号化と言っても、ストレージのハードウェア部分で暗号化を施す、ファイルシステム(ブロックデバイス)で暗号化を施す、盗聴に備えて暗号化したデー
NTT オープンソースソフトウェアセンタ 笠原 辰仁 有用な情報を持つテーブル / ビュー 稼動統計情報を持つテーブルとビューの一部について、どのような情報を蓄積しているかを紹介します。前ページで稼動統計情報の取得方法を述べましたが、紹介したもの以外にも、下記に示すように色々な情報が取得できます。 pg_stat_database DB単位で、実施された表スキャンやインデックススキャン数などが確認できます。DB単位でざっくりとしたアクティビティ状況を確認するのに便利です。このビューでは下記の項目を確認できます。 pg_stat_database 名前 ver. 説明
夏目 伸彦 前回までで、ログデータを扱いやすい形のテーブルにしました。今回は具体的に分析を進めていきます。分析すべき内容はニーズによって様々ですが、今回は詳細ページへの遷移率、及びその他の要因との関係を見ていくことにします。 遷移と離脱 遷移率は検索画面において大切な指標になります。検索において、ユーザーが結果を見て次の画面に遷移するか離脱するかは、検索結果の品質や操作性が優れているか否かにかかっていると言えるでしょう。従って遷移率は是非知っておきたい情報です。さらに遷移したユーザとそうでないユーザを特定したとき、「それぞれがどのぐらいサイトに滞在していたか」や「サーバからのレスポンス時間がどうだったか」を調べると、検索サイトの改善ポイントが見つかるのではないかと仮定します。 まとめると、遷移したユーザと離脱したユーザがどれだけいるのか、またユーザーの遷移と相関のある要因はないか、というこ
現在 (2009年1月) の最新版であるPostgreSQL8.3では、「HOT」と呼ばれる機能が追加されています。この「HOT」により、PostgreSQLの更新処理性能が劇的に向上し、ガベージ発生量が大幅に減少しました。本シリーズでは3回に分けて、この「HOT」の効果や仕組み、そして上手な使い方を詳しく解説していきたいと思います。
鈴木 幸市 オンライン・バックアップを利用して、データベースを故障直前の状態まで復旧させる手順を解説します。 オンライン・バックアップとポイント・イン・タイム・リカバリ (アーカイブ・リカバリ) を利用すると、pg_dump でのバックアップとは異なり、バックアップ時点ではなく、アーカイブログが残っている限り最新の状態までリカバリできるのが利点です。 6.3 オンライン・バックアップとアーカイブログを用いたリストア PostgreSQL 運転中に取得したベースバックアップとアーカイブログを使ってデータベースをリストアすることができます。 アーカイブログもベースバックアップも、PostgreSQL を運転しているサーバとは別な場所に保存できることが重要です。 アーカイブログとベースバックアップを安全な場所 (PostgreSQL を運転しているサーバとは別の場所) に保存しておくことで、サー
本ページでは、PostgreSQLを運用していく上で必要な事柄を紹介します。「PostgreSQLの運用管理って何をしたら良いのだろう?」とお困りの方は、まず本ページでざっくりと運用の全体のイメージを掴んでみてください。各項目についてもっと掘り下げた情報は、リンク先の記事で紹介しています。 PostgreSQLの運用管理に必要なこと PostgreSQLの運用管理として必要な作業には何があるのでしょうか?運用要件によって必要な作業は変わってきますが、およそ以下の事項が挙げられます。 メンテナンス DBは、日々の運用により内部状態が変化していきます。常に一定のパフォーマンスを発揮するには、良い状態を保つためのメンテナンスが必要です。主に VACUUM や ANALYZE が該当します。 監視 異常を事前に察知する、もしくは発生後に原因を調査するために、DBやOSの状態を監視しておきます。適切
1 Explaining Explain PostgreSQL by Robert Treat (Inspired by Greg Sabino Mullane) PostgreSQL (2009-03-17 / 8.3 ) 2 Explain • Explain • • DML • • EXPLAIN ANALYZE 3 Explain Plan =# EXPLAIN SELECT * FROM pg_proc ORDER BY proname; QUERY PLAN ---------------------------------------------------- Sort (cost=181.55..185.92 rows=1747 width=322) Sort Key: proname -> Seq Scan on pg_proc (cost=0.00..87.47 row
NTT オープンソースソフトウェアセンタ 鈴木 幸市 3. 論理バックアップとリストア 論理バックアップを行うツールは pg_dump 及び pg_dumpall です。 pg_dump は PostgreSQL データベースクラスタの各データベース単位にバックアップを行います。pg_dumpall はターゲットのデータベースクラスタに格納してある全データベースのバックアップを行います。 pg_dump も pg_dumpall も、バックアップデータはデータベースを復元するために必要な SQL 文で構成されます。 従って、pg_dump や pg_dumpall を使うと PostgreSQL データベースの内容を別なデータベースに移行したり、特定のテーブルだけをバックアップしたりすることが可能となります。 pg_dump, pg_dumpall を使うためには特別な用意はいりませんが、
第四企画 坂井 潔 SQLインジェクションの脅威からシステムを守るために、プログラミング言語/スクリプトからSQLを発行するときには、パラメータを適切に処理しなくてはなりません。今回はプレースホルダ編と題し、SQLインジェクション対策として最も簡単で効果的な方法を、PHPで説明します。 SQLインジェクションとは? まず「SQLインジェクション」とは何かおさらいしましょう。SQLインジェクションとは、アプリケーション(この場合はPHPスクリプト)に渡すパラメータの値を操作することで、元々は意図されていない処理をSQLとして実行させてしまうことです。 簡単な例をあげてみます。ユーザーから文字列「山田」が渡されたとき、以下のようなSELECT文を発行することにします。 SELECT * FROM users WHERE username LIKE '%山田太郎%'; ユーザーに入力された文字列
NTT オープンソースソフトウェアセンタ 板垣 貴裕 共通表式 WITH 句と再帰SQL (WITH RECURSIVE) は PostgreSQL 8.4 の新機能です。WITH と WITH RECURSIVE それぞれの説明と、実際の利用例として再帰クエリを使ったロック競合解析の方法を解説します。 共通表式 WITH 句 あるクエリの中で他のクエリの結果を使う方法には、既にサブクエリがあります。WITH 句は、サブクエリの結果に名前をつけ、クエリの複数の箇所からその結果を参照するための構文です。そのクエリの中だけで使用できる一時表 (TEMP TABLE) を作るのに近い動作になります。 利用例としては、あるサブクエリの結果を複数の列と比較する場合が挙げられます。例えば以下のように、表 keyword_list から取得した結果を、表 document の keyword1, key
Copyright 2020 Japan PostgreSQL User Group このウェブサイトに掲載されている個々の記事の著作権は、それぞれの著作権者に帰属します。
~性能を最大限に引き出すための設計・開発・運用~ 永安 悟史 本記事は、技術評論社 WEB+DB PRESS Vol.63 で掲載されたものを、著者と出版社の許可を得て転載したものです。なお、一部 記述に変更のある箇所もあります。 【試験】サービス開始に向けて、確認・記録する データベース開発の試験フェーズでは、機能的な動作確認は当然ながら、パフォーマンスやバックアップ/リストアなどの、いわゆる「非機能試験」を行うことになります。本節では、データベース特有の試験について、いくつかのポイントを解説します。 【べし】 SQLの実行計画(EXPLAIN)を確認すべし まず、アプリケーションから実行されるSQLは、EXPLAINコマンドなどを用いて、実行計画を確認しておく必要があります(リスト5)。動的なSQL(アプリケーションの内部でSQL文を組み立てるようなケース)の場合は、SQLの実行ログを
~性能を最大限に引き出すための設計・開発・運用~ 永安 悟史 本記事は、技術評論社 WEB+DB PRESS Vol.63 で掲載されたものを、著者と出版社の許可を得て転載したものです。なお、一部 記述に変更のある箇所もあります。 【開発】開発生産性と処理性能のトレードオフ 【べからず】 ループ処理内部でSQLを発行してはいけない アプリケーションの内部で、特定の条件でレコード数をカウントし、FORループを回してレコード数分のSELECTクエリを実行するようなコードを見かけることがあります(リスト1)。 (プログラミング言語の)関数やメソッド呼び出しのような感覚で簡単にSQLを呼び出すことができるため、このようなコードを書いてしまいがちですが、原則としてこのようなコーディングを行うべきではありません。 Webページ1画面を表示するために、SQLを100回あるいは1,000回実行するようなア
EXPLAIN や EXPLAIN ANALYZE の使い方と、それらを利用してスロークエリの実行計画を改善する方法を紹介します。 Explaining Explain ~ PostgreSQLの実行計画を読む ~ (PDF版) OSCON 2005 で講演され、2005年のJPUG夏合宿で分担して翻訳した発表資料です。PostgreSQL 8.3 に対応できるよう内容を更新しています。 Explaining Explain ~ PostgreSQLの実行計画を読む ~ (PPT版) OSCON 2005 で講演され、2005年のJPUG夏合宿で分担して翻訳した発表資料です。PostgreSQL 8.3 に対応できるよう内容を更新しています。
SRA OSS, Inc. 日本支社 石井 達夫 ラージオブジェクトとは たいていのDBにはBlob(Binary large object)などと呼ばれる、巨大オブジェクトを扱う仕組みがあります。これを使うと、画像や動画、あるいは巨大なテキストなどをDBで扱うことができるようになります。PostgreSQLの場合には、「ラージオブジェクト」(Large Object)と呼ばれており、PostgreSQLのラージオブジェクトは、今のところデフォルトで2GBまで、9.3以降では4TBまでを扱えるようになります(この改良は、安齋氏、長田氏、それに私によって行われました)。 普通のファイルに画像や動画をおいて管理する方法もありますが、ラージオブジェクトを使うメリットとしては、 PostgreSQLがアクセス手段を提供してくれるので、リモートにあるオブジェクトをアクセスする方法をアプリケーションが
NTT オープンソースソフトウェアセンタ 笠原 辰仁 PostgreSQL でのおすすめできるログの設定をお知らせします。ここでいうログとは、PostgreSQL で発生したエラーや警告などの問題を記録するサーバログを指します。ログに関する設定は、PostgreSQLの運用を始める際に最も注意すべきパラメータ設定の一つです。ログは問題発生の有無や問題の原因を切り分ける際に、非常に重要な情報となります。適切なログの運用に向けて、下記を参考にしてみてください。 ログ運用関連のパラメータ設定 PostgreSQLのデフォルト設定(ソースコードからのインストール)では、ログは残さない設定になっています。インストールに使ったパッケージによっては、初めからログを残すよう設定ファイルがカスタマイズされていることもありますが、まずは、確実にログを残すための設定を行いましょう。 ログの運用としては大きく3パ
笠原 辰仁 はじめに この記事は、PostgreSQL Advent Calendar(#5)に参加しています。 以前に、CentOSでPostgreSQLをインストールする方法やyumでPostgreSQLをインストールする方法がLet's Postgresで紹介されました。これらはいずれもRPMを使ったインストール方法でした。ところで、RPMについてはRedHatなどディストリビュータが作成しているものもあれば、コミュニティで作成されているものもあります。CentOSでのインストールはCentOSコミュニティが、yumでのインストールはPostgreSQLのコミュニティがそれぞれ作成しているRPMが配布されています。 最近、といっても昨年の2010年にPostgreSQLの9.0がリリースされた時からですが、コミュニティやCent、RedHatで配布されているRPMのポリシーがいくつか
PostgreSQL 9.1.0 が 2011年9月12日にリリースされました。 最新版のバイナリやソースコードは "ダウンロード用ページ" で配布されています。 9.1 では、9.0 で新規に採用されたレプリケーション機能の使い勝手の強化の他、外部のファイルや DB に直接アクセスできる SQL/MED や、拡張モジュールの管理機能など、さらなる強化が行われています。 互換性に関する注意 最初が注意になってしまいますが、以前のバージョンとの互換性の無い設定がデフォルトに変更されています。比較的多くのアプリケーションで問題になる可能性があるため、あえて強調して注意させてもらいます。 standard_conforming_strings のデフォルトが on に変更 standard_conforming_strings = on がデフォルトになりました。E'...' 形式でない文字列内
NTT オープンソースソフトウェアセンタ 鈴木 幸市 4. 物理バックアップ 前記事では pg_dump や pg_dumpall を用いた論理バックアップを紹介しました。本章では物理バックアップについて解説していきます。 pg_dump などを利用した論理バックアップでは、特定のデータベースやテーブル、あるいはスキーマなどを個別にバックアップできました。 一方、物理バックアップはデータベース・クラスタ全体の粒度でのみバックアップできます。 物理バックアップには、オフライン・バックアップとオンライン・バックアップがあります。 本章ではこれらについて解説します。 5. オフライン・バックアップとリストア オフライン・バックアップは、PostgreSQLの運転を停止させ、データベースの内容をまるごとそのままバックアップするものです。 操作は単純で、バックアップは tar や rsync などの
NTT オープンソースソフトウェアセンタ 板垣 貴裕 他の PostgreSQL データベースを SQL から直接操作できるモジュール "dblink" の使い方を紹介します。 dblink を使うと、分散環境で複数のデータベースをまたがる処理を行ったり、同じサーバ内の別のデータベースを操作することができます。 dblink の構成 dblink では、接続中のバックエンド・プロセスが別のバックエンド・プロセスに libpq ライブラリを用いて接続します。 このプロセスは、PostgreSQL のサーバプロセスでありながら、クライアントでもあるという構成になっています。 別のバックエンド・プロセスは、同一サーバ(インスタンス)であることもありますし、別マシンの別サーバへ接続することもできます。 基本的な使い方 インストールと簡単な使い方 最初に dblink をインストールします。 RPM
このページでは、Ubuntu特有のPostgreSQLのコマンドのマニュアルを紹介します。 1. pg_wrapper (1) 名前 pg_wrapper - PostgreSQLのクライアントコマンドのラッパ 概要 client-program [--cluster version/cluster] [...] ここで、client-programにはPostgreSQLの次のコマンド名を指定します。 clusterdb, createdb, createlang, createuser, dropdb, droplang, dropuser, pg_dump, pg_dumpall, pg_restore, psql, reindexdb, vacuumdb 実際には、/usr/bin ディレクトリに上記の名前のシンボリックリンクが作られ、 これらはすべて pg_wrapper を参照
NTT オープンソースソフトウェアセンタ 板垣 貴裕 スロークエリ (時間のかかるSQL) を発見するまでの手順を解説します。スロークエリ分析と改善は以下の流れで行うことになります。この記事では主に 1. のスロークエリの特定方法について解説します。2.については『スロークエリの改善』を参考にしてください。 どのSQLが遅いのかを見つける。 そのSQLがなぜ時間がかかるのかを判断する。 設定パラメータ、SQL、スキーマなどを改善する。 着目したSQLの性能を再測定し、2. から繰り返す。 着目したSQLのチューニングが完了したら、他のボトルネックを探すため 1. から繰り返す。 スロークエリの見つけ方 スロークエリを見つけるには、大きく分けて統計情報ビューを使う方法と、サーバログを使う方法の2つがあります。統計情報ビューを使う方法は PostgreSQL 8.4 以降でしか利用できませんが
NTT オープンソースソフトウェアセンタ 板垣 貴裕 パーティショニングとはデータを複数に分割して格納することです。データを分割することにより、性能や運用性が向上し、故障の影響を局所化することができます。巨大なデータを扱う場合にはパーティショニング機能を利用することも検討してみてください。 この記事ではパーティショニングの概要と用途について説明しています。PostgreSQL での具体的な使い方については『パーティショニング : 使い方』を参照してください。 パーティショニングの用途 パーティショニングには大きく分けて「テーブル間の分割」「ノード間の分割」の2つがあります。この記事では主にテーブル間の分割を扱います。 テーブル間の分割 巨大なテーブルを複数のテーブルに分割します。単純に複数のテーブルに分けて格納するだけでも効果はありますが、PostgreSQL は複数のパーティションを1つ
笠原 辰仁 本記事は2013年のPostgreSQL Advent Calendar の 12/25 の記事です(地味なトピックになってしまいすいません)。PostgreSQLでのテストデータ作成に役立つ機能を紹介します。 はじめに PostgreSQLを対象としたの性能検証や機能検証を行う際に、開発環境や試験環境でスキーマ(テーブルやインデックス)を作成し、ダミーのデータを投入してSQLのチェックを行うことが多々あるかと思います。単純な機能の正常試験であれば少量のデータ投入で事足りると思いますが、大量のデータに対する検索処理やバッチ処理を試す際は、それなりの量の試験データを生成し、DBに投入する必要があります。 通常、試験データは、例えば専用のジェネレータを作る、実際のデータをマスキングしたものを使う、サンプルとして存在するデータ(郵便番号のデータなど)を利用する、といったことが多いと思
農業・食品産業技術総合研究機構 近畿中国四国農業研究センター 寺元郁博 はじめに 本記事では、PostGISをインストールすること、格納したデータを図示すること、クエリを作ってみることと空間データがSQLで扱えること、をご紹介していきます。 また、地図を扱うという若干特殊な分野ですので、図示するためのソフトウェアも併用して実例を交えながらの記事としました。それでは、第1回目はPostGISの概要についてご紹介しましょう。 自己紹介 本編に入る前に、簡単に筆者の自己紹介をしておきます。農業や農作業に関係したソフトウェアを作ったりしています。随分前からPostgreSQLを使っていましたが、 地理空間情報を扱う必要がでてきたため、PostGISに手を染めました。 "http://www.finds.jp/" でサービス等を公開しております。PostGISについて、今回は入門的な記事を書いてみま
SRA OSS, Inc. 日本支社 石井 達夫 pgbenchとは pgbenchはPostgreSQLに同梱されているシンプルなベンチマークツールです。最初のバージョンは筆者により作成され、日本のPostgreSQLメーリングリストで1999年に公開されました。その後pgbenchはcontribという付属追加プログラムとして、PostgreSQLのソースコードとともに配布されるようになりました。どのバージョンでPostgreSQLに取り込まれたのかはPostgreSQL付属のドキュメント(HISTORY)には書かれていないので定かではないのですが、コミットログを見ると、おそらく2000年にリリースされたPostgreSQL 7.0で導入されたと思われます。その後数多くの改良がたくさんの人によって行われ、現在に至っています。 pgbenchを利用することにより、自分の使っているPost
次のページ
このページを最初にブックマークしてみませんか?
『ホーム | Let's POSTGRES』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く