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

スクリーンショット

2015年7月6日月曜日

cgroupsを利用したリソースコントロール入門

こんにちは、北野です。今回は、cgroups(Control Groups)について調べてみました。

ちなみに、ネット上にはcgroups、cgroupという2つの表記が混在しているようなのですが、カーネル付属のドキュメントでは「cgroups」となっていましたので、ここではその表記に準拠させていただきました。また、カーネル機能について述べているのか、設定したグループについて述べているのかも紛らわしいように思いましたので、後者は「コントロールグループ」と表記してあります。

cgroupsとは

cgroupsは、「プロセスをグループ化して、リソースの利用をコントロール」するカーネル機能で、Linux 2.6.24からマージされています。具体的には、グループ単位でリソースの割り当て、優先度、管理、モニタリングなどが設定できます。 cgroupsそのものはプロセスを「コントロールグループ」と呼ばれる単位にまとめるだけで、リソースコントロールを行うにはコントロールグループに「サブシステム」と呼ばれる抽象化されたリソース群をつなげる必要があります。

2015年7月3日金曜日

PostgreSQL 9.5のJSONBの部分更新

こんにちは。渡辺です。

PostgreSQL 9.2 から導入された JSON 型はリリースの度に機能が強化されています。PostgreSQL 9.5 では JSONB 型の機能が拡張され、部分更新が可能になる予定です。PostgreSQL 9.5 は執筆時点では開発版です。リリース時点では多少機能などに変更があるかも知れない点に留意をお願いします。

■ JSONB の部分更新

JSON 型は JSON データをテキストとして保存します。JSONB 型は JSON データをハッシュとして保存します。このため、仕組み的には JSONB 型は部分更新が可能でしたが、サポートされていませんでした。JSONB の部分更新をサポートするため、オペレータと関数が強化されます。