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

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