2016年9月5日月曜日

1グラム(Unigram)の全文検索

こんにちは。

今回は 1 グラムの全文検索を利用できるようにします。

■ 1 グラム(Unigram) の全文検索

1 グラムの全文検索は文字列を一文字単位で分割しインデックスします。PostgreSQL の場合、デフォルトで備わっている機能で利用できます。文字列を一文字単位で分割し、GIN でインデックスし、検索するだけです。以下に手順を示します。

2016年8月31日水曜日

PostgreSQLのバックアップとリストア

こんにちは。

データベースにとってバックアップは最後の命綱です。バックアップとリストアを完全に理解することは安全なデータベース運用には欠かせません。今回は PostgreSQL9.3 を用いて、バックアップとリストアの全機能を簡単に紹介します。

■ データベースのバックアップとリストア

PostgreSQL では以下の方法が利用できます。

  • ファイルのバックアップ (ただし、オフラインバックアップのみ)
  • ファイルシステムのスナップショット (オンラインバックアップ可能)
  • pg_dump / pg_dumpall コマンドによるバックアップ (オンラインバックアップ可能)
  • アーカイブログによるバックアップ (非同期にバックアップ & 任意時点へのリカバリ可能)

レプリケーションもバックアップの一種と考えることも可能です。しかし、レプリケーションの場合

  • 操作ミス、攻撃などによるデータ破壊が発生した場合に対応できない

という欠点があります。ディスクのミラーリングなどの冗長性確保をデータのバックアップととらえないことと同様に、ここではレプリケーションはバックアップには入れないことにします。ここでは説明しませんが、レプリケーションを行いながらアーカイブログを利用したバックアップを行うことも簡単です。

2015年12月7日月曜日

Dockerも始めました2 ~Kubernetes編~

 こんにちは、北野です。今回は、前回のDockerの流れに乗り、コンテナ管理システム「Kubernetes」について調べてみました。

Kubernetesとは

 Kubernetesは、Dockerをはじめとするコンテナクラスタ管理システムです(長くてわかりづらい綴りなので「k8s」と略されることもあります)。Go言語で作成され、Apacheライセンスで配布されているオープンソースソフトウェアです(ソースコードは、https://github.com/googlecloudplatform/kubernetesにあります)。

 名前はギリシャ語の単語で、ネット上での情報を調べた限り、「クーバネィテス」もしくは「クーベルネィテス」というのが近い読み方のようです。意味は「船の操舵手」なのですが、Dockerのシンボルがクジラなので捕鯨船からの連想なのか、コンテナを運ぶ輸送船からの連想なのかは不明です。

2015年11月4日水曜日

Dockerも始めました

 こんにちは、北野です。前回はVagrantについて書きましたが、今回はもう1つの注目仮想技術である、「Docker」について調べてみました。

Dockerとは

  Docker は、Linuxのコンテナ系技術を利用してアプリケーションのビルド、デプロイ、実行を行うコンテナ管理ソフトウェアです。Docker社(旧dotCloud社)のSolomon Hykes氏によってGo言語で作成され、Apacheライセンスで配布されているオープンソースソフトウェアです(ソースコードは、https://github.com/docker/docker にあります)。

 Dockerは2014年6月のバージョン1.0のリリースを機に名称変更が行われ、前述した技術(多くの人がDockerと呼んでいるコンテナ管理技術)は、現在は「Docker Engine」が正式名称となっています。このDocker Engineに、アプリケーションの開発や配布を行うためのWebサービス「Docker Hub」、API、サードパーティによるエコシステムを含めたプラットフォーム全体の総称が「Docker」となりました。

2015年10月19日月曜日

PostgreSQL 9.5のBRINインデックス

こんにちは。

2015 年秋にリリース予定の PostgreSQL 9.5 には BRIN (Block Range INdex) と呼ばれる新しいインデックスが追加されます。名前の通り、まとまった単位のブロックに含まれている値をインデックスする仕組みを提供します。ブロックとは PostgreSQL のデータ保存単位の 1 つで、内部的に一まとまり (デフォルト 8 KB) の領域として管理されている物です。デフォルトでは 128 ブロック、つまり 1 MB分の領域に含まれているインデックス対象のカラムのデータをインデックスします。

2015年10月13日火曜日

PostgreSQL 9.5 の行セキュリティポリシー

こんにちは。

この秋リリース予定の PostgreSQL9.5 の行セキュリティポリシーを紹介します。これまではユーザーがアクセス可能な行を制限するにはビューを作成し、アクセスできるテーブルとビューを制限する方法が一般的でした。PostgreSQL 9.5 からは行セキュリティポリシーを利用してアクセス制御が可能になります。

■ ビューによる行アクセス制限の問題

ビューによって参照可能な行を制限できますが、大きな問題がありました。ビューの元となるテーブルのアクセス権限がないとビューにもアクセスできません。ビューでアクセス制限を行っても、元のテーブルにアクセスしてしまえばユーザーは全ての行にアクセスできました。トリガーやルールを駆使すれば可能でしたが行の挿入や更新、削除を簡単な方法で制限することもできませんでした。

行セキュリティポリシーによって PostgreSQL 9.5 からデータベースレベルで行の参照 / 挿入 / 更新 / 削除を簡単に制御できるようになります。

2015年7月30日木曜日

Google MapでPostgreSQLのJSONBを使うサンプル

こんにちは。渡辺 です。

今回は PHP と PostgreSQL の JSONB 型を使った Google Map のサンプルコードを紹 介します。サンプルの作成には PHP 5.6 と PostgreSQL 9.4 を利用しました。

■ Google Map のサンプル

元にする Google Map のコードは Google のサイトに掲載されている 「Remove marker」 の HTML + JavaScript のコードを利用します。このサンプルコードはサンフランシスコの Google 社にマーカーが設定されたページが表示され、クリックした場所に新しいマーカーを複数設定できます。

https://developers.google.com/maps/documentation/javascript/examples/marker-remove

スクリーンショット