PowerGres V9.1 は、オープンソースデータベースとして実績・定評のある PostgreSQL の 9.1 をベースに、より使いやすく、より安心して使用できるように GUI の管理ツールやサポートサービスを付属したデータベース製品です。
コマンドラインに慣れていない Windows ユーザの方でも、PowerGres Manager という便利な GUI の管理ツールを使えば直観的にデータベースの管理・監視・運用ができます。ここでは、 Windows 7 に PowerGres on Windows V9.1 のインストール手順として、評価版のダウンロードから、インストール、セットアップ、基本的なデータベースの操作までを紹介します。
以下の URL から PowerGres on Windows V9.1 の評価版をダウンロードします。
https://powergres.sraoss.co.jp/pgweb/s/ja/download/download-onWin.php
評価版は、zip 形式の圧縮ファイルです。zip ファイルを選択した上で、右クリックの「すべて展開」とすると PowerGres9.1Update1-ja というフォルダが作成されます。インストール、セットアップの方法は、マニュアルにも詳しく記載されています。(マニュアルは、PowerGres9.1Update1-ja\ja\manual\index.html になります。) オンラインマニュアルにもあります。
https://powergres.sraoss.co.jp/manual/onLinux/V91/admin/
インストールは、展開後のフォルダの PowerGres フォルダの Setup.exe を実行します。
※インストール時のユーザは、Windows の administrator 権限のあるユーザで実行する必要があります。ウィザード形式のウィンドウ画面にしたがっていけば、簡単にインストールができます。
ポイント1:評価版のライセンスキー入力を求められますので、 Evaluation と入力してください。
ポイント2:インストールするバージョンでインストールするマシンに適切なバージョン(32 Bit, 64Bit)を選択します。
※インストールするシステム情報を確認する方法は、「コントロールパネル」 -> 「システムとセキュリティ」-> 「システム」で使用しているオペレーティングシステムが表示されます。
インストールが成功したら、デスクトップに PowerGres V91 のショートカットが作成されますので、それをダブルクリックし PowerGres 管理ツールを起動します。起動できたら、インストールは成功です。次にセットアップをしていきましょう。
事前に、Windows OS に PowerGres サービス専用アカウント postgres を作成しておきます。PowerGres でのスーパーユーザとなるユーザです。
管理ツールからデータベースを管理するには、「サーバを登録」します。その際、データベースのデータを格納する領域であるデータベースクラスタを初期化します。
「サーバを登録」とは、管理ツールに管理対象のデータベースクラスタを登録する操作のことです。「ファイル」の「サーバを登録」から、サーバ情報を入力してサーバを登録します。
必要な情報を入力していきます。各入力項目の説明については、以下をご覧下さい。
設定項目 | 設定値 | 設定項目の説明 |
---|---|---|
ラベル | powergres91 | Windows のサービス名として登録されます |
ポート | 5432 | ポート番号のことです。複数のサーバが存在した場合、このポート番号が重複しないようにします |
データベースディレクトリ | C:\data | データベースクラスタのディレクトリになります |
文字エンコーディング | UTF8 | データベース側のデフォルトの文字エンコーディングになります |
スーパユーザ名 | postgres | デフォルトの postgres を使用します。こちらで指定したユーザが PowerGres のスーパユーザになります |
パスワード | 任意 | スーパーユーザにパスワードを設定しています |
パラメータチューニングの有無 | 実施する | チェックした場合、メモリ容量とデータベースへの接続数、データベースの用途をもとに、パラメータの初期値を大まかに自動調整します |
「initdb を実行するユーザを選択してください」とユーザ選択画面が表れますので、Windows OS で作成した、PowerGres サービスアカウント用である postgres を選択します。 initdb とはデータベースクラスタを作成するためのコマンドです。
ポイント1:データベースの文字エンコーディングは、日本語を使用する際には、 UTF-8, EUC-JP を使用するのが一般的です。
サーバの登録が終わると、左のボックスに管理ツールにサーバが登録され、クリックすると「サーバ情報」を見ることができます。
次に「サービス」をクリックし、「PowerGresをWindowsサービスとして登録」をクリックします。Windows サービスへの登録により Windows 起動時に PowerGres が自動的に起動するようになります。
ここで「サービスを開始」をクリックし、 PowerGres サーバを起動します。
正常にサービスが起動すると、「サービスを開始」ボタンがグレーアウトした状態になります。
ロール(ユーザ)を作成しましょう。
スーパーユーザ(postgres)でもデータベースを操作できますが、スーパーユーザには全てについての権限があります。セキュリティや誤操作防止の観点から、通常の操作はスーパーユーザとは別に一般ユーザ (のロール) を作成し、そのユーザで操作を行うことをおすすめします。
ロールという概念は、ユーザとグループをまとめたものです。PowerGres ではログイン権限やデータベースオブジェクトへの各権限などをロール単位で設定します。PowerGres のスーパーユーザ postgres は最初から作成されていますが、一般ユーザは作成していないので存在しません。
「オブジェクト」の「ロール」を見ると、ロールが確認できます。
「ロールを作成」をクリックします。ここでは、ログイン権限、データベースの作成権限のある一般ユーザを作成します。
設定値は以下の通りとなります。
ロール作成項目 | 設定値 |
---|---|
ロール名 | testuser |
パスワード | 任意 |
ログイン権限 | あり |
スーパーユーザ権限 | なし |
データベース作成権限 | あり |
ロール作成権限 | なし |
レプリケーション権限 | なし |
testuser を作成すると、このように表示されます。
一般ユーザ testuser でデータベースを作成してみましょう。
データベースクラスタ data のデータベースを見るには、「オブジェクト」の「データベース」をクリックすると一覧で表示されます。この時、3 つのデータベースが既に存在します。
※ initdb 時に postgres, template0, template1 が自動的に作成されます。postgres が PostgreSQL 自身を管理するデータベースで、template0, template1 がこれから作成するデータベースの雛型データベースとなります。
「オブジェクト」の「データベースを作成」をクリックすると、データベースを作成する事ができます。ここでは以下のように設定します。
psql でデータベースに接続してみましょう。psql はデータベースに接続して SQL を実行するためのプログラムです。
「その他ツール」から「psql コマンドラインツールを実行」の「実行」をクリックします。
psql を起動すると、以下のターミナルが立ち上がります。その際、パスワードの入力が求められます。サーバの登録時にスーパーユーザ postgres に設定したパスワードを入力します。
psql のプロンプトで PowerGres のスーパーユーザは =# 、一般ユーザは => で違いがあります。画面はスーパユーザが postgres データベースに接続している状態です。なお、終了する際は、\q を入力します。psql には SQL 以外にも psql 内のみで使える便利なバックスラッシュコマンド(メタコマンド)があります。主なバックスラッシュコマンドは、以下のとおりです。その他のバックスラッシュコマンドは、psql を使っていく中で紹介していきます。
主なバックスラッシュコマンド | |
---|---|
コマンド | 意味 |
\? | コマンド一覧 |
\c databasename [username] | 新しい接続で他のデータベースに接続。ユーザ名も付けるとそのユーザで接続 |
\h [SQL] | SQL のヘルプ |
\d [t|i|s|v|S] | テーブル、インデックス、シーケンス、システムテーブルの一覧 |
\l | データベース一覧 |
\d [NAME] | 指定したテーブル、インデックス、シーケンスなどの定義を表示 |
\dT | データ型の一覧 |
\df | 関数の一覧 |
それでは、\c コマンド を使って 先ほど作成したデータベース testdb に接続してみましょう。その後、SET ROLE 文でロールをスーパーユーザ postgres から、一般ユーザ用のロール testuser に変えてみましょう。
postgres=# \c testdb testdb=# SET ROLE testuser;
ポイント1: RESET ROLE で元のロールであるスーパーユーザ postgres に戻れます。
testdb に接続ができたら \d でまずテーブルを確認してみましょう。まだ testdb にはテーブルを作成していなので、以下のようなメッセージが出ます。
SQL を実行する前に、文字エンコーディングについて少し触れておきます。
データベースの文字エンコーディングは、データベース作成の時に UTF8 に指定しました。クライアントの文字エンコーディングは、デフォルトではデータベースと同じ UTF8 となります。しかし、Windows OS では文字エンコーディングが UTF8 のままでは日本語が文字化けしてしまうため、ここで設定します。
現在のクライアント文字エンコーディングを確認するには、\encoding を実行します。
\encoding
\encoding sjis
psql 上で、SQL を実行し、簡単なテーブルを作成してみましょう。ここでは、社員テーブル employee を作成します。下の CREATE TABLE 文で 4 つのカラムを持ったテーブルを定義しています。
CREATE TABLE employee ( number int, -- 社員番号 name text, -- 名前 position text, -- 役職 date_of_hire date -- 入社日 );
\d で employee テーブルを確認してみましょう。
\d employee
SQL の基本となる 4つの構文 INSERT, SELECT, UPDATE, DELETE をそれぞれ実行して、データの投入から削除まで行います。
社員テーブル employee が定義できたら、INSERT 文で以下のデータを登録していきましょう。
INSERT INTO employee VALUES (1981352, '吉本 勘兵衛', 'staff', '1998-04-01'); INSERT INTO employee VALUES (1782822, '長崎 一郎', 'chief', '1978-10-01'); INSERT INTO employee VALUES (2081577, '山田 太郎', 'staff', '2008-04-01'); INSERT INTO employee VALUES (1851139, '大村 祐子', 'chief', '1985-04-01');
テーブルへのデータの登録が済んだら、 SELECT 文で確認してみましょう。
SELECT * FROM employee;
UPDATE 文でデータの更新を行いましょう。社員番号 1981352 の吉本さんの役職が、マネージャ(manager)に昇進したと仮定して、データの更新を行っていきます。注意しなければならないのは、WHERE 句で条件を指定しないとすべての行が更新されてしまいます。吉本さんの社員番号を条件に指定しています。
UPDATE employee SET position = 'manager' WHERE number = 1981352;
DELETE 文で削除を行いましょう。社員番号 1851139 の大村さんが退職したと仮定して。データの削除を行います。こちらも、UPDATE 文の時と同じように WHERE 句で条件を絞りこんでから削除をします。
DELETE FROM employee WHERE number = 1851139;
SELECT 文で確認してみましょう。
SELECT * FROM employee;
SQL 基本 4 構文 | ||
---|---|---|
データの操作 | SQL | 構文例 |
登録 | INSERT 文 | INSERT INTO employee VALUES (1981352, ‘吉本 勘兵衛’, ‘staff’, ‘1998-04-01’); |
検索 | SELECT 文 | SELECT name FROM employee; |
更新 | UPDATE 文 | UPDATE employee SET position = ‘manager’ WHERE number = 1981352; |
削除 | DELECT 文 | DELETE FROM employee WHERE number = 1851139; |
今回は PowerGres の導入方法と基本的な使いかたについて紹介しました。
さて、導入したデータベース環境の運用を開始するにあたって、障害を想定したシステム構成を組めるかどうかはDB管理者にとって重要な要素の一つとなります。PowerGres では信頼性をより高める手法として、ホットスタンバイ/ストリーミングレプリケーション機能が備わっています。次回は、ホットスタンバイ/ストリーミングレプリケーションの構築方法について紹介します。