Microsoft PowerPoint - Lite10g_SyncArchitecture.ppt

Similar documents
プレポスト【問題】

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

Oracle Database Lite 10gR2 テクニカル・ホワイト・ペーパー

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらな

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

Microsoft Word - doc16594.doc

今さら聞けない!? Oracle入門 ~後編~

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

Web GIS Template Uploader 利用ガイド

DumpCollection IT Exam Training online / Bootcamp PDF and Testing Engine, study and practice

ORACLE TUNING PACK 11G

Oracle 入門 ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助とし

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

今さら聞けない!? Oracle入門 ~前編~

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

Microsoft Word - J-jdev_dba_db_developers.doc

製品組み込み手順書 Oracle Tuxedo (Linux版)  

Microsoft PowerPoint - 3-Forms-Others.ppt

富士通Interstage Application Server V10でのOracle Business Intelligence の動作検証

Oracle ADF 11g入門

Oracle Database 11g Oracle Real Application Testing

製品組み込み手順書 Oracle Tuxedo (Windows版)

Oracle SQL Developer Data Modeler

Oracleセキュア・エンタープライズ・サーチ

PowerPoint Presentation

Enterprise Manager 10gによるデータベース・パフォーマンスチューニング

スライド 1

Interstage Interaction Manager V9 Oracle Database 11g 適用手順書

Microsoft Word - MOPatch-1.doc

PowerPoint Presentation

マニュアル訂正連絡票

第 7 章 ユーザー データ用表領域の管理 この章では 表や索引を格納するユーザー データ用表領域の作成や 作成後のメンテナンスに ついて解説します 1. ユーザー データ用表領域の管理概要 2. ユーザー データ用表領域作成時の考慮事項 3. ユーザー データ用表領域の作成 4. ユーザー データ

Microsoft PowerPoint - KeySQL50_10g_vlo2.ppt

问题集 ITEXAMPASS 1 年で無料進級することに提供する

SESにおけるCustom Searchインタフェースの実装 - search.oracle.comでのケース・スタディ

1 はじめに 概要 特徴 動作環境 本マニュアルの見かた 用語集 プロファイルについて 制約事項 ライセンス認証 ( プロファイルのインストール ) を行う..

Oracle Liteデータベースの理解

はじめに コース概要と目的 Oracle を使用した開発 管理を行う上でのファースト ステップとして リレーショナル データベース管理ソフトウェアである Oracle の役割 基本機能 基本アーキテクチャを幅広く理解することを目的としています 受講対象者 これから Oracle を使用する方 データ

Oracle Cloud Adapter for Oracle RightNow Cloud Service

スライド 1

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

Oracle Enterprise Linux 5における認証

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

PowerPoint プレゼンテーション

ER/Studio Data Architect 2016 の新機能

PA4

Oracle Database 12c

KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ <HTML> <HEAD> <TITLE>show_book</TITLE> </HEAD> <BODY> <DI

プレポスト【問題】

手順書

Oracle Warehouse Builder 10 g Release 2 ビジネス・ルール主導によるデータ統合

第 3 章 メディア障害とバックアップ リカバリ この章では メディア障害の発生に備えたバックアップ方法と 障害時の基本的なリカバリ方法につい て説明します 1. メディア リカバリ概要 2. ファイルの多重化 3. アーカイブ モードの設定 4. バックアップ概要 5. 一貫性バックアップ ( オ

Sharing the Development Database

ArcGIS Runtime SDK for .NET アプリケーション配布ガイド

Oracle Data Pumpのパラレル機能

KDDI Smart Mobile Safety Manager Mac OS キッティングマニュアル 最終更新日 2019 年 4 月 25 日 Document ver1.1 (Web サイト ver.9.6.0)

はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹

KTest

ご注意 1) 本書の内容 およびプログラムの一部 または全部を当社に無断で転載 複製することは禁止されております 2) 本書 およびプログラムに関して将来予告なしに変更することがあります 3) プログラムの機能向上のため 本書の内容と実際の画面 操作が異なってしまう可能性があります この場合には 実

2D/3D CAD データ管理導入手法実践セミナー Autodesk Vault 最新バージョン情報 Presenter Name 2013 年 4 月 2013 Autodesk

Microsoft Word - Android_SQLite講座_画面800×1280

Calpont InfiniDBマルチUM同期ガイド

(Microsoft PowerPoint - WQ21JDEadapter\215\\\220\254\216\350\217\207\217\221_ ppt)

WEBシステムのセキュリティ技術

APEX Spreadsheet ATP HOL JA - Read-Only

目次 1. Azure Storage をインストールする Azure Storage のインストール Azure Storage のアンインストール Azure Storage を使う ストレージアカウントの登録... 7

アカウント管理者 操作ドキュメント

Oracle Data Pumpのパラレル機能

データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

DrSumEA_ServerC_本文.indd

V-CUBE One

Microsoft PowerPoint - oracle8-repli.ppt[fiLJݔæ‡è’êŠp]

ArcGIS Server 10 機能比較表

Agenda

スケーラビリティおよび高可用性を目的としたOracle Content Database中間層の構成についてのベスト・プラクティス

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

標準化 補足資料

SQL Server 2005 自習書管理編 No.2 2 この文章に含まれる情報は 公表の日付の時点での Microsoft Corporation の考え方を表しています 市場の変化に応える必要があるた め Microsoft は記載されている内容を約束しているわけではありません この文書の内容

Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

はじめに 本ドキュメントでは Salesforce 標準機能である 変更セット を使用して Visualforce ページ Apex クラスを Sandbox から本番環境に移行する手順を説明します 但し前提条件として Sandbox 本番環境共に SkyVisualEditor がインストールされ

(Microsoft Word - Compiere3.0Windows\203C\203\223\203X\203g\201[\203\213\203K\203C\203h.doc)

Oracle Enterprise Manager 10g System Monitoring Plug-In for IBM WebSphere Application Server

HPE ProLiant Thin Micro TM200 サーバー Microsoft Windows Server インストール手順

顧客名

Microsoft PowerPoint - Symposia2012_EnsembleUpdates_Horita.pptx

Microsoft Word JA_revH.doc

データベース 【1:データベースシステムとは】

(Microsoft PowerPoint - HP\227pWASABI\217\320\211\356\216\221\227\277.ppt)

ORACLE Data Integrator

PowerPoint Presentation

[Unifinity]運用マニュアル

HANDyTRUSt「携帯電話操作編《(DOCOMO 900シーズ)

WES7/WE8SシンクライアントVMwareHorizonClientアップデート手順書

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

ソフトウェアエンジニアリング - 機能 #54

WebSAM System Navigator JNS isadmin SNMP Trap 連携設定手順書 NEC 2012 年 12 月

CLUSTERPRO MC ProcessSaver 2.1 for Windows 構築ガイド 2016(Mar) NEC Corporation はじめに 責任範囲 適用範囲 概要 事前準備 クラスタ設定

Transcription:

< 写真欄 > Oracle Database Lite 0g 同期アーキテクチャ解説 日本オラクル株式会社 006 年 07 月 07 日 はじめに 当資料ではOracle Database Lite 0gの同期アーキテクチャを解説し アプリケーション開発者が当製品の同期機能を引き出せるよう支援します 同期アーキテクチャ全体像 同期オブジェクトとその役割 同期処理プロセス

Agenda 同期アーキテクチャ全体像 同期オブジェクトとその役割 同期プロセス解説 3 Oracle Database Lite のアーキテクチャ クライアント中間層データベース サーバー モバイル アプリケーション 同期クライアント Mobile サーバー リポジトリ Oracle Lite RDBMS Oracle Lite データベース Mobile サーバー Message Generator & Processor (MGP) Oracle データベース 同期クライアント Mobile サーバーに同期要求を送り 結果を受け取る Oracle Lite RDBMS アプリケーション実行環境 Mobile サーバー クライアントとの同期通信 管理サービスの提供 MGP リポジトリと通信 同期処理代行 Mobile サーバー リポジトリ 管理スキーマの格納 キュー マスター表 4

Oracle Database Lite の最も単純な同期構造 クライアント スナップショット Oracle Lite データベース パブリケーション アイテム スナップショット定義 SQL 差分情報 データベース サーバー Oracle データベース マスター表 TAB 0 aaa PubItem_TAB SELECT * FROM TAB WHERE COL=0 キュー TAB 0 aaa 0 bbb パブリケーション アイテム (SQL) で取得した実データ SQL 定義と差分情報のみ管理 スナップショットの元表 5 フェーズの非同期処理 スケーラビリティを実現する 段階の 非同期 (asynchronous) 処理 更新 同期クライアント. アップロード イン キュー 3. 適用 エラー キュー 同期クライアント 同期サービス MGP スナップショット 同期クライアント. ダウンロード アウト キュー 4. 構成 マスター表 クライアント 中間層 Sync 処理 = 通信処理. 変更行がクライアントからサーバーのイン キューへアップロード. 変更行がサーバーのアウト キューからクライアントにダウンロード データベース サーバー 独立して動作 MGP 処理 = 同期代行 3. イン キューの変更情報をマスター表に適用する 4. マスター表の変更をアウト キューに構成する 6 3

同期方式と同時実行性の比較 Synchronous( 即時同期 ) Asynchronous( 非同期 ). クライアント 同期 マスターデータ変更. クライアント 同期 変更情報はキューに格納される c c クライアント データベース サーバー データベース. クライアント の同期は の同期が完了するまで待ち 全クライアントが同時に同期した場合の同期完了時間 = 各クライアントの同期時間の合計 c c Oracle Lite 同期サーバ キュー Oracle. クライアント の同期は が同期中でも実行される 全クライアントが同時に同期した場合の同期完了時間 = 各クライアントの同期時間で最大のもの c 待ち c 待ち待ち c3 c4 Time c c c3 c4 Time 7 同期アーキテクチャ概要図 同期クライアント アップロード ダウンロード Mobile サーバー MGP Oracle データベース Oracle Lite データベース アウト キュー エラー キュー イン キュー 変更差分 更新トリガー データベース オブジェクト ( スナップショットなど ) 構成処理 変更情報 更新トリガー 適用処理 データベース オブジェクト ( 表など ) データ更新 データ更新 8 4

同期コンポーネントの主要テーブル一覧 差分同期をサポートするためのデータベース オブジェクトがパブリケーション アイテム作成時に作成される <PI> <TAB> パブリケーション アイテム名マスター表名 Oracle データベース MOBILEADMIN スキーマ CFM$<PI> イン キュー CMP$<PI> アウト キュー CMP$<PI> 構成処理 CEQ$<TAB> CFM$<PI> 適用処理 DBUSER スキーマ CEQ$<TAB> エラー キュー CLG$<TAB> ログ生成表 CVR$<TAB> 行バージョン表更新トリガー CLG$<TAB> CVR$<TAB> <TAB> データ更新 更新トリガー 9 Agenda 同期アーキテクチャ全体像 同期オブジェクトとその役割 同期プロセス解説 0 5

同期オブジェクト概念図 クライアント ( ユーザー ) スナップショット Oracle Lite データベース アプリケーションファイル 同期 サブスクリプション サブセッティング パラメータ パブリケーション パブリケーション アイテム ファイル マスター表 アプリケーション リポジトリ (Oracle データベース ) パブリケーション アイテム パブリケーション アイテム スナップショット定義 SQL 差分情報 パブリケーション アイテム クエリー例. SELECT * FROM EMP イン キュー アウト キュー エラー キュー パブリケーション アイテム = サーバー側で管理するスナップショット クラス 実データを持たず 定義情報と差分情報のみを格納 リポジトリ上に作成 定義情報 ( パブリケーション アイテム クエリー ) クライアントに送信するスナップショットを定義したクエリーを記述 ( 詳細は後述 ) キューによる差分情報の管理 イン キュー ( アップロードデータの管理 ) アウト キュー ( ダウンロードデータの管理 ) エラー キュー ( 同期エラー データ競合の管理 ) 6

パブリケーション アイテム パブリケーション アイテム クエリーの定義方法 SELECT 文を記述 バインド変数 ( データ サブセッティング パラメータ ) 設定可能 ベースオブジェクト : 表 ビュー シノニム マテリアライズド ビュー (R0..0.~) 水平分割 ( 条件句による行指定 ) 垂直分割( 列指定 ) 表結合クエリーにも対応 マスター表 EMP(EMPNO, ENAME, DEPTNO) パブリケーション アイテムの例 Case. マスタと同一 SELECT * FROM EMP Case. バインド変数 + 行指定 SELECT * FROM EMP WHERE EMPNO = :eno マスター表 DEPT(DEPTNO, DNAME, LOC) Case3. 列指定 SELECT EMPNO,ENAME FROM EMP Case4. 表結合 SELECT E.EMPNO,E.ENAME, D.LOC FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO 3 パブリケーション アイテム パブリケーション アイテム クエリー パブリケーション アイテム定義で使用した SELECT 文そのもの 完全リフレッシュではそのまま使用される パブリケーション アイテム クエリー テンプレート 差分同期を実行するためにパブリケーション アイテム クエリーに付加 ( ラッパー ) される 同期 ( アップロード 高速リフレッシュ ) および MGP 処理で使用される カテゴリ (4 項目 ) 別に複数種類のテンプレートが存在 通常は各カテゴリ毎にデフォルトのテンプレートを使用 Consperf ツールでデフォルト以外のテンプレートを選択可能 同期 アウト キューからの削除アウト キューへの挿入ログ表への挿入 SYNC_ LDEL_ LINS_ LG_ SYNC_ LDEL_ LINS_ LG_ SYNC_3 LDEL_3 LINS_3 LG_3 LDEL_4 LGN_ 4 7

パブリケーションパブリケーション アイテム 定義オプション 更新可能 / 読取専用 高速リフレッシュ / 完全リフレッシュ パブリケーション アイテムの命名規則 パッケージ ウィザードで定義 WTGPI_xxxxx( 自動作成 ) API および Mobile Database Workbench(MDW) 任意 5 パブリケーション パブリケーション アイテム PubItem PubItem シーケンス SQLスクリプト (DDL) Javaリソース 同期オブジェクト グループ アプリケーション とほぼ同義 クライアント アプリケーションが使用するデータベース オブジェクトをグループ化 各データベース オブジェクトはパブリケーションに登録されてはじめてクライアントに配信される 同期は原則パブリケーション単位 含めることができるオブジェクト パブリケーション アイテム 重み付け ( 親子関係表の同期順の設定 ) 競合解消フラグ ( サーバー優先 / クライアント優先 / カスタム ) シーケンス SQL スクリプト (DDL) Java リソース ( ストアド プロシージャおよびトリガー ) パブリケーションの命名規則 パッケージ ウィザードで定義 xxxxx( 内部的に自動作成 アプリケーション名とは異なる ) API および Mobile Database Workbench(MDW) 任意 6 8

サブスクリプション アクセスリスト クライアントとパブリケーション ( アプリケーション ) の紐付け この情報を元にパブリケーションに登録されたオブジェクトをクライアントに配信する データ サブセッティング パラメータの値とクライアントとの紐付けにも使用される API もしくは Mobile Manager で定義 サブスクリプション パラメータ クライアント パブリケーション クライアント クライアント 3 パブリケーション 7 データ サブセッティング パラメータ SELECT * FROM EMP WHERE EMPNO = :eno サブセッティング パラメータ クライアント クライアント クライアント 3 :eno=0 :eno=0 :eno=30 パブリケーション アイテム クエリーで埋め込まれるバインド変数 : 変数名 でパラメータを定義 各クライアント固有のデータを取得する際に利用されることが多い パラメータの値はサブスクリプション確定後 各クライアントごとに値を設定する 8 9

クライアント Mobile Manager およびリポジトリでは ユーザー と同義 Mobile サーバーにログインして同期する クライアント クライアント クライアント N Mobile サーバー 9 Agenda 同期アーキテクチャ全体像 同期オブジェクトとその役割 同期プロセス解説 0 0

同期 ( アップロード / ダウンロード ) 同期クライアント アップロード Mobileサーバー ダウンロード 3 Oracleデータベース 4 Oracle Lite データベース アウト キュー エラー キュー イン キュー 変更差分 データ更新 更新トリガー データベース オブジェクト ( スナップショットなど ) 同期開始 同期クライアントが変更差分をファイルに抽出 同期クライアントは差分ファイルをMobileサーバーに送信 ( アップロード ) Mobileサーバーはイン キューに格納 3 4 Mobileサーバーはアウト キューから前回同期の結果を抽出し ファイルで同期クライアントに送信 ( ダウンロード ) 同期クライアントは受け取った結果ファイルをスナップショットに適用し 同期完了 スナップショット更新およびアップロード処理 例 :Oracle Lite で以下の Update 文を実行してアップロード処理を実行 UPDATE emp SET SAL=80 WHERE EMPNO=0; EMPNO ENAME 0 山田さん 3 差分抽出 SAL 00 80 VER Update OL ROW_STATUS 0 3 行ステータス変更 スナップショット emp CLID USER EMPNO 0 ENAME 山田さん SAL 80 VER DML U 差分ファイル (clsv.bin) 4 イン キュー (CFM$PI_emp) へ送信 送信の対象は変更済行 トランザクションそのものではない Oracle Liteでスナップショットの値を更新 と同時に内部列に更新フラグが立つ ( 挿入 6 更新 3 削除 80) 3 同期開始 Mobileクライアントはを元に差分ファイルを生成 Mobileサーバーに送信 4 Mobileサーバーは差分ファイルの情報をイン キューへ格納

アップロード時の適用 ( 同期オプション ) 更新可能かつ完全リフレッシュで定義されているスナップショット ( パブリケーション アイテム ) が つでもパブリケーションに含まれる場合 パブリケーション内の全てのスナップショットの変更情報はイン キューに格納せず 直接マスター表に適用される ダウンロードは通常の同期処理と同じくアウト キューから取得する イン キュー エラー キュー エラー キュー スナップショットアウト キューマスター表スナップショットアウト キューマスター表 通常のアップロード & ダウンロード処理 アップロード時に即適用ダウンロードはアウト キューから クライアントからのアップロードをマスター表からリアルタイムで検索できる アップロード時に適用処理まで行うため 同期時間のオーバーヘッドは増える ダウンロードではアウト キューを使用するため MGP の構成処理は必要 以下の構成の場合 全てのパブリケーション アイテムでアップロード時に変更情報をマスター表に即時適用する パブリケーション PI_ PI_ PI_3 高速 & 更新可能パブリケーション アイテム完全 & 更新可能パブリケーション アイテム ( ダミー定義可 ) 3 アウト キューには各クライアント毎に送信済のマスター表の主キーが格納される マスター表で発生した差分更新は MGP の構成処理でダウンロード待ちのフラグが立ち この情報を元に各クライアントはマスターの変更情報のみをダウンロードする Mobileサーバーは+でパブリケーション アイテム クエリー テンプレートを生成し クライアントに配信する差分データを抽出する ダウンロード処理 ( 高速リフレッシュ ) アウト キュー (CMP$PI_emp) CLID USER EMPNO 0 VER DML I DTYPE DML マスター表の現在行の DML ステータス (I 挿入と更新 D 削除 ) DTYPE ( ダウンロード ステータス ) Null クライアントからダウンロード待ち U クライアントで行が変更された D クライアントで行が削除された パブリケーション アイテム クエリー (SELECT * FROM emp) 4 3 差分ファイル (svcl.bin) CLID EMPNO ENAME SAL USER 0 山田さん 80 VER Oracle Lite のスナップショットに 3 の内容を適用 DML I 送信の対象は変更済行 トランザクションそのものではない 4

ダウンロード処理 ( 初回同期 完全リフレッシュ ) アウト キューを使用しません Mobile サーバーはスナップショット定義 SQL で直接リポジトリに問い合わせてデータを取得する スナップショット定義の SQL でリポジトリに問合せを行い 取得データをファイルにして Oracle Lite に送信 SELECT * FROM emp 差分ファイル (svcl.bin) CLID USER USER USER EMPNO ENAME SAL VER 0 0 30 山田さん 田中さん 佐藤さん 80 00 00 DML I I I Oracle Lite のスナップショットに の内容を適用 5 MGP( 適用 / 構成 ) MGP はイン キューから 件取り出し表に適用する このときデータ競合が発生する場合がある データ競合が発生した場合 MGP は自動解消を試みる 成功すればロジックに従って値を決定 解消できない場合はエラー キューに格納する MGP Oracleデータベースアウト キューエラー キュー イン キュー 3 適用の結果 あるいはマスタ表に直接更新が行われるとトリガーにより変更情報が内部で記録される 構成処理 4 適用処理 4 全ての適用が終わると MGP は変更情報に基づいて各クライアントごとにアウト キューを構成し 次回クライアントからの同期要求に備える 変更情報 3 更新トリガー データベース オブジェクト ( 表など ) データ更新 6 3

適用処理 ( 競合なし ) 例 :Oracle Lite で以下の Update 文を実行してイン キューにアップロードした状態 UPDATE emp SET SAL=80 WHERE EMPNO=0; CLID USER EMPNO 0 ENAME 山田さん SAL 80 VER DML U イン キュー (CFM$PI_emp) EMPNO 0 ENAME 山田さん SAL 00 80 VER DML I マスタ表 (emp) 行バージョン表 (CVR$emp) 3 4 4 マスタ表とイン キューの主キーとVERを比較 一致したらへ ( 不一致は競合 ) マスタ表のDMLがnullであれば3へ (not nullなら競合 ) 3 イン キューの内容 ( 操作 ) をマスターに上書き 4 行バージョン表のVERを 増分 DMLをIに変更 7 競合の検出 例 :Oracle Lite で以下の Update 文を実行してイン キューにアップロード UPDATE emp SET SAL=00 WHERE EMPNO=0; かつ適用前に Oracle でも以下の Update 文が実行されていた場合 UPDATE emp SET SAL=50 WHERE EMPNO=0; CLID USER EMPNO 0 ENAME 田中さん SAL 00 VER DML U イン キュー (CFM$PI_emp) EMPNO 0 ENAME 田中さん SAL 50 VER DML I マスタ表 (emp) 行バージョン表 (CVR$emp) 適用前にマスタでも更新発生 (VER+ DMLフラグあり ) マスタ表とイン キューの主キーとVERが不一致 ( マスタのVER 値が新しい ) もしくはマスタ表のDML nullの場合 競合発生 競合解消ルーチンへ 8 4

競合の解消 更新競合または挿入競合 競合解消試行 サーバー優先 クライアント優先 競合発生? 削除競合を含む競合エラーもしくは未解決の競合 エラー キューへ格納 カスタム解消 ( 要ロジック実装 ) 手動で解決後トランザクション再実行 競合解決 エラー キューのパージ ( 廃棄 ) 競合更新競合 : サーバーで更新した行と同じ主キーの行をクライアントで更新 削除挿入競合 : クライアント サーバー双方で同じ主キーの行を挿入競合エラー削除競合 : サーバーで削除した行と同じ行をクライアントで更新 Oracle のレプリケーションでの競合エラーと動作を合わせるためその他 参照制約違反など 9 構成処理 ( ダウンロード データの準備 ) C$ALL_SID_LOGGED_TABLES C$ALL_LOGGED_TABLES 変更対象の表情報の収集 行バージョン表 (CVR$emp) EMPNO VER DML 0 I ログ表 (CLG$emp) EMPNO VER DML 0 I を元に各表別に変更行の情報をログ表にコピー CVR$ 表の DML=null 3 クライアントごとに変更行をアウト キューに構成 C$ALL_CLIENTS C$ALL_CLIENT_ITEMS C$ALL_LOGS C$ALL_SUBSCRIPTION_PARAMS アウト キュー (CMP$PI_emp) ログ表 (CLG$emp) CLID EMPNO VER DML DTYPE USER 0 I 5ログ表の初期化 4 DTYPEをnullに ( ダウンロード準備完了 ) 30 5

同期処理内部の同時実行性の制御 Oracle Liteの同期処理は複数のフェーズで構成され それぞれ独立して動作する 同期 (Sync) MGP マスター表更新 クライアントの同期レスポンスタイムを向上させるため 同一クライアント内の隣接する各フェーズ ( 同期 MGP MGP マスター表更新 ) が同時に実行されないように制御される 各フェーズの処理中は特定の内部表および行にロックをかける 同期処理とマスター表の更新はお互いブロックしない 後から起動される処理は以下のいずれかの動作 同期 : 処理を中止し エラーをクライアントに返す MGP: そのサイクルでの処理をスキップ 次サイクル時に試行 マスター表更新 : 実行中の処理の完了を待つブロックなし 同期 MGP マスタ更新 クライアント ブロック ブロック 3 同期処理各フェーズ間の同時実行性 同じクライアントで処理がもし重なったら? Ex. MGP で適用 / 構成中のクライアントが同期を試みた 同期中 MGP 中マスタ更新中 同期 NG:Error Server Busy NG:Error Server Busy OK MGP NG:Skip Next Try NG:Skip 重起動 NG:Skip Next Try マスタ更新 OK MGP 処理待ち 行ロック更新確定待ち 3 6

MGP のサイクル起動 適用構成待機適用構成 待機 適用時間に影響を与える要素 クライアントの更新レコード数 クライアント数 パブリケーション アイテム定義 SQL 競合の有無 構成時間に影響を与える要素 更新対象のパブリケーション アイテム数 クライアント数 スナップショットが読取専用 or 更新可能 サブセッティング パラメータ数 パブリケーション アイテム定義 SQL の実行時間 適用 構成 待機 適用 を繰り返す 待機の時間に同期を受け付ける MGP 起動時にすでに同期中のセッションがある場合 次回起動時に適用を試みる 待機時間は起動パラメータで設定 ( 固定 ) 33 MGP 処理の内訳 適用処理 適用構成待機適用構成 待機 DML もしくは SELECT 発行 クライアント イン キュー イン キュー 行 行 適用 適用 クライアント イン キュー イン キュー 行 行 適用 適用 適用処理の順序 クライアント イン キュー 行 行 イン キュー クライアント 構成処理 トランザクション ログ クライアント クライアント ログ表 ログ表 アウト キュー アウト キュー アウト キュー アウト キュー 34 7

まとめ 同期アーキテクチャ全体像 3 階層構成 (Oracle Lite-Mobile サーバー -Oracle) フェーズ (Sync と MGP) による async な同期処理 スナップショット定義情報 変更情報をリポジトリで集中管理 同期で使用 ( 作成 ) されるオブジェクトとその役割 パブリケーション ( アイテム ) とサブスクリプション 同期処理プロセス Sync: アップロード & ダウンロード MGP: 適用 & 構成 競合の検知と解消 35 日本オラクル株式会社無断転載を禁ずこの文書はあくまでも参考資料であり 掲載されている情報は予告なしに変更されることがあります 日本オラクル社は本書の内容に関していかなる保証もいたしません また 本書の内容に関連したいかなる損害についても責任を負いかねます Oracle PeopleSoft JD Edwards 及び Siebel は 米国オラクル コーポレーション及びその子会社 関連会社の登録商標です その他の名称はそれぞれの会社の商標の可能性があります 8