タグ

lets-postgresに関するnabinnoのブックマーク (282)

  • 2010年 新年のご挨拶 — Let's Postgres

    Let's Postgres 読者の皆様 明けましておめでとうございます。 おかげさまで Let's Postgres も開設から足掛け3年目を迎えることができました。この間、コンテンツも順調に増えると共に、閲覧数も順調に延びて参りました。特に実務で多く使われているようで、委員会発足時の願いが少しずつ達成されているように思われます。これを励みに、新年を迎えてスタッフ一同ますます張り切っております。2010 年も何卒よろしくお願い致します。 さて、年が明け、PostgreSQL の世界は新しいリリースの開発がいよいよ終盤に入ってきました。今開発中の 8.5 では、新たにクラスタ機能の追加が目前に迫るなど、使い易さや機能面に加え、信頼性、可用性が一段とアップします。また、このほか数多くの機能追加と改良の中で、日人開発者の貢献度は年を経るごとに大きくなってきています。PostgreSQLのシ

  • パーティショニング : 使い方 | Let's POSTGRES

    1. UPDATE, DELETE へのルールの定義 8.1 以前では UPDATE, DELETE に対して『ルール (RULE)』の定義が必要です。古いバージョンでは検索条件による自動的な絞込みが行われないため、検索を効率化するためにルールを用いて不要なパーティションを除外してやる必要があるのです。 この作業には手間がかかると思いますので、作業が自動化された 8.2 以降を使うことをお勧めします。 2. constraint_exclusion による SELECT, UPDATE, DELETE の自動化 設定パラメータ constraint_exclusion が追加され、SELECT は 8.1 以降で、UPDATE, DELETE は 8.2 以降で、絞込みが自動的に行われるようになりました。constraint_exclusion = on を設定します。ただし、デフォルトの

  • PHPでのSQLインジェクション対策 - エスケープ・クォート編 — Let's Postgres

    第四企画 坂井 潔 ここではPHPSQLインジェクション対策としてエスケープ・クォート処理を行うケースを説明します。なおSQLインジェクションの簡単な説明や、プレースホルダを用いてより効果的な対策を行うケースに関してはプレースホルダ編を参照してください。 エスケープとは? それではエスケープ処理とはなんでしょうか? 分かりやすいケースとして、文字列を扱う場合を説明します。 例えば「名前がO'Reillyの行をテーブルusersから取得する」あるいは「テーブルusersに、名前はO'Reilly、メールアドレスはo'reilly@example.comとo'reilly_mobile@example.netの2つを改行で繋げたデータを、行として挿入する」と言ったSQLをつくると、この命令文全体が1つ文字列になります。その命令文としての文字列の中に、値としての文字列を埋め込む場合には、それが

  • PGCon2010参加レポート (チュートリアル編) — Let's Postgres

    NTTオープンソースソフトウェアセンタ 勝俣 智成 2010年5月18日から21日にかけて開催されたPostgreSQLの開発者/ユーザが一同に介するカンファレンス(PGCon2010)に参加してきました。 PGConは年に一度行われるPostgreSQLコミュニティのビッグイベントで、今年で第5回目を迎えます。世界各国の人たちがおよそ150名ほど参加しており、日からの参加者も私を含め10名ほどいました。 開催地はカナダの首都オタワです。記念すべきPostgreSQLの最初の国際カンファレンスは、PostgreSQLの最初の開発サーバが置かれていたカナダのトロントで開催されました。以降、カンファレンスの仕切り役であるDan Langille 氏により、"PGCon"としてオタワ大学を会場として毎年開催されています。 事前の情報では、5月でも厚手の上着が必要な印象ということでしたが、天候に

  • ログ解析にパーティショニングを利用してみよう | Let's POSTGRES

    Hitoshi Harada ここまでで一通り分析を終えました。ある時点での分析を行うことももちろんのこと、継続的にログを分析していき結果を比較していきたいものです。今回のデータは6日ばかりを対象にしているためデータサイズは大きくありませんでしたが、1ヶ月、1年と経過するにつれてサイズが増大します。ここでは、分析を継続していくために必要なテーブルパーティショニング(分割)の技術についてご紹介します。パーティショニングについてはこちらでも紹介しています。併せてお読み下さい。 PostgreSQLにおけるパーティショニング 9.0 現在、PostgreSQLにおけるパーティショニング機能とは、単一ノードにおける水平分割です。つまり、1マシン上において、行を選り分けることでテーブルを分割します。世の中のRDBMSには垂直分割(列による選り分け)をサポートしたり複数ノード(複数のマシン上にテーブル

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

    メインコンテンツに移動 PostGISを使った地図や幾何データの管理、検索を紹介します。 ブックナビゲーション 入門向けの記事 OSS の開発コミュニティってどんなところ? PostgreSQL が私に与えてくれたもの PostgreSQL 超入門 第1回 これを読めば PostgreSQL の全てが分かる!PostgreSQL ガイドブック サンフランシスコのPostgreSQL事情 PostgreSQL上にMediaWiki環境を構築 キャストを追加してバージョン互換性を保つには HOTの活用 PostgreSQLでXMLを処理してみよう! CentOS で PostgreSQL を使ってみよう! Mac OS X で PostgreSQL を使ってみよう RPMで複数バージョンのPostgreSQLをインストールしてみよう UbuntuでPostgreSQLを使ってみよう Windo

  • PostgreSQL 9.0.0 がついにリリースされました! — Let's Postgres

    PostgreSQLのメジャーバージョンアップである 9.0.0 がリリースされました。 待望のPostgreSQL 9.0.0 がリリースされました! PostgreSQL 9.0 には組み込みのバイナリ・レプリケーションを始め、数10の新機能が追加されています。ウェブ開発者にとっても、データベースのエキスパートにとっても、役に立つことでしょう。 9.0 にはかつてないほどの数多くの新機能が盛り込まれています。例えば、 ホット・スタンバイ (Hot standby) ストリーミング・レプリケーション (Streaming replication) 以前のバージョンからのダンプ無しでのアップグレード (In-place upgrades) Windows版の64bitサポート (UNIX系は以前から対応済み) 簡単な操作での一括権限設定 ストアド・プロシージャにて無名ブロック (DO) と

  • 文字列処理の比較 | Let's POSTGRES

    FORCIA, Inc. 板垣 貴裕 PostgreSQLSQL から利用できる関数 (以下、SQL関数) を豊富に提供しています。 今回は文字列の処理に注目して、SQL関数と、プログラミング言語の標準ライブラリが提供する機能を比較してみます。 比較対象のプログラミング言語は JavaJavaScript です。 PostgreSQL での文字列型の使い方全般に関しては、「文字列処理と日語全文検索」も参照してください。 全般的な比較 SQL, Java, JavaScript すべて、文字列は変更不可能なオブジェクトです。 また、空文字と null は異なることも、すべての言語で共通しています。 違いとしては、文字のインデックス (添字, 文字の位置) の表現方法があります。 SQL関数では、最初の文字のインデックスは 1 です。 一方、Java, Java Script で

  • 第3回 PostgreSQLの利用事例と情報収集 | Let's POSTGRES

    株式会社ビジュアルワークス様が提供する「フォレストページ」は、180 万人の会員をもつ携帯向けの無料ホームページサービスです。 関連サイトの小説投稿サイトからは「天使のいた屋上」などの書籍も生まれるなど、女子中高生を中心に高い支持を得ており、月間訪問ユーザ数は 200 万人、月間PV は 25億PV を越すサイトです。このフォレストページでは、以下の構成で運用しています。 フォレストページは 2004 年に開設。当時情報が充実していた PostgreSQL を採用しました。 2008 年にはデータベースの可用性向上のために、Slony-I、pgpool-II を導入。 Slony-I によるレプリケーションを行ない、pgpool-II の負荷分散機能により、更新は Slony-I のマスタへ、検索は Slony-I の各ノードへの振り分けを行なっています。 レプリケーションによるデータの冗

  • 第5回 PostgreSQL でのデータベース構築の際に必要となる物理設計のポイント — Let's Postgres

    NTT オープンソースソフトウェアセンタ 板垣貴裕 データベース・サイジング サイジングとは、サービスの開始前に、想定される負荷や格納されるデータ量を見積り、十分な性能や規模のサーバおよびストレージを用意することです。 今回は、サイジングの要素のうち、ストレージサイズの計算方法を紹介します。 データファイルの構成 PostgreSQL はデータベース・クラスタと呼ばれるディレクトリの下に、複数のディレクトリやファイルを作成します。 容量の多くを占めるのはアプリケーションが使うテーブルやインデックスになるでしょうが、それ以外にも管理領域やログのためのディスク領域が必要になります。

  • SQLを使ってログ解析をしよう | Let's POSTGRES

    PostgreSQLを使ってアプリケーションのログ解析を行います。データを取り込み、WebのアクセスログをPostgreSQLの機能を活かして解析します。 SQLを使ってログ解析をしよう PostgreSQLを使ってアプリケーションのログ解析を行う手法を紹介します。まず初回はログをPostgreSQLDBに取り込む方法と、それに関するノウハウについて解説します。 ログ解析にhstoreを利用してみよう 今回は、PostgreSQLDBに格納したログデータを、hstoreを利用して加工しやすい形にする方法を紹介します。hstoreはPostgreSQLのcontribモジュールです。記事では、複数の要素を持つtextデータを扱いやすくする方法を解説していきます。 ログ解析にWindow関数を利用してみよう (遷移/離脱) ログデータの具体的な解析方法を解説します。Webページのアクセス

  • バックアップの概要と方式一覧 — Let's Postgres

    NTT オープンソースソフトウェアセンタ 鈴木 幸市 記事では、PostgreSQLデータベースのバックアップとリストア方法を解説していきます。 今回は、各種バックアップの概要を説明し、次回以降でそれぞれの方法の具体的な手順を示していきます。 用語の整理 「バックアップ」とは、データベースの障害に備えたり、アップグレードの際にデータを移行するために、データベースの内容を別のファイルに取り出すことをいいます。 バックアップには、データをSQLやテキストデータとして取り出す「論理バックアップ」と、データファイルをそのまま保存する「物理バックアップ」があります。 論理バックアップでは SQL の結果としてデータを保存するので、もちろん PostgreSQL サーバは動作したままです。 一方、物理バックアップでは、サーバを停止した状態でバックアップを行う「オフライン・バックアップ」と、サーバを起

  • PostgreSQL Conference 2011: 基調講演~トラックA — Let's Postgres

    2011年2月25日、PostgreSQL Conference 2011 が開催されました。 筆者も司会進行としてカンファレンスのお手伝いをしながら、講演を聴いてきました。その様子をお伝えします。 PostgreSQL を活用した国内初の流通小売業向け SaaS 型基幹システム 株式会社サイバーリンクス / 西尚史 様 [PDF] 講演資料 サイバーリンクス社の基幹システムでの PostgreSQL の利用事例でした。 汎用機や商用RDBMSから PostgreSQL への移行だったということで、柔軟なトランザクション処理、充実したストアド・プロシージャ、夜間バッチの性能が採用の決め手だったようです。 当初はバージョン 7.4 でしたが、機能追加や業務規模拡大のためバッチに時間がかかるようになり、8.4へのバージョンアップも行われました。 その際の移行ノウハウは、参考になると思われます

  • pgpool-II レプリケーション構成 | Let's POSTGRES

    SRA OSS, Inc 古跡 智仁 章では、pgpool-II によるレプリケーション構成について紹介します。 pgpool-II をレプリケーションモードで動作させて使うことで PostgreSQL サーバのレプリケーション構成を構築することができます。 pgpool-II によるレプリケーション レプリーケーション構成とは、複数ノードにデータの複製を作成する構成のことを指します。pgpool-II は、アプリケーションから受け取った問い合わせをクエリベースで複数ノードに送信して、同じ内容のデータベースを複数ノードで保持することが可能です。ハードディスク障害などで1つのノードが正常に動作しなくなると、これを検知して障害ノードを切り離して縮退動作します。障害検知にあたっては、アプリケーションからのアクセスでエラーになる場合のほか、pgpool-II 自身で定期的なヘルスチェックを行わせ

  • PostgreSQL の構造とソースツリー(2) — Let's Postgres

    PostgreSQLのソースコード PostgreSQL のおおまかな構造がわかったところで、PostgreSQL のソースコードの構造を見ていきましょう。 PostgreSQL が現在の形になったときは 20 万行ほどだったソースコードは、今では 100 万行ほどあります。 これほどの量になると、闇雲にコードを読んでも理解するのは難しいでしょう。 そこでまず稿で大まかなソースコードの構造を理解していただきたいと思います。 トップレベル PostgreSQL のソースコードを展開すると、トップレベルには表のようなファイルやディレクトリがあります。 トップレベルで configure; make; make install を行なえば、基的なインストールはすぐにできるようになっています。 実際には、PostgreSQL のソースからのインストールは極めて容易です。 ファイル/ディレクトリ

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

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

  • PostgreSQL 9.1 リリース — Let's Postgres

    2011年9月12日: PostgreSQLグローバル開発グループはPostgreSQl 9.1のリリースをアナウンスします。先端的なオープンソースデータベースの最新バージョ ンでは、革新的な技術、類を見ない拡張性、同期レプリケーションやK-最近傍インデックス、外部データラッパなど新しい機能を提供します。 VMware R&D担当上級副社長Charles Fanはこう述べています。 「PostgreSQL 9.1はオープンソースデータベースの中でもっとも高度なエンタープライズ機能のいくつかを提供し、また、成功実績を持つ、活気にあふれ、革新的なコミュニティによって支えられています。 PostgreSQLはクラウドにおけるアプリケーションの構築や稼働によく適しています。」 ユーザへの対応 バージョン9.1は長年ユーザから要望のあった機能を追加するとともに、アプリケーションのPostgreSQL

  • キャストを追加してバージョン互換性を保つには | Let's POSTGRES

    NTT オープンソースソフトウェアセンタ 板垣 貴裕 PostgreSQL 8.3 では型変換のチェックが厳密になるよう仕様変更されました。特に文字列型への暗黙の型変換が無くなったため、以前のバージョンで動作していたアプリケーションであっても 8.3 上ではエラーが発生するかもしれません。もちろん、一番確実な対応方法は、型を厳密に扱うようアプリケーションやSQLを書き換えることですが、アプリケーションの規模が大きかったり、そもそも書き換えができないケースもあるのではないかと思います。できれば、せっかく高速化された 8.3 へはバージョンアップしたいですし、互換性を保つ手軽な方法は何か無いでしょうか? 型エラーのメッセージ 型変換でエラーが発生している場合の典型的なエラーメッセージには、以下のようなものがあります。もし 8.3 へのバージョンアップ後にこれらのエラーが出力されるようならば、キ

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

    ~性能を最大限に引き出すための設計・開発・運用~ 永安 悟史 記事は、技術評論社 WEB+DB PRESS Vol.63 で掲載されたものを、著者と出版社の許可を得て転載したものです。なお、一部 記述に変更のある箇所もあります。 アーキテクチャから理解するデータベース データベースの技術は長い歴史の蓄積があり、その実装であるデータベース製品は非常に複雑なソフトウェアとなっています。そのため、深く理解するにはそれなりの学習期間と経験を必要とします。 章では、データベースの中でも特にリレーショナルデータベース(RDBMS)について、理解するためのポイント/観点と、具体的に開発/運用時に注意すべき点について解説します。 データベースの理解は「立体的」に データベースの挙動をきちんと理解するためには、データベースを構成する要素を「立体的」、つまり複数の角度/軸で理解する必要があります。 処理の

  • PHPでPostgreSQLを使ってみよう | Let's POSTGRES

    プログラミング言語PHPでPostgreSQLを使ってみましょう。その具体的な方法や、その時に気をつけることべきことを紹介します。