このレッスンでは、データベースとそのトランザクションログを格納するのに必要なディレクトリ、そしてメッセージのディレクトリ構造を作成します。また、リモートユーザーおよびデータのレプリケートに必要なパブリケーションとサブスクリプションなど、統合データベースのスキーマを定義します。SQL Remote が統合データベースに対して稼働する場合、FILE メッセージシステムを使用してメッセージを送受信しますが、リモートデータベースは HTTP メッセージシステムを使用します。
統合データベースとリモートデータベースを保持するため次のディレクトリを作成します。
統合データベース、リモートデータベース、メッセージサーバーデータベースが生成したメッセージファイルを格納するために、次のディレクトリを作成します。
c:\tutorial\cons ディレクトリから次のコマンドを実行して、統合データベース (cons) を作成します。
dbinit cons.db |
統合データベースを起動します。
dbeng12 -n cons c:\tutorial\cons\cons.db -xs http(port=8033) |
これは、リモートデータベースからの HTTP 要求を受信し、c:\tutorial\messages ディレクトリに存在するメッセージファイルにアクセスするデータベースサーバーであるため、コマンドラインには -xs http(8033) が必要です。データベースサーバーが起動した時点では Web サービスは定義されていませんが、次のレッスンで作成されます。このレッスンでは、パーソナルデータベースサーバーのみを起動します。したがって、このコンピューターの SQL Remote プロセスだけが、HTTP を使用してメッセージサーバーと通信できます。生産環境では通常、他のコンピューター上の SQL Remote プロセスも Web サービスにアクセスできるよう、ネットワークサーバーを使用するはずです。 -xs の使用の詳細については、-xs dbeng12/dbsrv12 サーバーオプションを参照してください。
Interactive SQL を使用して、DBA 権限を持つユーザーとして統合データベース (cons) に接続します。
dbisql -c "UID=DBA;PWD=sql;SERVER=cons;DBN" |
統合データベース (cons) のグローバルデータベース ID を設定するには、次の文を実行します (GLOBAL AUTOINCREMENT デフォルトを使用する場合には、すべてのデータベースに排他的なプライマリキーが選択されるようグローバルデータベース ID が必要です)。
SET OPTION public.global_database_id=0; |
このチュートリアルのデータベースのスキーマは、1 つのテーブルから構成され、テーブルのすべてのカラムとローはすべてのリモートユーザーにレプリケートされます。統合データベース (cons) 用に次の文を実行し、データベースに 1 つのテーブルを作成します。
CREATE TABLE employees ( employee_id BIGINT NOT NULL DEFAULT GLOBAL AUTOINCREMENT(1000000) PRIMARY KEY, first_name VARCHAR(128) NOT NULL, last_name VARCHAR(128) NOT NULL, hire_date TIMESTAMP NOT NULL DEFAULT TIMESTAMP ); |
統合データベース (cons) で次の文を実行し、サンプルデータを従業員テーブルに追加します。
INSERT INTO employees (first_name, last_name) VALUES ('Kelly', 'Meloy'); INSERT INTO employees (first_name, last_name) VALUES ('Melisa', 'Boysen'); COMMIT; |
統合データベース (cons) で次の文を実行し、そのテーブルが作成され、データが挿入されていることを確認します。
SELECT * FROM employees; |
クエリは、従業員テーブルから次のデータを返します。ただし、hire_date カラムには、次のテーブルにある値ではなく、そのローを挿入した時間が記載されます。
employee_id | first_name | last_name | hire_date |
---|---|---|---|
1 | Kelly | Meloy | 2011-03-25 08:27:56.310 |
2 | Melisa | Boysen | 2011-03-25 08:27:56.310 |
このチュートリアルでは、パブリッシャーとリモートユーザーにはパスワードが割り当てられます。これは、統合データベースが HTTP メッセージシステム用のメッセージサーバーとして動作するためです。次の文を実行して、CONNECT パーミッションおよび PUBLISH パーミッションを持つユーザー cons を作成します。
GRANT CONNECT TO cons; GRANT PUBLISH TO cons; |
パフォーマンス上の理由から、HTTP メッセージシステムはリモートデータベースのみで使用することができ、統合データベースでは使用できません。次の文は、統合データベースで FILE ベースのメッセージシステムを使用する設定を行うものです。
CREATE REMOTE MESSAGE TYPE FILE ADDRESS 'cons'; SET REMOTE FILE OPTION public.directory='c:\\tutorial\\messages'; SET REMOTE FILE OPTION public.debug='yes'; |
次の文を実行して、リモートユーザー rem をパスワードなしで作成します。次に、REMOTE パーミッションを付与し、FILE メッセージシステムにユーザーのアドレスを定義します。
GRANT CONNECT TO rem IDENTIFIED BY rem; GRANT REMOTE TO rem TYPE FILE ADDRESS 'rem'; |
パブリケーションでは、レプリケートされるデータセットを説明します。従業員テーブルのすべてのローをレプリケートする pub_employees という名前のパブリケーションを作成します。パブリケーションに対してユーザーをサブスクライブするには、サブスクリプションを作成します。
CREATE PUBLICATION pub_employees ( TABLE employees ); CREATE SUBSCRIPTION TO pub_employees FOR rem; |
Interactive SQL との接続を切断します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |