• 検索結果がありません。

Microsoft PowerPoint - Lite10g_SyncArchitecture.ppt

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - Lite10g_SyncArchitecture.ppt"

Copied!
18
0
0

読み込み中.... (全文を見る)

全文

(1)

<写真欄>

日本オラクル株式会社 

2006年07月07日

Oracle Database Lite 10g 同期アーキテクチャ解説

はじめに

y

当資料ではOracle Database Lite 10gの同期ア

ーキテクチャを解説し、アプリケーション開発者が

当製品の同期機能を引き出せるよう支援します。

同期アーキテクチャ全体像

同期オブジェクトとその役割

同期処理プロセス

(2)

3

Copyright© 2006, Oracle. All rights reserved.

Agenda

y

同期アーキテクチャ全体像

y

同期オブジェクトとその役割

y

同期プロセス解説

同期クライアント y Mobileサーバーに同期 要求を送り、結果を受け 取る

Oracle Database Lite

アーキテクチャ

モバイル・ アプリケーション 同期 クライアント Mobile サーバー Mobileサーバー・ リポジトリ

Oracle Lite データベース Oracle データベース

クライアント 中間層 データベース・サーバー Oracle Lite RDBMS MGP y リポジトリと通信 y 同期処理代行 Mobileサーバー・リポジトリ y 管理スキーマの格納 – キュー y マスター表 Mobileサーバー y クライアントとの同期通信 y 管理サービスの提供 Message Generator & Processor (MGP) Oracle Lite RDBMS y アプリケーション実行環境

(3)

5

Copyright© 2006, Oracle. All rights reserved.

クライアント

パブリケーション・アイテム (SQL)で取得した実データ

Oracle Database Liteの最も単純な同期構造

Oracle Lite データベース Oracle データベース

データベース・サーバー スナップショットの 元表 SQL定義と差分情報 のみ管理

スナップショット

パブリケーション・

マスター表

アイテム

スナップショット

定義SQL

差分情報

aaa 10 bbb aaa 20 10 SELECT * FROM TAB1

WHERE COL1=10 TAB1 TAB1 PubItem_TAB1 キュー

スケーラビリティを実現する2段階の「非同期(asynchronous)」処理

同期 クライアント MGP イン・キュー エラー・キュー アウト・キュー スナップショット マスター表 3.適用 4.構成 同期 クライアント 同期 クライアント 同期 サービス 更新 1.アップロード 2.ダウンロード クライアント 中間層 データベース・サーバー Sync処理=通信処理 1. 変更行がクライアントからサーバ ーのイン・キューへアップロード 2. 変更行がサーバーのアウト・キュ ーからクライアントにダウンロード MGP処理=同期代行 3. イン・キューの変更情報をマスタ ー表に適用する 4. マスター表の変更をアウト・キュ ーに構成する 独立して動作

2フェーズの非同期処理

(4)

7

Copyright© 2006, Oracle. All rights reserved.

同期方式と同時実行性の比較

Oracle Lite キュー Oracle クライアント・ データベース 同期 サーバ サーバー・ データベース 1. クライアント1同期。マスターデータ変更 2. クライアント2の同期は1の同期が完了するまで待ち 1. クライアント1同期。変更情報はキューに格納される 2. クライアント2の同期は1が同期中でも実行される 全クライアントが同時に同期した場合の同期完了時間 = 各クライアントの同期時間の合計 全クライアントが同時に同期した場合の同期完了時間 =各クライアントの同期時間で最大のもの c1 c2 c3 c4 c1 c2 c3 c4 Time Time

Synchronous(即時同期)

Asynchronous(非同期)

c1 c2 c1 c2 待ち 待ち 待ち MGP データベース・オブジェクト (スナップショットなど) データベース・オブジェクト(表など) イン・キュー アウト・キュー エラー・キュー 適用処理 構成処理 変更情報 更新トリガー 変更差分 更新トリガー データ更新 同期クライアント Mobileサーバー Oracleデータベース ダウンロード アップロード Oracle Liteデータベース

同期アーキテクチャ概要図

データ更新

(5)

9

Copyright© 2006, Oracle. All rights reserved. <TAB> CFM$<PI> CMP$<PI> CEQ$<TAB> 適用処理 構成処理 CLG$<TAB> CVR$<TAB> 更新トリガー データ更新 Oracleデータベース MOBILEADMIN スキーマ DBUSER スキーマ CFM$<PI> イン・キュー CMP$<PI> アウト・キュー CEQ$<TAB> CLG$<TAB> CVR$<TAB> エラー・キュー ログ生成表 行バージョン表 差分同期をサポートするため のデータベース・オブジェクトが パブリケーション・アイテム作成 時に作成される 更新トリガー

同期コンポーネントの主要テーブル一覧

<PI> パブリケーション・アイテム名 <TAB> マスター表名

Agenda

y

同期アーキテクチャ全体像

y

同期オブジェクトとその役割

y

同期プロセス解説

(6)

11

Copyright© 2006, Oracle. All rights reserved. Oracle Liteデータベース

スナップショット

リポジトリ(Oracleデータベース)

マスター表

パブリケーション

サブスクリプション

クライアント(ユーザー)

ファイル

同期

アプリケーション

サブセッティング・パラメータ

パブリケーション

・アイテム

ファイル

アプリケーション

同期オブジェクト概念図

パブリケーション・アイテム

パブリケーション・

アイテム

スナップショット

定義SQL

差分情報

y

パブリケーション・アイテム=サーバー側で管理するスナップショット・クラス – 実データを持たず、定義情報と差分情報のみを格納 – リポジトリ上に作成

y

定義情報(パブリケーション・アイテム・クエリー) – クライアントに送信するスナップショットを定義したクエリーを記述(詳細は後述)

y

キューによる差分情報の管理 – イン・キュー(アップロードデータの管理) – アウト・キュー(ダウンロードデータの管理) – エラー・キュー(同期エラー、データ競合の管理)

パブリケーション・アイテム・クエリー

例. SELECT * FROM EMP

イン・キュー

アウト・キュー

エラー・キュー

(7)

13

Copyright© 2006, Oracle. All rights reserved.

パブリケーション・アイテム

y

パブリケーション・アイテム・クエリーの定義方法 – SELECT文を記述 – バインド変数(データ・サブセッティング・パラメータ)設定可能 – ベースオブジェクト:表、ビュー、シノニム、マテリアライズド・ビュー(R10.2.0.2~) – 水平分割(条件句による行指定)、垂直分割(列指定) – 表結合クエリーにも対応 マスター表

EMP(EMPNO, ENAME, DEPTNO)

Case2. バインド変数+行指定 SELECT * FROM EMP WHERE EMPNO = :eno

Case3. 列指定

SELECT EMPNO,ENAME

FROM EMP Case1. マスタと同一 SELECT*FROM EMP

Case4. 表結合

SELECT E.EMPNO,E.ENAME, D.LOC

FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO

マスター表

DEPT(DEPTNO, DNAME, LOC)

パブリケーション・アイテムの例

パブリケーション・アイテム

同期 SYNC_1 SYNC_2 SYNC_3 アウト・キューからの削除 アウト・キューへの挿入 ログ表への挿入 LDEL_1 LDEL_2 LDEL_3 パブリケーション・アイテム・クエリー •パブリケーション・アイテム定義で使用したSELECT文そのもの •完全リフレッシュではそのまま使用される パブリケーション・アイテム・クエリー・テンプレート •差分同期を実行するためにパブリケーション・アイテム・クエリーに付加(ラッパー)される •同期(アップロード、高速リフレッシュ)およびMGP処理で使用される •カテゴリ(4項目)別に複数種類のテンプレートが存在 •通常は各カテゴリ毎にデフォルトのテンプレートを使用 •Consperfツールでデフォルト以外のテンプレートを選択可能 LG_1 LG_2 LG_3 LDEL_4 LINS_1 LINS_2 LINS_3 LGN_1

(8)

15

Copyright© 2006, Oracle. All rights reserved.

パブリケーション・アイテム

y

定義オプション

更新可能 / 読取専用

高速リフレッシュ / 完全リフレッシュ

y

パブリケーション・アイテムの命名規則

パッケージ・ウィザードで定義

⇒WTGPI_xxxxx(自動作成)

APIおよびMobile Database Workbench(MDW)

⇒任意

パブリケーション・アイテム

パブリケーション

y 同期オブジェクト・グループ – 「アプリケーション」とほぼ同義 – クライアント・アプリケーションが使用するデータベース・オ ブジェクトをグループ化 – 各データベース・オブジェクトはパブリケーションに登録され てはじめてクライアントに配信される – 同期は原則パブリケーション単位 y 含めることができるオブジェクト – パブリケーション・アイテム y 重み付け(親子関係表の同期順の設定) y 競合解消フラグ(サーバー優先/クライアント優先/カス タム) – シーケンス – SQLスクリプト(DDL)Javaリソース(ストアド・プロシージャおよびトリガー)

y

パブリケーションの命名規則 – パッケージ・ウィザードで定義 ⇒xxxxx(内部的に自動作成。アプリケーション名とは異 なる)

APIおよびMobile Database Workbench(MDW)

⇒任意 シーケンス SQLスクリプト(DDL) Javaリソース PubItem1 パ ブ リ ケ ー シ ョ ン PubItem2

(9)

17

Copyright© 2006, Oracle. All rights reserved.

サブスクリプション

y

アクセスリスト

クライアントとパブリケーション(アプリケーション)の紐付け

この情報を元にパブリケーションに登録されたオブジェクトをクライ

アントに配信する

y

データ・サブセッティング・パラメータの値とクライアントとの紐

付けにも使用される

y

APIもしくはMobile Managerで定義

クライアント1

クライアント2

クライアント3

パブリケーション1

パブリケーション2

サブスクリプション・パラメータ

y

パブリケーション・アイテム・クエ

リーで埋め込まれるバインド変

y

“:変数名”でパラメータを定義

y

各クライアント固有のデータを取

得する際に利用されることが多

y

パラメータの値はサブスクリプシ

ョン確定後、各クライアントごと

に値を設定する

SELECT * FROM EMP

WHERE EMPNO =

:eno

サブセッティング・パラメータ

クライアント1

クライアント2

クライアント3

:eno=10

:eno=20

:eno=30

データ・サブセッティング・パラメータ

(10)

19

Copyright© 2006, Oracle. All rights reserved.

クライアント

y

Mobile Managerおよびリポジトリでは「ユーザ

ー」と同義

y

Mobileサーバーにログインして同期する

クライアント1

クライアント2

クライアントN

Mobile

サーバー

Agenda

y

同期アーキテクチャ全体像

y

同期オブジェクトとその役割

y

同期プロセス解説

(11)

21

Copyright© 2006, Oracle. All rights reserved.

Mobileサーバー データベース・オブジェクト (スナップショットなど) イン・キュー アウト・キュー エラー・キュー 変更差分 更新トリガー データ更新

同期開始。同期クライアントが変更差分をファ イルに抽出

同期クライアントは差分ファイルをMobileサー バーに送信(アップロード)。Mobileサーバーは イン・キューに格納 ① ② ③ ④

Mobileサーバーはアウト・キューから前回同期 の結果を抽出し、ファイルで同期クライアントに 送信(ダウンロード)

同期クライアントは受け取った結果ファイルをス ナップショットに適用し、同期完了 Oracle Lite データベース Oracleデータベース 同期クライアント ダウンロード アップロード

同期(アップロード/ダウンロード)

032 OL__ROW_STATUS 1 VER 10080 SAL 山田さん 10 ENAME EMPNO 80 SAL 10 EMPNO 山田さん ENAME 1 VER USER1 CLID U DML

Oracle Liteでスナップショットの値を更新

①と同時に内部列に更新フラグが立つ(挿入16、更新32、削除80)

同期開始。Mobileクライアントは②を元に差分ファイルを生成。Mobileサーバー に送信

Mobileサーバーは差分ファイルの情報をイン・キューへ格納 差分ファイル (cl2sv.bin) スナップショット emp ②行ステータス変更 ①Update 例:Oracle Liteで以下のUpdate文を実行してアップロード処理を実行

UPDATE emp SET SAL=80 WHERE EMPNO=10;

③差分抽出

④イン・キュー(CFM$PI_emp)へ送信 送信の対象は変更済行。トランザクションそのものではない

(12)

23

Copyright© 2006, Oracle. All rights reserved.

y

更新可能かつ完全リフレッシュで定義されているスナップショット(パブリケーション・ア イテム)が1つでもパブリケーションに含まれる場合、パブリケーション内の全てのスナ ップショットの変更情報はイン・キューに格納せず、直接マスター表に適用される。

y

ダウンロードは通常の同期処理と同じくアウト・キューから取得する

アップロード時の適用(同期オプション)

イン・キュー エラー・キュー アウト・キュー エラー・キュー アウト・キュー スナップショット マスター表 スナップショット マスター表 通常のアップロード&ダウンロード処理 アップロード時に即適用 ダウンロードはアウト・キューから 高速&更新可能 パブリケーション・アイテム 完全&更新可能 パブリケーション・アイテム (ダミー定義可) パブリケーション

PI_1 PI_2 PI_3

以下の構成の場合、全てのパブリケーション・ アイテムでアップロード時に変更情報をマスタ ー表に即時適用する y クライアントからのアップロードをマスター 表からリアルタイムで検索できる y アップロード時に適用処理まで行うため、 同期時間のオーバーヘッドは増える y ダウンロードではアウト・キューを使用する ため、MGPの構成処理は必要。 80 SAL 10 EMPNO 山田さん ENAME 1 VER USER1 CLID I DML 送信の対象は変更済行。 トランザクションそのもの ではない アウト・キューには各クライアント毎に送信済のマスター表の主キーが格納される。 マスター表で発生した差分更新は、MGPの構成処理でダウンロード待ちのフラグが 立ち、この情報を元に各クライアントはマスターの変更情報のみをダウンロードする Mobileサーバーは①+②でパブリケーション・アイテム・クエリー・テンプレートを生 成し、クライアントに配信する差分データを抽出する ④ Oracle Liteのスナップショットに③の内容を適用

ダウンロード処理(高速リフレッシュ)

DML マスター表の現在行のDMLステータス (I ⇒ 挿入と更新、D ⇒ 削除) DTYPE (ダウンロード・ステータス) Null ⇒ クライアントからダウンロード待ち U ⇒ クライアントで行が変更された D ⇒ クライアントで行が削除された ③ 差分ファイル(sv2cl.bin) アウト・キュー(CMP$PI_emp)

パブリケーション・アイテム・クエリー(SELECT * FROM emp) I DML 10 EMPNO 1 VER USER1 CLID DTYPE ① ②

(13)

25

Copyright© 2006, Oracle. All rights reserved. I 1 100 佐藤さん 30 USER1 I 1 200 田中さん 20 USER1 I 1 80 山田さん 10 USER1 SAL

EMPNO ENAME VER

CLID DML

SELECT * FROM emp

アウト・キューを使用しません。Mobileサーバーはスナップショット定義SQLで直接 リポジトリに問い合わせてデータを取得する ② Oracle Liteのスナップショットに①の内容を適用

ダウンロード処理(初回同期、完全リフレッシュ)

スナップショット定義のSQLでリポジトリに問合せを行い、取得データをファイルにし てOracle Liteに送信 差分ファイル(sv2cl.bin) データベース・オブジェクト(表など) イン・キュー アウト・キュー エラー・キュー 適用処理 構成処理 変更情報 更新トリガー データ更新 ① MGPはイン・キューから1件取り出し 表に適用する。このときデータ競合 が発生する場合がある ② データ競合が発生した場合、MGPは 自動解消を試みる。成功すればロジ ックに従って値を決定。解消できない 場合はエラー・キューに格納する ① ② ② ③ ④ ④ 全ての適用が終わるとMGPは変更 情報に基づいて各クライアントごとに アウト・キューを構成し、次回クライア ントからの同期要求に備える ③ 適用の結果、あるいはマスタ表に直 接更新が行われるとトリガーにより 変更情報が内部で記録される Oracleデータベース

MGP(適用/構成)

MGP

(14)

27

Copyright© 2006, Oracle. All rights reserved. 10080 山田さん 10 SAL ENAME EMPNOI 12 DML VER 80 SAL 10 EMPNO 山田さん ENAME 1 VER USER1 CLID U DML

マスタ表とイン・キューの主キーとVERを比較。一致したら②へ(不一致は競合)

マスタ表のDMLがnullであれば③へ(not nullなら競合)

イン・キューの内容(操作)をマスターに上書き

行バージョン表のVERを1増分、DMLをIに変更 ① ① ② ③ ④ 例:Oracle Liteで以下のUpdate文を実行してイン・キューにアップロードした状態

UPDATE emp SET SAL=80 WHERE EMPNO=10;

適用処理(競合なし)

イン・キュー(CFM$PI_emp) 行バージョン表(CVR$emp) マスタ表(emp)適用前にマスタでも更新発生(VER+1、DMLフラグあり) 250 田中さん 20 SAL ENAME EMPNO I 2 DML VER 200 SAL 20 EMPNO 田中さん ENAME 1 VER USER1 CLID U DML

マスタ表とイン・キューの主キーとVERが不一致(マスタのVER値が新しい) もしくはマスタ表のDML≠nullの場合、競合発生

競合解消ルーチンへ イン・キュー(CFM$PI_emp) 行バージョン表(CVR$emp) ① ① ② 例:Oracle Liteで以下のUpdate文を実行してイン・キューにアップロード

UPDATE emp SET SAL=200 WHERE EMPNO=20;

かつ適用前にOracleでも以下のUpdate文が実行されていた場合・・・

UPDATE emp SET SAL=250 WHERE EMPNO=20;

競合の検出

(15)

29

Copyright© 2006, Oracle. All rights reserved. 競合 更新競合:サーバーで更新した行と同じ主キーの行をクライアントで更新・削除 挿入競合:クライアント、サーバー双方で同じ主キーの行を挿入 競合エラー 削除競合:サーバーで削除した行と同じ行をクライアントで更新   ※Oracleのレプリケーションでの競合エラーと動作を合わせるため その他、参照制約違反など

競合の解消

削除競合を含む 競合エラーもしく は未解決の競合 更新競合または 挿入競合 エラー・キュー へ格納 手動で解決後 トランザクション 再実行 エラー・キューの パージ(廃棄) サーバー優先 クライアント優先 カスタム解消 (要ロジック実装) 競 合 発 生 ? 競合解消試行 競 合 解 決 10 EMPNO I 2 DML VER ログ表(CLG$emp) 行バージョン表(CVR$emp) I DML 10 EMPNO 2 VER USER1 CLID DTYPE 10 EMPNO 2 VER I DML アウト・キュー(CMP$PI_emp)

構成処理(ダウンロード・データの準備)

① 変更対象の表情報の収集 C$ALL_CLIENTS C$ALL_CLIENT_ITEMS C$ALL_LOGS C$ALL_SUBSCRIPTION_PARAMS ② ①を元に各表別に変更行 の情報をログ表にコピー   CVR$表のDML=null C$ALL_SID_LOGGED_TABLES C$ALL_LOGGED_TABLES ③ クライアントごとに変更行 をアウト・キューに構成 ログ表(CLG$emp) ⑤ログ表の初期化 ④ DTYPEをnullに(ダウンロード準備完了)

(16)

31

Copyright© 2006, Oracle. All rights reserved.

y

Oracle Liteの同期処理は複数のフェーズで構成され、それぞれ独立し

て動作する

同期(Sync)、MGP、マスター表更新 – クライアントの同期レスポンスタイムを向上させるため

y

同一クライアント内の隣接する各フェーズ(同期⇔MGP、MGP⇔マスター

表更新)が同時に実行されないように制御される

– 各フェーズの処理中は特定の内部表および行にロックをかける – 同期処理とマスター表の更新はお互いブロックしない

y

後から起動される処理は以下のいずれかの動作

– 同期: 処理を中止し、エラーをクライアントに返す – MGP: そのサイクルでの処理をスキップ。次サイクル時に試行 – マスター表更新:実行中の処理の完了を待つ

同期処理内部の同時実行性の制御

同期

MGP

マスタ更新

ブロック ブロック ブロックなし クライアント1

OK

NG:Error

Server Busy

NG:Error

Server Busy

同期

NG:Skip

2重起動×

MGP

NG:Skip

Next Try

NG:Skip

Next Try

マスタ更新

OK

行ロック

更新確定待ち

MGP処理

待ち

同期中

MGP中

マスタ更新中

同期処理各フェーズ間の同時実行性

同じクライアントで処理がもし重なったら?

Ex. MGPで適用/構成中のクライアントが同期を試みた

(17)

33

Copyright© 2006, Oracle. All rights reserved.

• 適用⇒構成⇒待機⇒適用・・・を繰り返す

• 待機の時間に同期を受け付ける

• MGP起動時にすでに同期中のセッションがある場合、次回起動時に適用を

試みる

• 待機時間は起動パラメータで設定(固定)

適用時間に影響を与える要素

クライアントの更新レコード数 • クライアント数 • パブリケーション・アイテム定義SQL • 競合の有無

構成時間に影響を与える要素

更新対象のパブリケーション・アイテム数 • クライアント数 • スナップショットが読取専用 or  更新可能 • サブセッティング・パラメータ数 • パブリケーション・アイテム定義SQLの  実行時間

適用

構成

待機

適用

構成

待機

MGPのサイクル起動

構成処理 適用処理

適用

構成

待機

適用

構成

待機

MGP処理の内訳

クライアント1 イン・キュー1 イン・キュー2 行1 行2 クライアント2 クライアント1 トランザクション・ログ ログ表1 ログ表2 アウト・キュー 1 アウト・キュー 2 適用 DMLもしくはSELECT発行 クライアント2 アウト・キュー 1 アウト・キュー 2 適用 イン・キュー1 イン・キュー2 行1 行2 適用 適用 適用処理の順序 • クライアント1 •イン・キュー1 •行1 • 行2 •イン・キュー2 • クライアント2

(18)

35

Copyright© 2006, Oracle. All rights reserved.

まとめ

y

同期アーキテクチャ全体像

3階層構成(Oracle Lite-Mobileサーバー-Oracle)

2フェーズ(SyncとMGP)によるasyncな同期処理

スナップショット定義情報、変更情報をリポジトリで集中管理

y

同期で使用(作成)されるオブジェクトとその役割

パブリケーション(アイテム)とサブスクリプション

y

同期処理プロセス

Sync:アップロード&ダウンロード

MGP:適用&構成

競合の検知と解消

日本オラクル株式会社 無断転載を禁ず この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。 日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を 負いかねます。 Oracle、PeopleSoft、JD Edwards、及びSiebelは、米国オラクル・コーポレーション及びその 子会社、関連会社の登録商標です。その他の名称はそれぞれの会社の商標の可能性があります。

参照

関連したドキュメント

 □ 同意する       □ 同意しない (該当箇所に☑ をしてください).  □ 同意する       □ 同意しない

・大都市に近接する立地特性から、高い県外就業者の割合。(県内2 県内2 県内2/ 県内2 / / /3、県外 3、県外 3、県外 3、県外1/3 1/3

口腔の持つ,種々の働き ( 機能)が障害された場 合,これらの働きがより健全に機能するよう手当

対象期間を越えて行われる同一事業についても申請することができます。た

ERROR  -00002 認証失敗または 圏外   クラウドへの接続設定及びア ンテ ナ 接続を確認して ください。. ERROR  -00044 回線未登録または

光を完全に吸収する理論上の黒が 明度0,光を完全に反射する理論上の 白を 10

The information herein is provided “as−is” and onsemi makes no warranty, representation or guarantee regarding the accuracy of the information, product features,

の会計処理に関する当面の取扱い 第1四半期連結会計期間より,「連結 財務諸表作成における在外子会社の会計