2013年12月28日

これからPostgreSQLを始める人のための自習用オンライン無料コンテンツ

2013年の仕事も納まり、年末年始に何をしようかと思案している方も多いのではないでしょうか。

AWS RDSでPostgreSQLの提供も始まり、またデータ分析ブームもあり、最近、改めてPostgreSQLを勉強してみよう、という人が増えているような気がしています。(私の周りだけでしょうか?)

というわけで、今回はオンラインで無料で入手できるPostgreSQLの学習用コンテンツをいくつかご紹介します。

年末年始のちょっとした勉強ネタ(暇つぶし?)を探している方は、ぜひどうぞ。

2013年12月15日

【9.3新機能チェック】データチェックサムの機能とパフォーマンスへの影響

このエントリは、PostgreSQL Advent Calendar 2013のDay15の記事です。

データベース管理システムにとって、「データを保護する」というのは非常に重要な役割のひとつです。

PostgreSQLには、9.3から「データチェックサム」という機能が追加されました。これは、ハードウェア障害などによってデータが壊れた時に、そのことを極力早期に検出しよう、という仕組みです。

今回は、このデータチェックサムについて、その仕組みと使い方、性能への影響について紹介します。

■「データチェックサム」とは

「データチェックサム」というのは、PostgreSQLのデータブロック内のデータのチェックサムのことで、PostgreSQLのデータブロックの中身が万が一壊れた時に、早期に検出できるようにするための仕組みです。

9.2まではこの機能が無かったため、「(メモリやディスク不良が起因で)データブロックの中身が壊れていることにかなり後になって気付く」ということもありました。

2013年12月3日

Apache JMeterでPostgreSQLの負荷試験をする

このエントリは、PostgreSQL Advent Calendar 2013のDay3の記事です。

「データベースの負荷試験」を考える時、皆さんはどのような方法で実施することを検討するでしょうか。自前のテストスクリプトでしょうか。あるいは、データベース単体の負荷試験は行わず、Webシステム全体の負荷試験として実施するでしょうか。

PostgreSQLには、pgbenchというベンチマークツールが付属しており、このツールのシナリオを作成することで多少は独自のシナリオでの試験を行うことも可能ですが、状況によってはそれだけでは自由度が不足することがあります。

今回は、Webシステムの負荷テストでよく使われるJMeterを使って、自由なシナリオでPostgreSQL単体の負荷試験を行う方法を紹介します。

(なお、JMeterは非常に多機能な負荷生成ツールですので、今回はJMeterの網羅的な説明ではなく、あくまでもPostgreSQLのテストをする際の観点に絞って紹介します。JMeterの詳細については、他の情報を参考にしてください)

■事前準備

事前準備として、以下のインストール、設定を行う必要があります。
  • Java SE
  • Apache JMeter
  • PostgreSQL JDBCドライバ
  • PostgreSQL
今回は、Java SEとPostgreSQLそのもののインストールについては割愛します。

2013年11月16日

RDS for PostgreSQLの中を覗いてみた(追記あり)

皆さんお待ちかねの、RDS for PostgreSQLが昨日リリースされました。
既にインスタンスを立ち上げてみた方もいるようです。
というわけで、デプロイまでの手順は上記を参照いただくとして、今回のエントリでは、実際に「PostgreSQLとして使う」という観点でいくつか見てみたいと思います。

2013年10月29日

アクセス統計情報を使ってデータベースへのアクセスポリシーを自動生成する

アクセス統計情報を使ってアクセスポリシーを自動生成する PostgreSQLでは、テーブルへのアクセス権限をGRANT/REVOKE文を使って設定することが可能です。

この設定をきちんと行うことによってセキュリティのレベルを高めることができますが、粒度の細かな設定が必要となるため、手間がかかるのも現実です。

今回は、このテーブルへのアクセス権限の設定(アクセスポリシーの作成)を、アクセス統計情報を用いることで(半)自動化してみます。

■アクセス統計情報とは


PostgreSQLには、他のRDBMS製品と同様、アクセス統計情報を取得する仕組みがあります。
アクセス統計情報とは、どのテーブルにシーケンシャルスキャンを何回実行したか、インデックススキャンを何回実行したか、あるいは何ブロックの読み取ったか、といった情報のことで、この情報を使うことによってデータベースにおけるアクセスの特徴やパターンを把握することができます。

もちろん、パフォーマンスチューニングの時には、この情報を活用することになります。

2013年10月13日

【リリース情報】マイナーアップグレード(9.3.1、9.2.5、9.1.10、9.0.14、8.4.18)が出ています

10月10日に、9.3~8.4の各メジャーバージョンに対する最新のマイナーアップグレードがリリースされました。

最新のメジャーバージョンである9.3に対する修正は少ないようですが、9.2以前のバージョンに対する修正がかなり多くなっていますので、当該バージョンをお使いの方は、一度目を通しておくことをお勧めします。

では、また。

2013年10月4日

10分で組み上げるAWS Multi-AZ PostgreSQLレプリケーション構成 powered by Chef

本日、JAWS-UG東京の勉強会で「10分で組み上げる AWS Multi-AZ PostgreSQLレプリケーション構成 powered by Chef」としてライブデモを含む簡単な発表をさせていただきました。
これは、PostgreSQLのレプリケーション(マスター・スレーブ2台構成)をMulti-AZ構成で組み上げる、そのプロセスをChefを使って自動化してみようというもので、構成は右の図の通りです。

デモの内容としては、
  • AWSの東京リージョンのそれぞれ別AZで、AmazonLinuxのAMIでインスタンスを2台立ち上げる。(VPCは未使用)
  • 各インスタンスにElastic IPを付与する。
  • Chef-Soloを使って、インスタンスのうち一台にマスターの設定を、もう一台にスレーブの設定を行う。
  • ストリーミングレプリケーションが動作していることを確認する。 
というものになります。

動画のデモを作成しましたので、本日参加できなかった方はこちらを見ていただければと思います。

2013年9月23日

PostgreSQL/Apache/PHP for Windowsインストールガイドを更新しました(9.3対応版)

PostgreSQL 9.3のリリースにともなって、「PostgreSQL/Apache/PHP for Windowsインストールガイド」を9.3対応に更新しました。
ファイルをダウンロードするところから、インストールし、Apache/PHP/PostgreSQLで動作確認するところまでを、順を追ってスクリーンショットとともに解説していますので、よろしければご利用ください。

では、また。

2013年9月12日

VagrantでPostgreSQL 9.3の動く仮想サーバを自動構築してみる

PostgreSQL 9.3がリリースされて数日経ちましたが、すでに試した方もおられるでしょうか。

試してみたいと思う一方で、環境をセットアップしたりするのが面倒で、なかなかトライできない、という方もおられるかもしれません。

今回、Vagrantを使ってOSのセットアップからPostgreSQL 9.3の初期化、サービス起動までを一気通貫で実行することができましたので、その手順をご紹介したいと思います。

■「Vagrant」とは


Vagrantは、最近、特にWeb系の開発者の間で広く使われるようになってきた仮想環境の管理ツールです。
VirtualBoxやVMwareといった仮想化ソフトウェアは仮想環境を提供しますが、Vagrantはそれらのソフトウェアをラップして、さらに使いやすくします。

具体的には、仮想マシンの作成、起動、終了などに加えて、「プロビジョニング」と呼ばれる任意のコマンドやスクリプトを自動実行する仕組みがあり、環境構築などの手間を省く、反復可能にする、といった目的に対して威力を発揮します。

2013年9月9日

【リリース情報】PostgreSQL 9.3正式版がリリースされました

先ほど、PostgreSQLの最新のメジャーバージョン9.3の正式版がリリースされました。
5月のベータ版リリースの際の記事でも簡単にご紹介しましたが、9.3でもいろいろな機能が強化されています。

これを機会に、ぜひ試してみてください。Windows版のインストーラMac OSX版のPostgres.appなどもありますので、デスクトップ環境でも簡単にインストールすることができると思います。

個人的にはマテリアライズドビューとデータページのチェックサムの機能に興味がありますので、いろいろ試してみたいと思います。

では、また。

2013年6月18日

CommitFestでパッチのレビューに参加してみよう

次期バージョン9.3のbetaが先日リリースされたばかりですが、PostgreSQLの最先端の開発は次々期バージョンの9.4に向かっており、その9.4の開発に向けての1回目のCommitFestが今週から始まりました。

[9.4 CF 1] Commit Fest has started
http://www.postgresql.org/message-id/51BE003A.2050600@agliodbs.com

今回は、「CommitFestとは何か」という話と、「開発プロセスに参加してみたいな」と思っている方に向けて、「CommitFestでパッチのレビューに参加してみよう」という話です。

■CommitFest(CF) とは


PostgreSQLはご存じの通りオープンソースソフトウェアですので、その開発プロセスでは、機能追加や性能改善などのディスカッションは開発者のメーリングリスト上で行われています。

PostgreSQL Mailing Lists: pgsql-hackers
http://www.postgresql.org/list/pgsql-hackers/

パッチが作成されてメーリングリスト上である程度のコンセンサスが取れると(言い換えると、強い反対が無い場合には)、そのパッチは「CommitFest(CF)」と呼ばれるプロセスに回されます。

2013年5月14日

【リリース情報】PostgreSQL 9.3のベータ1がリリースされました

昨日5月13日、PostgreSQL 9.3のベータ1がリリースされました。 主要な新機能として
  • Writeable Foreign Tables, enabling pushing data to other databases
    他のデータベースへデータを送る更新可能外部テーブル
  • pgsql_fdw driver for federation of PostgreSQL databases
    複数のPostgreSQLデータベースを連携させるpgsql_fdw
  • Automatically updatable VIEWs
    更新可能ビュー (関連記事
  • MATERIALIZED VIEW declaration
    マテリアライズドビュー (関連記事
  • LATERAL JOINs
    LATERAL JOIN
  • Additional JSON constructor and extractor functions
    JSONデータの作成・読み取る新規の関数
  • Indexed regular expression search
    インデックス化された正規表現での検索
  • Disk page checksums to detect filesystem failures
    ファイルシステムの障害を検出するディスクページのチェックサム
が挙げられています。

2013年5月4日

PL/pgSQLデバッガを使ってみよう

PostgreSQLのPL/pgSQLはプログラムロジックをデータベース側で実行させる非常に強力な機能です。今回は、PL/pgSQLとそのデバッガについてご紹介します。

■PostgreSQLの「PL/pgSQL」とは


PostgreSQLのPL/pgSQLは、データベース側にプログラムのロジックを埋め込むための仕組みで、通常のSQL(DDL、DML等)に制御のための構文が追加されてたような言語仕様になっています。

PL/pgSQL - SQL手続き言語
http://www.postgresql.jp/document/9.0/html/plpgsql.html

私自身、このPL/pgSQLをよく使うのですが、PL/pgSQLのひとつの難点は、ロジックが複雑になってくるとデバッグが難しい、ということでした。

そのため、伝統的なデバッグの方法、いわゆる「printfデバッグ」に頼ることになります。PL/pgSQLの場合、printfの代わりに(ログを出力する)RAISE NOTICEを使います。

エラーとメッセージ
http://www.postgresql.jp/document/9.0/html/plpgsql-errors-and-messages.html

「printfデバッグ」はどこでも使えて非常に便利なのですが、手間がかかるのが難点です。

■PL/pgSQLデバッガ by EnterpriseDB


PostgreSQLサポート企業の一社であるEnterpriseDB社は、PostgreSQLを独自に拡張したり、便利なツール類を開発して、そのコンサルティングやサポートを提供していますが、そのEnterpriseDB社の提供するツールの中に「PL/pgSQLデバッガ」があります。

2013年4月12日

ExcelからPostgreSQLにODBC接続してピボットテーブルを作成する

Excelのピボットテーブルは、データ集計・分析を手軽に行う方法として、非常によく使われているツール・機能であると言えるでしょう。



今回は、ExcelからPostgreSQLに接続して、データベース内のデータを用いてピボットテーブルを作成する方法をご紹介します。サンプルとして以下のような項目とデータを含む「注文情報」というテーブルを使ってピボットテーブルを作成してみます(PostgreSQLのデータベース内に作成してあるテーブルで、上記のピボットテーブルはサンプルデータから作成したものです)。



今回の環境はWindows7とExcel 2010ですが、多少バージョンが違ってもほぼ同じようにできると思います。

■手順の概要


ExcelからPostgreSQLに接続してピボットテーブルを作成する基本的な手順は以下の通りです。
  • PostgreSQL用のODBCドライバをインストールする
  • ODBCデータソースの設定を行う
  • Excelで外部データソースに接続する
  • Excel上でピボットテーブルを作成する
それでは順を追って見てみます。

2013年4月4日

【リリース情報】セキュリティリリース(9.2.4、9.1.9、9.0.13、8.4.17)が出ています

先日予告されていた通り、PostgreSQLのセキュリティリリースとして、新しいバージョン9.2.4、9.1.9、9.0.13、8.4.17が公開されました。 本セキュリティリリースのFAQも公開されています。 ここでは、セキュリティリリースのFAQのうち、主要な部分を対訳形式で掲載します。(翻訳に当たっては最善は尽くしていますが)当然ながら非公式な翻訳ですので、詳細は原文をご確認ください。

誤訳や改善の余地などがありましたら、コメント欄などにてフィードバックいただけると助かります。


2013-04-04 Security Release FAQ
2013-04-04 セキュリティリリースFAQ


While this FAQ covers the 2013-04-04 PostgreSQL Security Update in general, most of its contents focus on the primary security vulnerability patched in the release, CVE-2013-1899.

このFAQは2013-04-04のPostgreSQLセキュリティアップデートをカバーしていますので、内容の大部分は、このリリースで修正された主要なセキュリティ脆弱性 CVE-2013-1899 にフォーカスしています。

Who is particularly vulnerable because of this issue?
実際にこの問題によって誰が脆弱性に晒されていますか?


2013年3月30日

【リリース情報】セキュリティFIXがリリースされます

4月4日(木)にセキュリティFIXを含むマイナーアップデートがリリースされる予定です。


今回の対象は、コミュニティでメンテナンスされているすべてのバージョンとのことです。

現在コミュニティでメンテナンスされているのは、9.2系、9.1系、9.0系、8.4系のメジャーバージョンですので、これらについてマイナーアップデートがリリースされる模様です。


なお、コアチームからは「月曜日の午後(日本時間の火曜日?)から木曜日の午前中まで、コードレポジトリのミラーやコミットメールの配送も一時停止し、(各プラットフォーム向けの)パッケージが(ビルド、テストされて)リリースされるまでの間、コミッター以外はコミットを参照できなくなります」とアナウンスが出ています。

2013年3月4日

【9.3新機能チェック】マテリアライズドビューを試してみる

昨日、PostgreSQLの次期リリースである9.3のソースコードに、マテリアライズドビューのコードが追加されました。

pgsql: Add a materialized view relations.
http://www.postgresql.org/message-id/E1UCJDN-00042x-0w@gemulon.postgresql.org

PostgreSQLの開発者Wikiによると、マテリアライズドビューはもっとも要望の多かった機能のようです。

Materialized Views - PostgreSQL wiki
http://wiki.postgresql.org/wiki/Materialized_Views

今回は、このマテリアライズドビューがどのようなものなのか、そしてどのように使えるのかを見てみます。

■マテリアライズドビューとは


「マテリアライズドビュー」とは、特に集約や集計系の処理をする際に使われる機能で、ビューから取得できるデータの実体を持つ(materialized)ビューです。

通常、ビューというのは「見え方を定義する」だけですので、ビューに対する参照処理を行うと、その都度、元のテーブルに対してSQLの参照処理が行われることになります。

2013年2月19日

【資料公開】「“今そこにある危機”を捉える ~ pg_stat_statements revisited」

2013年2月16日に開催された「PostgreSQLアンカンファレンス」でのセッション「“今そこにある危機”を捉える ~ pg_stat_statements revisited」で使ったスライドを公開しました。

SQLのパフォーマンス分析、チューニングに今や不可欠なpg_stat_statementsビューの使い方を簡単に解説した資料です。


当日、セッションに参加している方に聞いてみたら、「pg_stat_statementsを知らなかった」とか「知っていたけど使ったことがなかった」という方も多くいましたので、改めてぜひ見てみていただければと思います。

資料の中で便利スクリプトも紹介していますので、そちらも併せてどうぞ。

※関連エントリ
実行が遅いSQL文をpg_stat_statementsで抽出する