Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Remote » チュートリアル:HTTP メッセージシステムを使用し、Relay Server を経由して統合データベースをメッセージサーバとしたレプリケーションシステムの設定

 

レッスン 1:統合データベースの作成

データベースとそのトランザクションログの保存に必要なディレクトリ、およびメッセージのディレクトリ構造を作成します。また、リモートユーザおよびデータのレプリケートに必要なパブリケーションとサブスクリプションなど、統合データベースのスキーマを定義します。

前提条件

SYS_REPLICATION_ADMIN_ROLE システムロールが必要です。

内容と備考

SQL Remote が統合データベースに対して稼働する場合、FILE メッセージシステムを使用してメッセージを送受信しますが、リモートデータベースは HTTP メッセージシステムを使用します。

このチュートリアルのため、統合データベース (メッセージサーバ) が稼働しているコンピュータの名前を machine_cons とします。

 ♦ タスク
  1. 統合データベースとリモートデータベースを保持するため次のディレクトリを作成します。

    • c:\tutorial
    • c:\tutorial\cons
    • c:\tutorial\rem
  2. 統合データベースとリモートデータベースが生成したメッセージファイルを格納するために、次のディレクトリを作成します。

    • c:\tutorial\messages
    • c:\tutorial\messages\cons
    • c:\tutorial\messages\rem
  3. c:\tutorial\cons ディレクトリから次のコマンドを実行して、統合データベース (cons) を作成します。

    dbinit -dba DBA,sql cons.db
  4. 統合データベースを起動します。

    dbsrv16 -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 サービスにアクセスできるよう、ネットワークサーバを使用するはずです。このレッスンではネットワークサーバを起動して、これを cons と命名しました。ネットワークにこの名前ですでに稼働している別のデータベースサーバがある場合は、このネットワークサーバに別の名前を選択して、この代替名を使用するために、このチュートリアルの残りの部分で接続ストリングを変更する必要があります。 -xs の使用の詳細については、-xs データベースサーバオプションを参照してください。

  5. Interactive SQL を使用して、SYS_REPLICATION_ADMIN_ROLE システムロールを持つユーザとして統合データベース (cons) に接続します。

    dbisql -c "UID=DBA;PWD=sql;SERVER=cons;DBN"
    
  6. 統合データベース (cons) のグローバルデータベース ID を設定するには、次の文を実行します (GLOBAL AUTOINCREMENT デフォルトを使用する場合には、すべてのデータベースに排他的なプライマリキーが選択されるようグローバルデータベース ID が必要です)。

    SET OPTION public.global_database_id=0;
  7. このチュートリアルのデータベースのスキーマは、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
    );
  8. 統合データベース (cons) で次の文を実行し、サンプルデータを従業員テーブルに追加します。

    INSERT INTO employees (first_name, last_name) VALUES ('Kelly', 'Meloy');
    INSERT INTO employees (first_name, last_name) VALUES ('Melisa', 'Boysen');
    COMMIT;
  9. 統合データベース (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
  10. このチュートリアルでは、パブリッシャとリモートユーザにはパスワードが割り当てられます。これは、統合データベースが HTTP メッセージシステム用のメッセージサーバとして動作するためです。次の文を実行して、CONNECT と PUBLISH の権限を持つユーザ cons を作成します。

    GRANT CONNECT TO cons;
    GRANT PUBLISH TO cons;
  11. パフォーマンス上の理由から、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'; 
  12. 次の文を実行して、リモートユーザ rem をパスワードなしで作成します。次に、REMOTE 権限を付与し、FILE メッセージシステムにユーザのアドレスを定義します。

    GRANT CONNECT TO rem IDENTIFIED BY rem;
    GRANT REMOTE TO rem TYPE FILE ADDRESS 'rem';
  13. パブリケーションでは、レプリケートされるデータセットを説明します。従業員テーブルのすべてのローをレプリケートする pub_employees という名前のパブリケーションを作成します。パブリケーションに対してユーザをサブスクライブするには、サブスクリプションを作成します。

    CREATE PUBLICATION pub_employees ( TABLE employees );
    CREATE SUBSCRIPTION TO pub_employees FOR rem;
  14. Interactive SQL との接続を切断します。

結果

データベースとそのトランザクションログの保存に必要なディレクトリ、およびメッセージのディレクトリ構造が作成されます。リモートユーザおよびデータのレプリケートに必要なパブリケーションとサブスクリプションの作成など、統合データベースのスキーマが定義されます。

次の手順

レッスン 2:Relay Server の設定に進みます。