タグ

lets-postgresとdata-structureに関するnabinnoのブックマーク (74)

  • 再帰SQL | Let's POSTGRES

    NTT オープンソースソフトウェアセンタ 板垣 貴裕 共通表式 WITH 句と再帰SQL (WITH RECURSIVE) は PostgreSQL 8.4 の新機能です。WITH と WITH RECURSIVE それぞれの説明と、実際の利用例として再帰クエリを使ったロック競合解析の方法を解説します。 共通表式 WITH 句 あるクエリの中で他のクエリの結果を使う方法には、既にサブクエリがあります。WITH 句は、サブクエリの結果に名前をつけ、クエリの複数の箇所からその結果を参照するための構文です。そのクエリの中だけで使用できる一時表 (TEMP TABLE) を作るのに近い動作になります。 利用例としては、あるサブクエリの結果を複数の列と比較する場合が挙げられます。例えば以下のように、表 keyword_list から取得した結果を、表 document の keyword1, key

  • 入門向けの記事 | Let's POSTGRES

    Copyright 2020 Japan PostgreSQL User Group このウェブサイトに掲載されている個々の記事の著作権は、それぞれの著作権者に帰属します。

  • PostGISを使ってみよう | Let's POSTGRES

    Copyright 2020 Japan PostgreSQL User Group このウェブサイトに掲載されている個々の記事の著作権は、それぞれの著作権者に帰属します。

  • 現場で役立つ実践ノウハウWeb開発の「べし」「べからず」(試験編) | Let's POSTGRES

    ~性能を最大限に引き出すための設計・開発・運用~ 永安 悟史 記事は、技術評論社 WEB+DB PRESS Vol.63 で掲載されたものを、著者と出版社の許可を得て転載したものです。なお、一部 記述に変更のある箇所もあります。 【試験】サービス開始に向けて、確認・記録する データベース開発の試験フェーズでは、機能的な動作確認は当然ながら、パフォーマンスやバックアップ/リストアなどの、いわゆる「非機能試験」を行うことになります。節では、データベース特有の試験について、いくつかのポイントを解説します。 【べし】 SQLの実行計画(EXPLAIN)を確認すべし まず、アプリケーションから実行されるSQLは、EXPLAINコマンドなどを用いて、実行計画を確認しておく必要があります(リスト5)。動的なSQL(アプリケーションの内部でSQL文を組み立てるようなケース)の場合は、SQLの実行ログを

  • 現場で役立つ実践ノウハウWeb開発の「べし」「べからず」(開発編) | Let's POSTGRES

    ~性能を最大限に引き出すための設計・開発・運用~ 永安 悟史 記事は、技術評論社 WEB+DB PRESS Vol.63 で掲載されたものを、著者と出版社の許可を得て転載したものです。なお、一部 記述に変更のある箇所もあります。 【開発】開発生産性と処理性能のトレードオフ 【べからず】 ループ処理内部でSQLを発行してはいけない アプリケーションの内部で、特定の条件でレコード数をカウントし、FORループを回してレコード数分のSELECTクエリを実行するようなコードを見かけることがあります(リスト1)。 (プログラミング言語の)関数やメソッド呼び出しのような感覚で簡単にSQLを呼び出すことができるため、このようなコードを書いてしまいがちですが、原則としてこのようなコーディングを行うべきではありません。 Webページ1画面を表示するために、SQLを100回あるいは1,000回実行するようなア

  • スロークエリの改善 | Let's POSTGRES

    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 に対応できるよう内容を更新しています。

  • ラージオブジェクト | Let's POSTGRES

    SRA OSS, Inc. 日支社 石井 達夫 ラージオブジェクトとは たいていのDBにはBlob(Binary large object)などと呼ばれる、巨大オブジェクトを扱う仕組みがあります。これを使うと、画像や動画、あるいは巨大なテキストなどをDBで扱うことができるようになります。PostgreSQLの場合には、「ラージオブジェクト」(Large Object)と呼ばれており、PostgreSQLのラージオブジェクトは、今のところデフォルトで2GBまで、9.3以降では4TBまでを扱えるようになります(この改良は、安齋氏、長田氏、それに私によって行われました)。 普通のファイルに画像や動画をおいて管理する方法もありますが、ラージオブジェクトを使うメリットとしては、 PostgreSQLがアクセス手段を提供してくれるので、リモートにあるオブジェクトをアクセスする方法をアプリケーションが

  • ログ関連の設定 | Let's POSTGRES

    NTT オープンソースソフトウェアセンタ 笠原 辰仁 PostgreSQL でのおすすめできるログの設定をお知らせします。ここでいうログとは、PostgreSQL で発生したエラーや警告などの問題を記録するサーバログを指します。ログに関する設定は、PostgreSQLの運用を始める際に最も注意すべきパラメータ設定の一つです。ログは問題発生の有無や問題の原因を切り分ける際に、非常に重要な情報となります。適切なログの運用に向けて、下記を参考にしてみてください。 ログ運用関連のパラメータ設定 PostgreSQLのデフォルト設定(ソースコードからのインストール)では、ログは残さない設定になっています。インストールに使ったパッケージによっては、初めからログを残すよう設定ファイルがカスタマイズされていることもありますが、まずは、確実にログを残すための設定を行いましょう。 ログの運用としては大きく3パ

  • PostgreSQL 9.1 の新機能 | Let's POSTGRES

    PostgreSQL 9.1.0 が 2011年9月12日にリリースされました。 最新版のバイナリやソースコードは "ダウンロード用ページ" で配布されています。 9.1 では、9.0 で新規に採用されたレプリケーション機能の使い勝手の強化の他、外部のファイルや DB に直接アクセスできる SQL/MED や、拡張モジュールの管理機能など、さらなる強化が行われています。 互換性に関する注意 最初が注意になってしまいますが、以前のバージョンとの互換性の無い設定がデフォルトに変更されています。比較的多くのアプリケーションで問題になる可能性があるため、あえて強調して注意させてもらいます。 standard_conforming_strings のデフォルトが on に変更 standard_conforming_strings = on がデフォルトになりました。E'...' 形式でない文字列内

  • RPMで複数バージョンのPostgreSQLをインストールしてみよう | Let's POSTGRES

    笠原 辰仁 はじめに この記事は、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のポリシーがいくつか

  • 物理バップアップの概要 | Let's POSTGRES

    NTT オープンソースソフトウェアセンタ 鈴木 幸市 4. 物理バックアップ 前記事では pg_dump や pg_dumpall を用いた論理バックアップを紹介しました。章では物理バックアップについて解説していきます。 pg_dump などを利用した論理バックアップでは、特定のデータベースやテーブル、あるいはスキーマなどを個別にバックアップできました。 一方、物理バックアップはデータベース・クラスタ全体の粒度でのみバックアップできます。 物理バックアップには、オフライン・バックアップとオンライン・バックアップがあります。 章ではこれらについて解説します。 5. オフライン・バックアップとリストア オフライン・バックアップは、PostgreSQLの運転を停止させ、データベースの内容をまるごとそのままバックアップするものです。 操作は単純で、バックアップは tar や rsync などの

  • 資料編:Ubuntu特有のPostgreSQL用コマンド | Let's POSTGRES

    このページでは、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 を参照

  • dblink | Let's POSTGRES

    NTT オープンソースソフトウェアセンタ 板垣 貴裕 他の PostgreSQL データベースを SQL から直接操作できるモジュール "dblink" の使い方を紹介します。 dblink を使うと、分散環境で複数のデータベースをまたがる処理を行ったり、同じサーバ内の別のデータベースを操作することができます。 dblink の構成 dblink では、接続中のバックエンド・プロセスが別のバックエンド・プロセスに libpq ライブラリを用いて接続します。 このプロセスは、PostgreSQL のサーバプロセスでありながら、クライアントでもあるという構成になっています。 別のバックエンド・プロセスは、同一サーバ(インスタンス)であることもありますし、別マシンの別サーバへ接続することもできます。 基的な使い方 インストールと簡単な使い方 最初に dblink をインストールします。 RPM

  • スロークエリの分析 | Let's POSTGRES

    NTT オープンソースソフトウェアセンタ 板垣 貴裕 スロークエリ (時間のかかるSQL) を発見するまでの手順を解説します。スロークエリ分析と改善は以下の流れで行うことになります。この記事では主に 1. のスロークエリの特定方法について解説します。2.については『スロークエリの改善』を参考にしてください。 どのSQLが遅いのかを見つける。 そのSQLがなぜ時間がかかるのかを判断する。 設定パラメータ、SQL、スキーマなどを改善する。 着目したSQLの性能を再測定し、2. から繰り返す。 着目したSQLのチューニングが完了したら、他のボトルネックを探すため 1. から繰り返す。 スロークエリの見つけ方 スロークエリを見つけるには、大きく分けて統計情報ビューを使う方法と、サーバログを使う方法の2つがあります。統計情報ビューを使う方法は PostgreSQL 8.4 以降でしか利用できませんが

  • パーティショニング : 用途と利点 | Let's POSTGRES

    NTT オープンソースソフトウェアセンタ 板垣 貴裕 パーティショニングとはデータを複数に分割して格納することです。データを分割することにより、性能や運用性が向上し、故障の影響を局所化することができます。巨大なデータを扱う場合にはパーティショニング機能を利用することも検討してみてください。 この記事ではパーティショニングの概要と用途について説明しています。PostgreSQL での具体的な使い方については『パーティショニング : 使い方』を参照してください。 パーティショニングの用途 パーティショニングには大きく分けて「テーブル間の分割」「ノード間の分割」の2つがあります。この記事では主にテーブル間の分割を扱います。 テーブル間の分割 巨大なテーブルを複数のテーブルに分割します。単純に複数のテーブルに分けて格納するだけでも効果はありますが、PostgreSQL は複数のパーティションを1つ

  • Pgpool-IIの簡単セットアップ機能を試してみよう(3) | Let's POSTGRES

    自動縮退・フェイルオーバを試してみる pgpool-IIは、PostgreSQLが動いているかどうか監視しており、もしPostgreSQLがダウンした場合には自動的に切り離して(「縮退」と言います)、クラスタ全体として運用を継続できるようにします。また、単に縮退させるだけでなく、スタンバイサーバをプライマリに昇格させたりするようなフェイルオーバ処理を実行させることもできます。 まずはpgpool-IIが現在のPostgreSQLの状態をどのように認識しているか見てみましょう。 $ psql -p 11002 test psql (9.2.4) Type "help" for help. test=# show pool_nodes; node_id | hostname | port | status | lb_weight | role ---------+----------+----

  • PostgreSQLでテストデータを作成する | Let's POSTGRES

    笠原 辰仁 記事は2013年のPostgreSQL Advent Calendar の 12/25 の記事です(地味なトピックになってしまいすいません)。PostgreSQLでのテストデータ作成に役立つ機能を紹介します。 はじめに PostgreSQLを対象としたの性能検証や機能検証を行う際に、開発環境や試験環境でスキーマ(テーブルやインデックス)を作成し、ダミーのデータを投入してSQLのチェックを行うことが多々あるかと思います。単純な機能の正常試験であれば少量のデータ投入で事足りると思いますが、大量のデータに対する検索処理やバッチ処理を試す際は、それなりの量の試験データを生成し、DBに投入する必要があります。 通常、試験データは、例えば専用のジェネレータを作る、実際のデータをマスキングしたものを使う、サンプルとして存在するデータ(郵便番号のデータなど)を利用する、といったことが多いと思

  • PostGISとは? | Let's POSTGRES

    農業・品産業技術総合研究機構 近畿中国四国農業研究センター 寺元郁博 はじめに 記事では、PostGISをインストールすること、格納したデータを図示すること、クエリを作ってみることと空間データがSQLで扱えること、をご紹介していきます。 また、地図を扱うという若干特殊な分野ですので、図示するためのソフトウェアも併用して実例を交えながらの記事としました。それでは、第1回目はPostGISの概要についてご紹介しましょう。 自己紹介 編に入る前に、簡単に筆者の自己紹介をしておきます。農業や農作業に関係したソフトウェアを作ったりしています。随分前からPostgreSQLを使っていましたが、 地理空間情報を扱う必要がでてきたため、PostGISに手を染めました。 "http://www.finds.jp/" でサービス等を公開しております。PostGISについて、今回は入門的な記事を書いてみま

  • PostgreSQL 超入門 第1回 | Let's POSTGRES

    この記事は、PostgreSQL とは何か、リレーショナルデータベースとは何かをわかりやすく説明するためのものです。 もしあなたがデータベースについて聞いたことがない、あるいは、言葉くらいしか知らないのであれば、そして、これからデータベースに関わっていくのであれば、ぜひこの記事を注意深くお読みいただきたいと思います。 記事の記述内容で分かりにくい、不適切な部分、もっと知りたいことなどございましたら、ぜひ著者までご一報下さい。なるべく早い時期にこの記事に反映したいと思います。 【第1回】データベースとデータベース管理システム 1.1 データベース管理システムが扱うデータ 1.2 データーベース管理システムとアプリケーション 1.3 データベース管理システムはデータベースを守る 1.4 データベースを使うと何人もの人が同時にデータベースを使える 【第2回】PostgreSQL って何? 【第3

  • pgbenchの使いこなし | Let's POSTGRES

    SRA OSS, Inc. 日支社 石井 達夫 pgbenchとは pgbenchはPostgreSQLに同梱されているシンプルなベンチマークツールです。最初のバージョンは筆者により作成され、日のPostgreSQLメーリングリストで1999年に公開されました。その後pgbenchはcontribという付属追加プログラムとして、PostgreSQLのソースコードとともに配布されるようになりました。どのバージョンでPostgreSQLに取り込まれたのかはPostgreSQL付属のドキュメント(HISTORY)には書かれていないので定かではないのですが、コミットログを見ると、おそらく2000年にリリースされたPostgreSQL 7.0で導入されたと思われます。その後数多くの改良がたくさんの人によって行われ、現在に至っています。 pgbenchを利用することにより、自分の使っているPost