7.1.1 Mobile Linkのアーキテクチャ
Mobile Linkのアーキテクチャは図7.4のようになる。統合データベースサーバとリモートデータベースサーバとが直接に接続することはなく、Mobile Linkサーバが両者の通信を仲介して同期を制御する。
まず、この3つのサーバの役割について説明する(以後、読みやすさを優先して、誤解の恐れのない限り、データベースサーバのこともデータベースと書く)。
統合データベース
統合データベースは、リモートデータベース上の同期対象となるデータすべてを保持する。同期されないデータが統合データベースやリモートデータベースにあってもかまわない。
Mobile Linkが対応する統合データベースとして、以下のものがある(注5)。このようにiAnywhere社以外のデータベースにも対応している。
- SQL Anywhere / Ultra Light
- Sybase Adaptive Server Enterprise
- Oracle
- Microsoft SQL Server
- IBM DB2
統合データベースは、同期されるデータだけでなく、Mobile Link同期を実行するために必要なシステム情報(同期ユーザ情報や同期スクリプト、競合解決のスクリプト、同期ステータスなど)も保持する。Mobile Linkサーバはこれらを参照して、同期を制御する。
それらを作成するスクリプトが、SQL Anywhereをインストールしたディレクトリの「MobiLink\setup」ディレクトリに、DB種別ごとに用意されているので、実行しておく。SQL Anywhere 10や他社製DBを統合DBとして利用する際にこの作業が必要となる。
なお、SQL Anywhere 9ではデフォルトで設定されているのでこの作業は不要だ。
Mobile Linkサーバ
Mobile Linkサーバは、統合データベースとリモートデータベース間の通信を仲介し、同期プロセスを制御する。統合データベースとMobile Link間のやり取りは、ODBCで行われる。Mobile Linkサーバは同期開始時にMobile Link同期に関するシステム情報を統合データベースから読み出し、その情報に従って同期を処理する。
一方、リモートデータベースとMobile Linkサーバ間は、以下の2つの接続方法がある。
- TCP/IP
- HTTP/S
Mobile Linkサーバは、複数の同期クライアントを同時に処理できる。デフォルトでは5つの同期処理用スレッドが待機していて、同期クライアントからのリクエストを受信すると同期を開始する。同期終了後、スレッドは待機状態に戻る。1つのスレッドは一度に1つの同期セッションのみを担当する。
同期スレッド数以上のリクエストがMobile Linkサーバに一度に到達すると、いったんMobile Linkサーバでキューイングされ、その間リクエストは待たされる。同期スレッドが同期セッションを終えるとキュー内からリクエストが選ばれ、新たな同期セッションが開始される(図7.5)。
Webサーバをファイアウォールとして機能させたいときや、複数のMobile Linkサーバに処理を分散させるためのロードバランサとして機能させたいときにMobile Link Redirectorを利用するとよい。Mobile Link Redirectorには、Mobile Linkサーバの状態をチェックして転送を制御する機能もある。
Mobile Link Redirectorは次の4つのWebサーバをサポートする(角括弧内はMobile Link Redirector名)。
- Sun One(Netscape iPlanet Enterprise Edition)[NSAPI Redirector]
- Microsoft IIS[ISAPI Redirector]
- Apache TomcatなどJava Servlet API 2.3をサポートするもの[Servlet Redirector]
- Apache Webサーバ(1.3.x / 2.0.x)[Native Apache Redirector]
- M-Business Anywhere Webサーバ [M-Business Anywhere Redirector]
リモートデータベース
リモートデータベースは、iAnywhere社のデータベースだけに対応し、以下の2つがある。
- SQL Anywhere
- Ultra Light
リモートデータベースとMobile Linkサーバとが通信すると今まで書いてきたが、より詳細に記述すると、同期クライアントが存在し、同期クライアントがMobile Linkサーバとの通信を担っている。詳しくは次のセクションで説明する。