IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エスアーペー エスエーの特許一覧

特開2025-18959変更を認識したスナップショットレプリケーション
<>
  • 特開-変更を認識したスナップショットレプリケーション 図1
  • 特開-変更を認識したスナップショットレプリケーション 図2
  • 特開-変更を認識したスナップショットレプリケーション 図3
  • 特開-変更を認識したスナップショットレプリケーション 図4
  • 特開-変更を認識したスナップショットレプリケーション 図5
  • 特開-変更を認識したスナップショットレプリケーション 図6
  • 特開-変更を認識したスナップショットレプリケーション 図7
  • 特開-変更を認識したスナップショットレプリケーション 図8
  • 特開-変更を認識したスナップショットレプリケーション 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025018959
(43)【公開日】2025-02-06
(54)【発明の名称】変更を認識したスナップショットレプリケーション
(51)【国際特許分類】
   G06F 16/245 20190101AFI20250130BHJP
   G06F 16/28 20190101ALI20250130BHJP
【FI】
G06F16/245
G06F16/28
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024106716
(22)【出願日】2024-07-02
(31)【優先権主張番号】18/227,207
(32)【優先日】2023-07-27
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.JAVASCRIPT
3.PYTHON
(71)【出願人】
【識別番号】300015447
【氏名又は名称】エスアーペー エスエー
【住所又は居所原語表記】Dietmar-Hopp-Allee 16, 69190 Walldorf, Germany
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ユ・ガオ
(72)【発明者】
【氏名】ジュンペン・リウ
(72)【発明者】
【氏名】ジフェン・シュ
(72)【発明者】
【氏名】ヒョン・ソグ・キム
(72)【発明者】
【氏名】ウォン・ウク・ホン
(72)【発明者】
【氏名】ジ・フン・ジャン
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA02
5B175CA09
(57)【要約】
【課題】変更を認識したスナップショットレプリケーションを提供する。
【解決手段】通常、スナップショットレプリケーションを使用して取得された最初の複製が、定期的に更新される。しかし、ソースデータオブジェクトのデータが複製データオブジェクトのデータと比べて変わっていない場合、更新プロセスは、コンピューティングリソースを不必要に消費し得る。開示される技術は、新しいスナップショットを取得する前に、スナップショットの複製が古いかどうかを判定するためにチェックを行う。チェックは、手動の要求に応じて、または複製データオブジェクトにアクセスするクエリーの受信などのトリガの発生時に、またはスケジュールに従って実行され得る。リモートデータオブジェクトのコンテンツのダイジェスト値、またはリモートデータオブジェクトに関連するタイムスタンプなどの、リモートデータオブジェクトの現在のおよび以前のバージョンに関する情報が、複製が古いかどうかを判定するために比較され得る。
【選択図】図7
【特許請求の範囲】
【請求項1】
コンピューティングシステムであって、
少なくとも1つのメモリと、
前記少なくとも1つのメモリに結合された1つまたは複数のハードウェアプロセッサユニットと、
実行されるときに、前記コンピューティングシステムに動作を実行させるコンピュータ実行可能命令を記憶する1つまたは複数のコンピュータ可読記憶媒体と
を含み、前記動作が、
ローカルデータソースにおいて、第1のデータオブジェクトタイプの第1のインスタンスを作成することと、
リモートデータソースから、前記第1のデータオブジェクトタイプの前記第1のインスタンスのためのデータの第1のセットを受信することであって、データの前記第1のセットが、前記リモートデータソースのリモートデータオブジェクトから抽出される、前記受信することと、
前記第1のデータオブジェクトタイプの前記第1のインスタンスにデータの前記第1のセットを記憶することと、
前記リモートデータオブジェクトと比較して前記第1のデータオブジェクトタイプの前記第1のインスタンスが古いと判定することと、
前記第1のデータオブジェクトタイプの前記第1のインスタンスのためのデータの第2のセットを受信することであって、データの前記第2のセットが、前記リモートデータオブジェクトの更新されたデータである、前記受信することと、
前記第1のデータオブジェクトタイプの前記第1のインスタンス内でデータの前記第1のセットの少なくとも一部をデータの前記第2のセットのデータで置き換えることと
を含む、コンピューティングシステム。
【請求項2】
前記動作が、
クエリーを受信することと、
前記クエリーが前記第1のデータオブジェクトタイプの前記第1のインスタンスにアクセスすると判定することと、
前記クエリーが前記第1のデータオブジェクトタイプの前記第1のインスタンスにアクセスすると判定したことに少なくとも部分的に基づいて、前記判定することを開始することと
をさらに含む、請求項1に記載のコンピューティングシステム。
【請求項3】
前記動作が、
前記置き換えることが完了されるまで前記クエリーの実行を延期することをさらに含む、請求項2に記載のコンピューティングシステム。
【請求項4】
前記延期することが、前記クエリー内のコマンドに応答して実行される、請求項3に記載のコンピューティングシステム。
【請求項5】
前記動作が、
前記置き換えることの前に前記クエリーを実行することをさらに含む、請求項2に記載のコンピューティングシステム。
【請求項6】
前記置き換えることの前に前記クエリーを実行することが、前記クエリー内のコマンドに応答して実行される、請求項5に記載のコンピューティングシステム。
【請求項7】
前記動作が、
前記第1のデータオブジェクトタイプの前記第1のインスタンスにアクセスする前記クエリーの少なくとも一部を前記リモートデータオブジェクトに対して実行することをさらに含む、請求項2に記載のコンピューティングシステム。
【請求項8】
前記第1のデータオブジェクトタイプの前記第1のインスタンスにアクセスする前記クエリーの少なくとも一部を前記リモートデータオブジェクトに対して実行することが、前記クエリー内のコマンドに応答して実行される、請求項7に記載のコンピューティングシステム。
【請求項9】
前記第1のデータオブジェクトタイプの前記第1のインスタンスが古いと判定することが、データの前記第1のセットのコンテンツから生成されたダイジェスト値を、前記リモートデータオブジェクトのコンテンツから生成され、前記リモートデータオブジェクトの現在のメタデータに維持されているダイジェスト値と比較することを含む、請求項1に記載のコンピューティングシステム。
【請求項10】
前記第1のデータオブジェクトタイプの前記第1のインスタンスが古いと判定することが、前記第1のデータオブジェクトタイプの前記第1のインスタンスに関して維持された統計を、前記リモートデータオブジェクトの現在のメタデータに維持された統計と比較することを含む、請求項1に記載のコンピューティングシステム。
【請求項11】
前記第1のデータオブジェクトタイプの前記第1のインスタンスが古いと判定することが、前記第1のデータオブジェクトタイプの前記第1のインスタンスに関して維持された最終修正日を、前記リモートデータオブジェクトの現在のメタデータに維持された最終修正日と比較することを含む、請求項1に記載のコンピューティングシステム。
【請求項12】
前記第1のデータオブジェクトタイプの前記第1のインスタンスが古いと判定することが、前記第1のデータオブジェクトタイプの前記第1のインスタンスに関して維持されたサイズを、前記リモートデータオブジェクトの現在のメタデータに維持されたサイズと比較することを含む、請求項1に記載のコンピューティングシステム。
【請求項13】
前記第1のデータオブジェクトタイプが、前記第1のデータオブジェクトタイプのインスタンスにアクセスするクエリーが、前記ローカルデータソースに対して前記第1のデータオブジェクトタイプの前記インスタンスを使用して実行されるべきか、または前記リモートデータオブジェクトに対して実行されるべきかを示す識別子を含む、請求項1に記載のコンピューティングシステム。
【請求項14】
前記判定することが、トリガの発生に基づいて開始される、請求項1に記載のコンピューティングシステム。
【請求項15】
前記判定することが、同期スケジュールに基づいて開始される、請求項1に記載のコンピューティングシステム。
【請求項16】
前記リモートデータオブジェクトおよび前記第1のデータオブジェクトタイプが、セマンティック属性の共通のセットを共有する、請求項1に記載のコンピューティングシステム。
【請求項17】
前記リモートデータオブジェクトおよび前記第1のデータオブジェクトタイプが、リレーショナルデータベーステーブルである、請求項1に記載のコンピューティングシステム。
【請求項18】
前記判定することが、前記リモートデータソースにおいて実行される、請求項1に記載のコンピューティングシステム。
【請求項19】
少なくとも1つのハードウェアプロセッサおよび前記少なくとも1つのハードウェアプロセッサに結合された少なくとも1つのメモリを含むコンピューティングシステムにおいて実行される方法であって、
ローカルデータソースにおいて、第1のデータオブジェクトタイプの第1のインスタンスを作成するステップと、
リモートデータソースから、前記第1のデータオブジェクトタイプの前記第1のインスタンスのためのデータの第1のセットを受信するステップであって、データの前記第1のセットが、前記リモートデータソースのリモートデータオブジェクトから抽出される、ステップと、
前記第1のデータオブジェクトタイプの前記第1のインスタンスにデータの前記第1のセットを記憶するステップと、
前記リモートデータオブジェクトと比較して前記第1のデータオブジェクトタイプの前記第1のインスタンスが古いと判定するステップと、
前記第1のデータオブジェクトタイプの前記第1のインスタンスのためのデータの第2のセットを受信するステップであって、データの前記第2のセットが、前記リモートデータオブジェクトの更新されたデータである、ステップと、
前記第1のデータオブジェクトタイプの前記第1のインスタンス内でデータの前記第1のセットの少なくとも一部をデータの前記第2のセットのデータで置き換えるステップと
を含む方法。
【請求項20】
少なくとも1つのハードウェアプロセッサおよび前記少なくとも1つのハードウェアプロセッサに結合された少なくとも1つのメモリを含むコンピューティングシステムによって実行されるときに、前記コンピューティングシステムに、ローカルデータソースにおいて、第1のデータオブジェクトタイプの第1のインスタンスを作成させるコンピュータ実行可能命令と、
前記コンピューティングシステムによって実行されるときに、前記コンピューティングシステムに、リモートデータソースから、前記第1のデータオブジェクトタイプの前記第1のインスタンスのためのデータの第1のセットを受信させるコンピュータ実行可能命令であって、データの前記第1のセットが、前記リモートデータソースのリモートデータオブジェクトから抽出される、コンピュータ実行可能命令と、
前記コンピューティングシステムによって実行されるときに、前記コンピューティングシステムに、前記第1のデータオブジェクトタイプの前記第1のインスタンスにデータの前記第1のセットを記憶させるコンピュータ実行可能命令と、
前記コンピューティングシステムによって実行されるときに、前記コンピューティングシステムに、前記リモートデータオブジェクトと比較して前記第1のデータオブジェクトタイプの前記第1のインスタンスが古いと判定させるコンピュータ実行可能命令と、
前記コンピューティングシステムによって実行されるときに、前記コンピューティングシステムに、前記第1のデータオブジェクトタイプの前記第1のインスタンスのためのデータの第2のセットを受信させるコンピュータ実行可能命令であって、データの前記第2のセットが、前記リモートデータオブジェクトの更新されたデータである、コンピュータ実行可能命令と、
前記コンピューティングシステムによって実行されるときに、前記コンピューティングシステムに、前記第1のデータオブジェクトタイプの前記第1のインスタンス内でデータの前記第1のセットの少なくとも一部をデータの前記第2のセットのデータで置き換えさせるコンピュータ実行可能命令と
を含む、1つまたは複数の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、データレプリケーションに関する。特定の実装は、ソースデータオブジェクトからターゲットデータオブジェクトにデータをレプリケーションする前に、ソースデータオブジェクトがターゲットデータオブジェクトと比べて変わったかどうかを判定することに関する。
【背景技術】
【0002】
企業が1つまたは複数のローカルシステムおよび1つまたは複数のクラウドベースのシステムを含む様々なシステムにデータを記憶させることは、ますます普通になっている。システムは、異なるフォーマットでデータを記憶する(たとえば、リレーショナルデータベース対JSONドキュメントを記憶するデータベース)、または(たとえば、異なるベンダによって提供されるソフトウェアおよび/またはハードウェアを使用する)異なるデータベース管理システムを使用してデータを記憶するなど、異なる種類であることが可能である。たとえデータが同じベンダのソフトウェアを使用して同じフォーマットで記憶される場合でも、どのデータが特定の場所に記憶されるかおよびそのデータを記憶するために使用されるスキーマ(schema)には違いが存在し得る。
【0003】
これらの問題への対処を助けるために、データレプリケーションおよびデータベースフェデレーション(federation)を含む様々な技術が使用されてきた。フェデレーションされたデータベース環境において、クエリーなどのデータベース動作の要求は、ローカルデータベースシステムまたはデータフェデレーションを使用してアクセスされる「リモート」データベースのソースを指定し得る。場合によっては、ローカルデータソースとリモートデータソースとの両方が、ローカルデータベーステーブルからのデータおよびリモートのフェデレーションされたデータベースシステムのデータソースからのデータを取り出すクエリーを有するなど、同じクエリーで指定され得る。
【0004】
データレプリケーションは、ターゲットシステム自体に既にネイティブで記憶された情報を補足する、元々はソースシステムに存在するデータにターゲットシステムがアクセスし、利用することを可能にすることによって、ビジネスのための戦略的な利点を提供する。このアーキテクチャにおいて、ソースシステムは、基本的に、レプリケーションされたデータに関する信頼できるより権威のあるまたは一次ソースとして働く。これは、ターゲットシステムが、ターゲットシステムの固有のデータを維持しながら、ソースシステムからレプリケーションされた追加の情報を活用して、ターゲットシステムのデータ処理または分析機能を強化することもできることを意味する。しかし、レプリケーションされたデータに関わるすべての食い違いまたは衝突は、通常、信頼できるより上位のソースとしてのソースシステムのステータスを考慮して、ソースシステムを優先して解決される。
【0005】
クエリーの実行など様々な理由から、データレプリケーションは、一部のシナリオにおいてはデータフェデレーションよりも優れたソリューションである場合がある。しかし、多くの場合、ソースシステムのデータは、データがソースシステムに追加され得るか、ソースシステムから削除され得るか、またはソースシステムにおいて変更され得るので「静的」でない。したがって、ソースシステムからターゲットシステムにデータを1回レプリケーションするのではなく、ソースシステムにおいて行われた変更に基づいてターゲットシステムのデータを更新するためのプロセスが実装される。
【0006】
これらの更新を実行する1つの方法は、リアルタイムレプリケーションを可能にすることであり、リアルタイムレプリケーションにおいては、多くの場合、ログベースの手法を使用して、変更がソースシステムにおいて行われるときにソースシステムにおけるそれらの変更がターゲットシステムに伝達される。これは、ターゲットシステムのデータがソースシステムのデータと同じであることを保証するのを助けることができるが、リアルタイムレプリケーションプロセスは、ソースシステムとターゲットシステムとの両方において複雑で計算コストが高くなり得る。ログベースの手法の特定の欠点は、ソースシステムとターゲットシステムとの両方が、通常、緊密に統合される必要があることである。たとえば、通常、ターゲットシステムがソースシステムの実装に基づいて設計され、したがって、適切なログが獲得され、解析され得る。多くの場合、これは、リアルタイムレプリケーションを異なるベンダのシステム間で実装することを難しくする。
【0007】
したがって、使用され得る別の種類のレプリケーションは、スナップショットレプリケーションであり、スナップショットレプリケーションにおいては、ターゲットシステムがソースシステムのデータのより最新のバージョンを持ち得るように、レプリケーションのために特定された特定のテーブルなどのすべてのまたは選択されたデータソースが、それらのコンテンツをターゲットシステムに定期的に送信させる。しかし、スナップショットレプリケーションはリアルタイムレプリケーションではないので、時間が経つにつれて、ターゲットシステムのデータがソースシステムのデータと比較して古くなり得る。さらに、通常、ソースシステムにおいてレプリケーションのために特定されたコンテンツのすべてが、スナップショットの更新中にターゲットシステムに送信されるので、スナップショットの更新を実行することは、計算コストが高くなり得る。したがって、改善の余地がある。
【発明の概要】
【課題を解決するための手段】
【0008】
この「発明の概要」は、「発明を実施するための形態」において下でさらに説明される一揃いの概念を簡素化された形態で導入するために提供される。この「発明の概要」は、特許請求の対象の重要な特徴または必須の特徴を特定するように意図されておらず、特許請求の対象の範囲を限定するために使用されるように意図されてもいない。
【0009】
開示される技術およびソリューションは、改善されたスナップショットレプリケーションを提供することができる。通常、スナップショットレプリケーションを使用して取得された最初の複製が、定期的に更新される。しかし、ソースデータオブジェクトのデータが複製データオブジェクトのデータと比べて変わっていない場合、更新プロセスは、コンピューティングリソースを不必要に消費し得る。開示される技術は、新しいスナップショットを取得する前に、スナップショットの複製が古いかどうかを判定するためにチェックを行う。チェックは、手動の要求に応じて、または複製データオブジェクトにアクセスするクエリーの受信などのトリガの発生時に、またはスケジュールに従って実行され得る。リモートデータオブジェクトのコンテンツのダイジェスト値、またはリモートデータオブジェクトに関連するタイムスタンプなどの、リモートデータオブジェクトの現在のおよび以前のバージョンに関する情報が、複製が古いかどうかを判定するために比較され得る。
【0010】
一態様において、本開示は、現在のスナップショットの複製がリモートデータオブジェクトと比較して古いと判定した後にスナップショットの複製の更新を実行するプロセスを提供する。ローカルデータソースにおいて、第1のデータオブジェクトタイプの第1のインスタンスが作成される。リモートデータソースから、第1のデータオブジェクトタイプの第1のインスタンスのために、データの第1のセットが受信される。データの第1のセットは、リモートデータソースのリモートデータオブジェクトから抽出されたデータである。データが、第1のオブジェクトタイプの第1のインスタンスに記憶される。第1のオブジェクトタイプの第1のインスタンスが、リモートデータオブジェクトと比較して古いと判定される。第1のデータオブジェクトタイプの第1のインスタンスのために、データの第2のセットが受信される。データの第2のセットは、リモートデータオブジェクトの更新されたデータである。データの第1のセットの少なくとも一部が、第1のオブジェクトタイプの第1のインスタンス内でデータの第2のセットのデータで置き換えられる。
【0011】
本開示は、上述の方法を実行するように構成されたかまたは上述の方法を実行するための命令を含むコンピューティングシステムおよび有形の非一時的コンピュータ可読記憶媒体も含む。本明細書において説明されるように、様々なその他の特徴および利点が、希望に応じてテクノロジーに組み込まれ得る。
【図面の簡単な説明】
【0012】
図1】開示されるテクノロジーの態様の実装に使用され得る例示的なデータベースシステムを示す図である。
図2】データベースシステムが、仮想テーブルによることを含むデータフェデレーションを使用して、またはリモートコンピューティングシステムからレプリケーションされたデータを有するローカルテーブルを使用して、リモートコンピューティングシステムのデータにアクセスすることができるコンピューティング環境を示す図である。
図3】従来技術のデータレプリケーション技術を示す図である。
図4】本開示によるスナップショットレプリケーションプロセスの図および流れ図である。
図5】スナップショットの複製が古いと判定される場合の好ましい挙動に関するヒントを含むクエリーを実行する開示されるプロセスの流れ図である。
図6】リモートテーブルおよび複製テーブル、ならびに複製テーブルがリモートテーブルと比べて最新であるかどうかを判定するために使用され得るデータ要素を示す図である。
図7】現在のスナップショットの複製がリモートデータオブジェクトと比較して古いと判定した後にスナップショットの複製の更新を実行するプロセスの流れ図である。
図8】いくつかの説明される実施形態が実装され得る例示的なコンピューティングシステムの図である。
図9】本明細書において説明されるテクノロジーと併せて使用され得る例示的なクラウドコンピューティング環境の図である。
【発明を実施するための形態】
【0013】
例1-概要
企業が1つまたは複数のローカルシステムおよび1つまたは複数のクラウドベースのシステムを含む様々なシステムにデータを記憶させることは、ますます普通になっている。システムは、異なるフォーマットでデータを記憶する(たとえば、リレーショナルデータベース対JSONドキュメントを記憶するデータベース)、または(たとえば、異なるベンダによって提供されるソフトウェアおよび/またはハードウェアを使用する)異なるデータベース管理システムを使用してデータを記憶するなど、異なる種類であることが可能である。たとえデータが同じベンダのソフトウェアを使用して同じフォーマットで記憶される場合でも、どのデータが特定の場所に記憶されるかおよびそのデータを記憶するために使用されるスキーマには違いが存在し得る。
【0014】
これらの問題への対処を助けるために、データレプリケーションおよびデータベースフェデレーションを含む様々な技術が使用されてきた。フェデレーションされたデータベース環境において、クエリーなどのデータベース動作の要求は、ローカルデータベースシステムまたはデータフェデレーションを使用してアクセスされる「リモート」データベースのソースを指定し得る。場合によっては、ローカルデータソースとリモートデータソースとの両方が、ローカルデータベーステーブルからのデータおよびリモートのフェデレーションされたデータベースシステムのデータソースからのデータを取り出すクエリーを有するなど、同じクエリーで指定され得る。
【0015】
データレプリケーションは、ターゲットシステム自体に既にネイティブで記憶された情報を補足する、元々はソースシステムに存在するデータにターゲットシステムがアクセスし、利用することを可能にすることによって、ビジネスのための戦略的な利点を提供する。このアーキテクチャにおいて、ソースシステムは、基本的に、レプリケーションされたデータに関する信頼できるより権威のあるまたは一次ソースとして働く。これは、ターゲットシステムが、ターゲットシステムの固有のデータを維持しながら、ソースシステムからレプリケーションされた追加の情報を活用して、ターゲットシステムのデータ処理または分析機能を強化することもできることを意味する。しかし、レプリケーションされたデータに関わるすべての食い違いまたは衝突は、通常、信頼できるより上位のソースとしてのソースシステムのステータスを考慮して、ソースシステムを優先して解決される。
【0016】
クエリーの実行など様々な理由から、データレプリケーションは、一部のシナリオにおいてはデータフェデレーションよりも優れたソリューションである場合がある。しかし、多くの場合、ソースシステムのデータは、データがソースシステムに追加され得るか、ソースシステムから削除され得るか、またはソースシステムにおいて変更され得るので「静的」でない。したがって、ソースシステムからターゲットシステムにデータを1回レプリケーションするのではなく、ソースシステムにおいて行われた変更に基づいてターゲットシステムのデータを更新するためのプロセスが実装される。
【0017】
これらの更新を実行する1つの方法は、リアルタイムレプリケーションを可能にすることであり、リアルタイムレプリケーションにおいては、多くの場合、ログベースの手法を使用して、変更がソースシステムにおいて行われるときにソースシステムにおけるそれらの変更がターゲットシステムに伝達される。これは、ターゲットシステムのデータがソースシステムのデータと同じであることを保証するのを助けることができるが、リアルタイムレプリケーションプロセスは、ソースシステムとターゲットシステムとの両方において複雑で計算コストが高くなり得る。ログベースの手法の特定の欠点は、ソースシステムとターゲットシステムとの両方が、通常、緊密に統合される必要があることである。たとえば、通常、ターゲットシステムがソースシステムの実装に基づいて設計され、したがって、適切なログが獲得され、解析され得る。多くの場合、これは、リアルタイムレプリケーションを異なるベンダのシステム間で実装することを難しくする。
【0018】
したがって、使用され得る別の種類のレプリケーションは、スナップショットレプリケーションであり、スナップショットレプリケーションにおいては、ターゲットシステムがソースシステムのデータのより最新のバージョンを持ち得るように、レプリケーションのために特定された特定のテーブルなどのすべてのまたは選択されたデータソースが、それらのコンテンツをターゲットシステムに定期的に送信させる。しかし、スナップショットレプリケーションはリアルタイムレプリケーションではないので、時間が経つにつれて、ターゲットシステムのデータがソースシステムのデータと比較して古くなり得る。さらに、通常、ソースシステムにおいてレプリケーションのために特定されたコンテンツのすべてが、スナップショットの更新中にターゲットシステムに送信されるので、スナップショットの更新を実行することは、計算コストが高くなり得る。したがって、改善の余地がある。
【0019】
どのようにしてローカルデータベースがリモートデータソースのデータにアクセスすることができるかの特定の例として、ドイツ、WalldorfのSAP SEのSDA(Smart Data Access)データ仮想化テクノロジーは、ローカルデータベースシステムの「仮想テーブル」内のデータが、リモートシステムからローカルシステムにレプリケーションされたデータにアクセスすること、またはデータフェデレーションを通じてリモートシステムからのデータに直接アクセスすることを可能にする。一部の実装においては、所与の仮想テーブルが、ローカルの複製からのデータへのアクセスと、リモートシステムからの直接のデータへのアクセスとの間をトグル式に切り替えられ得る。開示される技術は、SAP SDAにおいて使用され得るが、リモートシステムからローカルシステムへのスナップショット(または「バッチ」)レプリケーションをともなうその他のシナリオにおいて使用され得る。
【0020】
検討されたように、スナップショットレプリケーションは、リアルタイムレプリケーションよりも少ないオーバーヘッドを持ち得るが、データがどれくらいの頻度で変わるか、および更新されたスナップショットがどれくらいの頻度で取得されるか、または更新されたスナップショットが取得されるかどうかに依存して、スナップショットの更新を実行するプロセスは、依然として高価になり得、データは、古くなり得る。通常、スナップショットの更新は、手動で要求されるか、またはスケジュールに従って要求されるかのどちらかである。スナップショットの更新を手動で要求することの問題点は、ユーザまたはコンピューティングプロセスの側の積極的なアクションを必要とすることである。したがって、たとえば、ユーザは、クエリーを実行する前に、リモートデータソースからのデータが、最後にスナップショットが取得されたときと比較して古い可能性があるかどうかを考慮する必要がある場合がある。しかし、ユーザは、このアクションを実行し忘れる可能性があり、古いデータを有する可能性があるクエリー結果につながる。または、たとえソースシステムのデータがローカルシステムの現在のスナップショットと比較して変わっていなくても、ユーザが更新を要求し、結果として生じるコンピューティングオーバーヘッドを招く可能性がある。
【0021】
その他の場合、スナップショットは、スケジュールに従うなどして、定期的にリフレッシュされ得る。しかし、これは、スナップショットの更新の手動トリガと同じ問題に悩まされ得る。データが変わる前または「著しい」数の変更が発生する前に更新が実行されることがあり得、不必要な計算コストを招くか、またはスケジューリングされた更新が発生する前に、古いデータに対してクエリーが実行され得る。
【0022】
本開示は、改善されたスナップショットレプリケーションのための技術を提供する。特に、開示される技術は、ローカルシステムの複製データの現在のスナップショットがリモートシステムの対象データの現在の状態と比較されることを可能にする。リモートシステムおよび複製システムからのデータを直接比較するのではなく、リモートシステムのデータの要約データが、ローカルシステムの複製のデータの要約データと比較され得る。比較が変更が発生したことを示す場合、ローカルシステムは、リモートシステムから更新された複製を取得することができる。したがって、スナップショットの更新は、リモートシステムにおいてデータが変わったときにのみ実行される。
【0023】
本開示は、ローカルの複製データベーステーブルおよびリモートデータベーステーブルを含むプロセスで使用されるなど、リレーショナルデータベースシステムに実装された開示される技術の特定の例を提供する。しかし、開示される技術は、JSON、XML、CSV、PARQUEST、BSON(バイナリJSON)、APACHE KAFKA、APACHE CASSANDRA、またはSAP BWオブジェクトなどのフォーマットでデータを記憶するなど、その他の種類のデータオブジェクトとともに使用され得る。
【0024】
一部の場合、データが記憶されるリモートオブジェクトおよび複製オブジェクトは、同じ種類であるが、その他の場合、リモートオブジェクトおよび複製オブジェクトは、異なる種類であることが可能である。本開示において後に説明されるように、(複製に反映されるような)リモートデータオブジェクトの第1のバージョンの特性またはプロパティが、(リモートシステムのオブジェクトの現在のバージョンに反映されるような)リモートデータオブジェクトの第2のバージョンの特性またはプロパティと比較されることが可能であり、プロパティまたは特性の値が異なる場合、変更が示されることが可能であり、更新プロセスがトリガされることが可能である。複製オブジェクトを生成するかまたは埋めるために使用されたリモートオブジェクトのバージョンの特性またはプロパティの値が利用可能であるならば、特性またはプロパティは、複製オブジェクトから計算される必要がない。
【0025】
リモートシステムに維持されたデータがローカルシステムのスナップショットの複製のデータと比較して、変わったかどうかを判定するために、様々な種類の要約データが使用され得る。一実施形態においては、スナップショットの複製のハッシュ値が計算され、リモートシステムのデータの現在のバージョンのハッシュ値と比較され得る。別の実施形態においては、テーブルの現在のテーブル統計が、スナップショットの複製に関連するテーブル統計と比較され得る。テーブルが最後に修正された日付またはテーブルのサイズに関する情報などの、特定のデータオブジェクトに関するその他のメタデータが、比較の目的で使用され得る。
【0026】
比較は、様々な基準に従って開始され、実行され得る。場合によっては、複製からのデータを要求するクエリーがローカルシステムにおいて受信されるとき、またはクエリー計画(query plan)のコンパイルもしくは再コンパイルの要求時など、同様の活動時に、比較が行われ得る。別の例において、比較は、スケジュールに従って行われ得る。
【0027】
比較プロセスと、更新プロセスのトリガとは、実装に応じて、リモートシステムまたはローカルシステムにおいて実行され得る。クエリー要求時に複製が最新であるかどうかをチェックする場合、比較プロセスは、ローカルシステムによって開始され得る。しかし、ローカルシステムが、リモートシステムにデータ値を送信する可能性があり、そのときは、リモートシステムが、複製が最新であるかどうかを判定し、またはローカルシステムが、リモートシステムからの値を要求する可能性があり(またはリモートシステムがローカルシステムに値を送信する可能性があり)、そのときは、ローカルシステムが、複製が最新であるかどうかを判定することができる。スケジュールに従って複製が最新であるかどうかを判定するなど、その他の種類のトリガの場合、チェックは、リモートシステムまたはローカルシステムにおいて開始され得る。
【0028】
本開示は、概して、リレーショナルデータベーステーブルなどのデータオブジェクト全体に関する情報に基づいて、新しいスナップショットの複製が取得されるべきかどうかを判定することの検討に進む。しかし、開示される技術の少なくとも特定の態様は、より細かいレベルで適用され得る。たとえば、テーブル全体のコンテンツがスナップショットの複製と異なるかどうかを判定するのではなく、スナップショットの複製の1つまたは複数の特定のカラムが、複製のために使用されたリモートデータソースの現在のバージョンの対応する1つまたは複数のカラムと異なるプロパティを有するかどうかが判定され得る。同様に、テーブル全体に関するデータを見るのではなく(またはそれに加えて)、修正された日付またはサイズなどのカラムに関するメタデータが、スナップショットの複製が更新されるべきかどうかを判定する際に使用され得る。
【0029】
開示される技術は、このように、多くの利点を提供することができる。スナップショットの複製がリモートシステム上のソースデータと異なる可能性が高いかどうかをチェックすることによって、スケジュールまたはトリガイベントに従って新しいスナップショットが取得されるシナリオと比較して、不必要なデータ送信および処理が回避され得る。変更を判定し、新しいスナップショットを取得するための比較は、自動化されることが可能であり、これは、更新されたスナップショットが取得されるべきかどうかを手動で判定し、更新プロセスを実行させる必要からユーザを解放することができる。さらに、開示される技術は、スナップショットの複製が古い可能性があると判定される場合にどのアクションが取られるべきかをクエリーを送る者が示すことを可能にするなど、クエリーを処理する際の柔軟性を提供する。
【0030】
例2は、開示されるテクノロジーの実装に使用され得る例示的なデータベースシステムを説明する。例3は、仮想テーブルの例を提供し、仮想テーブルは、フェデレーションされたデータソースまたはローカルデータソース(ローカルテーブル、またはキャッシュに維持されるテーブルを含む)内の場所を含む異なる場所を指すように更新され得る論理的ポインタを含む。しかし、開示される技術は、そのような仮想テーブルを使用しなくてもよいことを理解されたい。すなわち、開示される技術は、スナップショットレプリケーションを使用してデータを取得する複製テーブルの任意の実装に適用され得る。例4~8は、変更を認識したスナップショットレプリケーションを実行するための開示される技術をより詳細に説明する。
【0031】
例2-例示的なデータベースアーキテクチャ
図1は、例示的なデータベース環境100を示す。データベース環境100は、クライアント104を含み得る。単一のクライアント104が示されているが、クライアント104は、複数のクライアントを表し得る。1つのクライアントまたは複数のクライアント104は、OLAPクライアント、OLTPクライアント、またはそれらの組合せである場合がある。
【0032】
クライアント104は、データベースサーバ106と通信する。様々な下位コンポーネントを通じて、データベースサーバ106は、データを記憶する、読み込む、または操作する(すなわち、CRUD動作)要求などのデータベース動作の要求を処理することができる。セッションマネージャコンポーネント108は、Javaデータベースコネクティビティ(JDBC: Java Database Connectivity)、オープンデータベースコネクティビティ(ODBC: Open Database Connectivity)、またはデータベース共有ライブラリ(DBSL: Database Shared Library)などのデータベースプログラミングインターフェースを使用してデータベースサーバと通信するクライアントなど、クライアント104とデータベースサーバ106との間の接続を管理する役割を担うことができる。通常、セッションマネージャ108は、複数のクライアント104との接続を同時に管理することができる。セッションマネージャ108は、クライアント要求のための新しいセッションの作成、既存のセッションへのクライアント要求の割り振り、およびデータベースサーバ106へのアクセスの認証などの機能を実行することができる。各セッションに関して、セッションマネージャ108は、データベーストランザクションのコミットまたは(ステートメントレベルの分離またはトランザクションレベルの分離などの)トランザクション分離レベルに関連する設定などの、セッションに関連するパラメータのセットを記憶するコンテキストを維持することができる。
【0033】
(HTTPプロトコルまたは同様のトランスポートプロトコルを使用するクライアントなどの)ウェブベースのクライアントのようなその他の種類のクライアント104に関して、クライアントは、アプリケーションマネージャコンポーネント110とインターフェースをとることができる。データベースサーバ106のコンポーネントとして示されているが、その他の実装において、アプリケーションマネージャ110は、データベースサーバ106の外部に置かれるが、データベースサーバ106と通信することができる。アプリケーションマネージャ110は、セッションマネージャ108と同様の方法で、データベースサーバ106との新しいデータベースセッションを開始し、その他の機能を実行することができる。
【0034】
アプリケーションマネージャ110は、データベース動作の要求を行うアプリケーションの種類を判定し、プロシージャコールを呼び出すもしくは実行すること、照会言語ステートメントを生成すること、またはクライアント104およびデータベースサーバ106によって使用可能なフォーマット間でデータを変換することによるなどして、データベースサーバ106における要求の実行を仲介することができる。特定の例において、アプリケーションマネージャ110は、クライアント104からデータベース動作の要求を受信するが、要求に関連する状態情報などの情報は記憶しない。
【0035】
アプリケーションマネージャ110を通じて確立されるときを含め、クライアント104とデータベースサーバ106との間で接続が確立されると、通常、クライアント要求の実行が、構造化照会言語(SQL)などの照会言語を使用して実行される。要求を実行する際、セッションマネージャ108およびアプリケーションマネージャ110は、クエリーインターフェース112と通信する場合がある。クエリーインターフェース112は、データベースサーバ106の適切な実行コンポーネントとの接続を作成する役割を担うことができる。クエリーインターフェース112は、要求が前にキャッシュされたステートメントまたはストアドプロシージャに関連付けられるかどうかを判定し、ストアドプロシージャを呼び出すか、または前にキャッシュされたステートメントを要求に関連付ける役割を担うこともできる。
【0036】
データを書き込むかまたはデータを操作するための照会言語のステートメントなどの、データベース動作の少なくとも特定の種類の要求は、トランザクションコンテキストと関連付けられ得る。少なくとも一部の実装において、それぞれの新しいセッションは、トランザクションに割り振られ得る。トランザクションは、トランザクションマネージャコンポーネント114によって管理され得る。トランザクションマネージャコンポーネント114は、トランザクションの調整、トランザクションの分離の管理、実行中のおよび完了したトランザクションの追跡、ならびにトランザクションのコミットまたはロールバックの管理などの動作を担うことができる。これらの動作を実行する際、トランザクションマネージャ114は、データベースサーバ106のその他のコンポーネントと通信することができる。
【0037】
クエリーインターフェース112は、構造化照会言語プロセッサなどの照会言語プロセッサ116と通信することができる。たとえば、クエリーインターフェース112は、クライアント104からの照会言語ステートメントまたはその他のデータベース動作要求を照会言語プロセッサ116に転送する場合がある。照会言語プロセッサ116は、スレッドプール124を含み得る、SQLエグゼキュータなどの照会言語エグゼキュータ120を含むことができる。データベース動作の一部の要求またはそれらのコンポーネントは、照会言語プロセッサ116によって直接実行され得る。その他の要求またはそれらのコンポーネントは、照会言語プロセッサ116によって、データベースサーバ106の別のコンポーネントに転送され得る。たとえば、(コミットまたはロールバック動作などの)トランザクション制御ステートメントは、照会言語プロセッサ116によってトランザクションマネージャ114に転送され得る。少なくともいくつかの場合に、照会言語プロセッサ116は、データを取り出すかまたは操作する動作(たとえば、SELECT、UPDATE、DELETE)を実行する役割を担う。クエリーなどのその他の種類の動作は、照会言語プロセッサ116によって、データベースサーバ106のその他のコンポーネントに送信され得る。クエリーインターフェース112およびセッションマネージャ108は、データベース動作の要求に関連するコンテキスト情報を維持および管理することができる。特定の実装において、クエリーインターフェース112は、アプリケーションマネージャ110を通じて受信された要求のコンテキスト情報を維持および管理することができる。
【0038】
セッションマネージャ108またはアプリケーションマネージャ110によってクライアント104とデータベースサーバ106との間で接続が確立されるとき、クエリーなどのクライアント要求は、クエリーインターフェース112を使用するなどして、スレッドプール124のスレッドに割り振られ得る。少なくとも1つの実装において、スレッドは、処理活動を実行するためのコンテキストに関連付けられる。スレッドは、データベースサーバ106のオペレーティングシステムによって、またはデータベースサーバの別のコンポーネントによって、またはデータベースサーバの別のコンポーネントそれと組み合わせて管理され得る。概して、いつでも、スレッドプール124は、複数のスレッドを含む。少なくともいくつかの場合に、スレッドプール124内のスレッドの数は、データベースサーバ106における活動のレベルに応じるなどして動的に調整され得る。スレッドプール124の各スレッドは、特定の態様においては、複数の異なるセッションに割り振られ得る。
【0039】
クエリーが受信されるとき、セッションマネージャ108またはアプリケーションマネージャ110は、クエリーの実行計画が計画キャッシュ136などに既に存在するかどうかを判定することができる。クエリー実行計画が存在する場合、キャッシュされた実行計画が取り出され、クエリーインターフェース112を使用するなどして照会言語エグゼキュータ120に転送され得る。たとえば、クエリーは、セッションマネージャ108またはアプリケーションマネージャ110によって決定されたスレッドプール124の実行スレッドに送信され得る。特定の例において、クエリー計画は、抽象データ型として実装される。
【0040】
クエリーが既存の実行計画に関連付けられていない場合、クエリーは、照会言語パーサ128を使用して解析され得る。照会言語パーサ128は、たとえば、クエリーの照会言語ステートメントをチェックして、それらが正しいシンタックスを有することを確かめ、ステートメントがその他の点で有効であることを確認することができる。たとえば、照会言語パーサ128は、照会言語ステートメントに記載されたテーブルおよびレコードがデータベースサーバ106に定義されているかどうかをチェックすることができる。
【0041】
クエリーは、照会言語オプティマイザ132を使用して最適化されることも可能である。照会言語オプティマイザ132は、クエリーがより効率的に処理されことを可能にするために、照会言語ステートメントの要素を操作することができる。たとえば、照会言語オプティマイザ132は、クエリーのアンネスト(unnest)、またはステートメント内の動作などのクエリー内の様々な動作の最適化された実行順序の決定などの動作を実行する場合がある。最適化の後、クエリーのために実行計画が生成またはコンパイルされ得る。少なくともいくつかの場合に、実行計画は、計画キャッシュ136などにキャッシュされることが可能であり、クエリーが再び受信される場合に(セッションマネージャ108またはアプリケーションマネージャ110によるなどして)取り出されることが可能である。
【0042】
本開示の目的のために、照会言語オプティマイザ132によって実行され得る1つのタスクは、データベース動作の要求またはその一部が実行されるべき場所を決定することである。たとえば、複数のデータソースからデータを読み出す複雑なクエリーが送られる場合がある。データソースのうちの少なくとも1つが、仮想テーブルである場合があり、要求は、データベースサーバ106の複製テーブル上で実行され得るか、または要求は、データフェデレーションによってリモートシステムに送信されることが可能であり、結果が、データベースサーバに返され得る。
【0043】
クエリー実行計画が生成または受信されると、照会言語エグゼキュータ120は、クエリーの実行計画の実行を監督することができる。たとえば、照会言語エグゼキュータ120は、データベースサーバ106の適切な下位コンポーネントを呼び出すことができる。
【0044】
クエリーを実行する際、照会言語エグゼキュータ120は、1つまたは複数のクエリー処理エンジンを含み得るクエリープロセッサ140を呼び出すことができる。クエリー処理エンジンは、たとえば、OLAPエンジン142、結合(join)エンジン144、属性エンジン146、または計算エンジン148を含み得る。OLAPエンジン142は、たとえば、OLAPクエリーの最適化された実行計画を作成するための規則を適用することができる。結合エンジン144は、結合動作および集約(aggregation)動作などの、通常、非OLAPクエリーのためのリレーショナル演算子(relational operator)を実装するために使用され得る。特定の実装において、属性エンジン146は、列データ構造およびアクセス動作を実装し得る。たとえば、属性エンジン146は、カラムのスキャンなどのマージ機能およびクエリー処理機能を実装することができる。
【0045】
クエリーが複雑なまたは内部的に並列化された動作または下位動作を含む場合などの特定の状況では、クエリーエグゼキュータ120は、クエリーの動作または下位動作を、スレッドプール156を含み得るジョブエグゼキュータコンポーネント154に送信することができる。クエリーの実行計画は、複数の計画演算子(plan operator)を含み得る。ジョブ実行スレッドプール156の各ジョブ実行スレッドは、特定の実装においては、個々の計画演算子に割り振られ得る。ジョブエグゼキュータコンポーネント154は、クエリーの演算子の少なくとも一部を並列に実行するために使用され得る。場合によっては、動作に同じテーブルの異なる部分に同時にアクセスさせるなど、計画演算子は、さらに分割され、並列化され得る。ジョブエグゼキュータコンポーネント154を使用することは、データベースサーバ106の1つまたは複数の処理ユニットへの負荷を増やし得るが、クエリーの実行時間を改善することができる。
【0046】
クエリープロセッサ140のクエリー処理エンジンは、データベースサーバ106に記憶されたデータにアクセスすることができる。データは、行ストア162に行単位のフォーマットで、または列ストア164に列単位のフォーマットで記憶され得る。少なくともいくつかの場合に、データは、行単位のフォーマットと列単位のフォーマットとの間で変換され得る。クエリープロセッサ140によって実行される特定の動作は、行ストア162、列ストア164、または少なくとも(結合、マージ、およびサブクエリーなどの)特定の種類の動作に関しては、行ストア162と列ストア164との両方のデータにアクセスするかまたはそのデータを操作する場合がある。少なくとも一部の態様において、行ストア162および列ストア164は、メインメモリに維持され得る。
【0047】
パーシステンス層(persistence layer)168は、行ストア162および列ストア164と通信することができる。パーシステンス層168は、書き込みトランザクションのコミット、REDOログエントリの記憶、トランザクションのロールバック、および永続化データ(persisted data)172を提供するための記憶装置へのデータの定期的な書き込みなどのアクションを担うことができる。
【0048】
クエリーまたはトランザクションなどのデータベース動作の要求を実行する際、データベースサーバ106は、別のデータベースサーバなどの別の場所に記憶された情報にアクセスする必要がある場合がある。データベースサーバ106は、そのような通信を管理するための通信マネージャコンポーネント180を含んでよい。通信マネージャ180は、アプリケーションマネージャがデータベースサーバの外部に置かれるとき、データベースサーバ106とクライアント104またはアプリケーションマネージャ110との間の通信を仲介することもできる。
【0049】
場合によっては、データベースサーバ106は、複数のデータベースサーバを含む分散型データベースシステムの一部であることが可能である。データベースサーバの少なくとも一部は、データベースサーバ106のコンポーネントの一部または全部を含んでよい。データベースシステムのデータベースサーバは、場合によっては、データの複数のコピーを記憶することができる。たとえば、テーブルが、2つ以上の複数のデータベースサーバにレプリケーションされる場合がある。加えてまたは代替的に、データベースシステム内の情報が、複数のサーバの間に分散され得る。たとえば、第1のデータベースサーバが、第1のテーブルのコピーを保持する場合があり、第2のデータベースサーバが、第2のテーブルのコピーを保持し得る。さらなる実装においては、情報が、データベースサーバの間で区分けされ得る。たとえば、第1のデータベースサーバが、第1のテーブルの第1の部分を保持する場合があり、第2のデータベースサーバが、第1のテーブルの第2の部分を保持する場合がある。
【0050】
データベース動作の要求を実行する際、データベースサーバ106は、データベースシステム内の、またはリモートデータオブジェクトが置かれる外部システムなどの外部システムのその他のデータベースサーバまたはその他の情報ソースにアクセスする必要がある場合がある。通信マネージャ180は、そのような通信を仲介するために使用され得る。たとえば、通信マネージャ180は、データベースサーバ106のコンポーネントからの(または別のデータベースサーバからの)情報の要求を受信およびルーティングし、応答を受信およびルーティングすることができる。
【0051】
データベースサーバ106は、リモートデータソースを含むデータ処理動作を調整するためのコンポーネントを含み得る。特に、データベースサーバ106は、リモートシステムに維持されたデータにアクセスする要求を少なくとも部分的に処理するデータフェデレーションコンポーネント190を含む。その機能を実行する際に、データフェデレーションコンポーネント190は、1つまたは複数のアダプタ192を含むことができ、アダプタは、仮想的なパラメータ化されたデータオブジェクトを生成するのに役立つ、または(リモートシステムの対応するパラメータ化されたデータオブジェクトを使用してアクセスされるデータの要求をリモートシステムに発行するなど)仮想的なパラメータ化されたデータオブジェクトを使用してデータの要求を実行するための情報を取得する際などに、リモートシステムとの通信に使用可能な論理、設定、または接続情報を含み得る。アダプタの例は、ドイツ、WalldorfのSAP SEから入手可能なテクノロジーに実装された「コネクタ(connector)」を含む。さらに、開示される技術は、SAP SEのSmart Data Access(SDA)およびSmart Data Integration(SDI)などのデータフェデレーション技術の基礎となるテクノロジーを使用し得る。
【0052】
例3-更新可能な論理的ポインタを含む例示的な仮想テーブル
図2は、開示される実施形態が実装され得るコンピューティング環境200を示す。図2の基本コンピューティング環境200は、クラウドコンピューティングシステムであることが可能な中央コンピューティングシステム210にアクセスすることができる1つまたは複数のアプリケーション208を含む、開示されるテクノロジーの異なる実施形態に共通であり得るいくつかの特徴を含む。中央コンピューティングシステム210は、モノリシックな(monolithic)/単体の(unitary)システムとして示されているが、特にクラウド環境において、中央コンピューティングシステムは、単一のシステムとして一緒に機能するいくつかのコンピューティングシステムを含み得ることを理解されたい。たとえば、中央コンピューティングシステム210は、アンカーノード(anchor node)および0個以上の非アンカーノード(non-anchor node)を含む複数の「ノード」として実装され得る。中央コンピューティングシステム210は、マスターノードおよび1つまたは複数のワーカーノード(worker node)を含む、より典型的な「分散型」データベースシステムであることも可能である。
【0053】
中央コンピューティングシステム210は、1つまたは複数のリモートデータベースシステム212に記憶されたデータへのアクセスを提供することによってそのように働くことができる。さらに、リモートデータベースシステム212は、1つまたは複数のアプリケーション214によってアクセスされ得る。場合によっては、アプリケーション214は、アプリケーション208でもあり得る。すなわち、一部のアプリケーションは、中央コンピューティングシステム210のデータに(直接)アクセスするだけである場合があり、一部のアプリケーションは、リモートデータベースシステム212のデータにアクセスするだけである場合があり、その他のアプリケーションは、中央コンピューティングシステムとリモートデータベースシステムとの両方のデータにアクセスする場合がある。
【0054】
中央コンピューティングデバイス210は、クエリープロセッサ220を含み得る。クエリープロセッサ220は、クエリーオプティマイザ222およびクエリーエグゼキュータ224を含む複数のコンポーネントを含み得る。クエリーオプティマイザ222は、中央コンピューティングシステム210を使用して実行されるクエリーのクエリー実行計画226を決定する役割を担うことができる。クエリーオプティマイザ222によって生成されるクエリー計画226は、たとえば、クエリーにおいて実行される動作(たとえば、結合、射影)の順序を示す論理計画(logical plan)と、そのような動作を実施するための物理計画(physical plan)との両方を含み得る。クエリーオプティマイザ222によって作成されると、クエリー計画226は、クエリーエグゼキュータ224によって実行され得る。クエリー計画226は、キャッシュされたクエリー計画230としてクエリー計画キャッシュ228に記憶され得る。クエリーが実行のために再び送られるとき、クエリープロセッサ220は、クエリーに関してキャッシュされたクエリー計画230が存在するかどうかを判定することができる。存在する場合、キャッシュされたクエリー計画230が、クエリーエグゼキュータ224によって実行され得る。存在しない場合、クエリー計画226が、クエリーオプティマイザ222によって生成される。場合によっては、キャッシュされたクエリー計画230は、クエリーによって使用されるデータベーススキーマまたは少なくともデータベーススキーマのコンポーネント(たとえば、テーブルまたはビュー)に変更が行われる場合などには、無効にされ得る。
【0055】
データディクショナリ(data dictionary)234(システムカタログとも呼ばれ得る)は、中央コンピューティングシステム210のための1つまたは複数のデータベーススキーマを維持することができる。場合によっては、中央コンピューティングシステム210は、マルチテナント環境を実装することができ、異なるテナントが、異なるデータベーススキーマを持つ場合がある。少なくともいくつかの場合に、少なくとも一部のデータベーススキーマ要素は、複数のデータベーススキーマによって共有され得る。
【0056】
データディクショナリ234は、テーブルまたはビューのスキーマなどの、異なる種類のデータベースオブジェクトの定義(またはスキーマ)を含み得る。以下の検討は、説明を簡単にするためにテーブルを参照するが、その他の種類のデータベースオブジェクト、特に、マテリアライズドビューなどの取り出し可能なデータに関連付けられるデータベースオブジェクトにも適用可能であることを理解されたい。テーブルスキーマは、テーブルの名前、テーブル内の属性(またはカラムもしくはフィールド)の数、属性の名前、属性のデータ型、属性が表示されるべき順序、主キー値、外部キー、その他のデータベースオブジェクトへの関連付け、パーティション情報、またはレプリケーション情報などの情報を含み得る。
【0057】
データディクショナリ234によって維持されるテーブルスキーマは、主に中央コンピューティングシステム210上に維持されるテーブルを表すことができるローカルテーブルスキーマ236を含み得る。データディクショナリ234は、テーブルデータの少なくとも一部が中央コンピューティングシステム210に記憶される(またはたとえデータレイクもしくは別のクラウドサービスに記憶されるなど、中央コンピューティングシステム以外に記憶されるとしても、主に中央コンピューティングシステムのデータベース管理システムによって管理される)テーブルを表すことができる複製テーブルスキーマ238を含み得る。複製テーブルスキーマ238に関連するデータを有するテーブルは、通常、それらのテーブルのデータを、リモートデータベースシステム212のデータストア242のリモートテーブル244などのソーステーブルから定期的に更新させる。
【0058】
レプリケーションは、リモートデータベースシステム212のレプリケーションサービス246または中央コンピューティングシステム210のレプリケーションサービス248の一方または両方を使用して達成され得る。特定の例において、レプリケーションサービスは、すべてドイツ、WalldorfのSAP SEのSmart Data Integration(SDI)サービス、SAP Landscape Transformation Replication Server、SAP Data Services、SAP Replication Server、SAP Event Stream Processor、またはSAP HANA Direct Extractor Connectionであることが可能である。検討されたように、レプリケーションは、リアルタイムレプリケーション技術を使用することができ、またはスナップショット/バッチレプリケーションを使用することができる。
【0059】
場合によっては、リモートデータベースシステム212のデータは、フェデレーション技術を使用するなどして、リモートデータベースシステムからデータをレプリケーションすることなく、中央コンピューティングシステム210によってアクセスされ得る。データディクショナリ234は、リモートデータベースシステム212のリモートテーブル244などのリモートテーブルにマッピングされる仮想テーブルの仮想テーブルスキーマ252を記憶することができる。リモートテーブル244のデータは、ドイツ、WalldorfのSAP SEのSmart Data Accessプロトコルを使用するなどして、フェデレーションサービス256を使用してアクセスされ得る。フェデレーションサービス256は、クエリー動作を、適切なリモートデータベースシステム212によって処理され得るフォーマットに変換する、クエリー動作をリモートデータベースシステムに送信する、クエリー結果を受信する、およびクエリー結果をクエリーエグゼキュータ224に提供する役割を担い得る。
【0060】
データディクショナリ234は、更新可能な論理的ポインタ262を有する更新可能な仮想テーブルスキーマ260を含み得る。更新された仮想テーブルスキーマ260は、任意で、ステータス情報264と関連付けられ得る。テーブルポインタ262は、対応する仮想テーブルスキーマ260のデータに関して、どのテーブルがアクセスされるべきかを特定するために使用される論理的ポインタであることが可能である。たとえば、テーブルポインタ262の状態に応じて、テーブルポインタは、リモートデータベースシステム212のリモートテーブル244、または中央コンピューティングシステム210のデータストア268にある(リモートテーブル244から生成され得る)複製テーブル266を指すことができる。データストア268は、ローカルテーブルスキーマ236によって定義され得るローカルテーブル270のデータを記憶することもできる。
【0061】
テーブルポインタ262は、リモートテーブル244と複製テーブル266との間で変更され得る。場合によっては、ユーザが、テーブルポインタ262によって指されるテーブルを手動で変更することができる。その他の場合、テーブルポインタ262は、定義された条件の検出に応ずるなどして、自動的に変更され得る。
【0062】
ステータス情報264は、仮想テーブルスキーマ260がリモートテーブル244または複製テーブル266に関連付けられていると特定するインジケータを含み得る。ステータス情報264は、複製テーブル266のレプリケーションステータスについての情報も含み得る。たとえば、複製テーブル266を指すようにテーブルポインタ262を変更する要求がなされると、複製テーブルが使用するための準備ができるまで時間がかかる場合がある。ステータス情報264は、レプリケーションプロセスが開始されたかどうか、完了されたかどうか、または複製テーブル266の生成の進捗ステータスを含み得る。
【0063】
更新可能な仮想テーブルスキーマ260への変更と、仮想テーブルスキーマに関連する複製テーブル266の管理とは、仮想テーブルサービス272によって管理され得る。中央コンピューティングシステム210の別個のコンポーネントとして示されるが、仮想テーブルサービス272は、クエリープロセッサ220またはデータディクショナリ234などの、中央コンピューティングシステム210のその他のコンポーネントに組み込まれ得る。
【0064】
クエリーが実行されるとき、クエリーは、リモートデータベースシステム212のデータストア242または中央コンピューティングシステム210のデータストア268の一方または両方からデータを取得するために、クエリーエグゼキュータ224を使用してクエリーを実行することを含め、クエリープロセッサ220によって処理される。クエリー結果は、アプリケーション208に返され得る。クエリー結果は、中央コンピューティングシステム210のキャッシュ278などにキャッシュされることも可能である。キャッシュされた結果は、キャッシュされたビュー280(たとえば、マテリアライズされたクエリー結果(materialized query result))として表され得る。
【0065】
アプリケーション214は、セッションマネージャ286を通じるなどして、リモートデータベースシステム212のデータにアクセスすることができる。アプリケーション214は、リモートテーブル244を修正することができる。更新可能な仮想テーブルスキーマ260のテーブルポインタ262がリモートテーブル244を参照するとき、アプリケーション214によって行われた変更は、リモートテーブルに反映される。テーブルポインタ262が複製テーブル266を参照するとき、アプリケーション214によって行われた変更は、レプリケーションサービス246またはレプリケーションサービス248を使用して複製テーブルに反映され得る。
【0066】
例4-例示的なレプリケーション技術
図3は、リモートシステム304からローカルシステム308にデータをレプリケーションするための従来技術を示す。リモートシステム304は、リモートテーブル312を含む。リモートテーブル312からのデータが、ローカルシステム308の複製テーブル316にレプリケーションされる。
【0067】
リモートテーブル312からのデータは、いくつかの方法で複製テーブル316にレプリケーションされ得る。リアルタイムレプリケーションプロセス320が、変更データキャプチャ(change data capture)またはトリガベースのレプリケーションを含み得る技術を使用するなどして、リモートテーブル312に対して行われた増分データ変更(incremental data change)を、それらの変更が発生するときに複製テーブル316に送信する。例1で述べられたように、リアルタイムレプリケーションは、複製テーブル316がリモートテーブル312に対して最新であることを保証するのを助けるのに有利であるが、実装するには複雑であり、大量のコンピューティングリソースを必要とし得る。
【0068】
図3は、スナップショットレプリケーションプロセス330も示す。スナップショットレプリケーションプロセス330においては、リモートテーブル312のスナップショット334が、定期的に取得される。通常、スナップショット334は、スナップショットが取得された時点のリモートテーブル312のデータのすべてを含む。スナップショットデータ334は、ローカルシステム308に送信され得る。現在の複製テーブル316は、スナップショットデータ334で置き換えられ得る。
【0069】
示されたように、スナップショットは、通常、定期的に取得され、したがって、プロセス330は、定期的レプリケーションと呼ばれ得る。レプリケーションが定期的であるので、新しいスナップショット334は、遅延期間340の後に取得される。遅延期間340は、スケジュール、イベント、または手動更新要求間の遅延に応じた遅延であり得る。例1で述べられたように、スナップショットレプリケーションは、実装するのがより簡単であり得、リアルタイムレプリケーションよりもリソースを消費しないことがあり得るが、遅延期間340の存在は、ローカルシステム308におけるクエリーに、リモートテーブル312の現在のバージョンと比較して古いデータを取り出させ得る。
【0070】
例5-更新チェック付きの例示的なスナップショットレプリケーション
図4は、本開示によるスナップショットレプリケーションプロセスを示す。図3と同様に、図4は、リモートテーブル408を有するリモートシステム404と、特定の時点のリモートテーブル408のスナップショットであるローカルの複製テーブル416を有するローカルシステム412とを含む。スナップショットレプリケーションプロセス420が、リモートテーブル408から複製テーブル416にデータをレプリケーションするために使用される。
【0071】
図4は、スナップショットレプリケーションプロセス420の詳細を示す。スナップショットレプリケーションプロセス420は、プロセスをさらに進行させる特定のイベントが発生したかどうかが判定される424において開始し得る。イベントの例は、ユーザもしくはアプリケーションプロセスからなどの、ローカルテーブル416がリモートテーブル408のより新しいスナップショットで更新されるべきかどうかを判定する要求、特定の日付/時間トリガの特定のインスタンス、もしくは(スナップショットが更新されるべきかどうかを1時間ごとに判定するためなどの)スケジュールに従った時間の経過などのスケジュールイベント、ローカルテーブル416を含むクエリーの受信、またはリモートテーブル408のデータが変わったというインジケーションであることが可能である。
【0072】
イベントが発生しなかったと424において判定される場合、プロセス420は、イベントが発生したと判定されるまで424に戻ることができる。イベントが発生したと424において判定される場合、プロセス420は、428に進むことができる。428において、複製テーブル416のデータがリモートテーブル408のデータとまだ一致しているかどうかが判定される。リモートテーブル408と複製テーブル416との両方の実際のデータの比較を実行することは、データをコピーし、データを送信し、データを比較するために必要とされるリソースに関して高価であり、したがって、単純にスナップショットの更新を実行する方が効率的な場合がある。したがって、428における比較は、通常、リモートテーブル408および複製テーブル416についての情報を考慮するが、両テーブルのデータのすべては比較しない。428においてどのような種類のデータが比較されてよいかについての詳細は、例7で検討される。
【0073】
少なくとも比較基準に基づいて、複製テーブル416がリモートテーブル408と一致していると428において判定される場合、プロセス420は、424に戻ることができる。複製テーブル416がリモートテーブル408と一致していないと428において判定される場合、432において、テーブルのコンテンツが同期され得る。432においてコンテンツを同期させることは、複製テーブル416のデータをリモートテーブル408のコンテンツの新しいスナップショットからのデータで置き換えることを含み得る。
【0074】
任意で、440において、リモートテーブル408のメタデータ、複製テーブル416のメタデータ、または両方のテーブルのメタデータが、更新され得る。440においてメタデータを更新することは、428の比較のために使用される値を更新することを含み得る。たとえば、(スナップショット時のリモートテーブル408のメタデータに対応する)複製テーブル416の新しいハッシュ値、最終修正日、テーブルサイズ、または統計のセットが、記憶され得る。
【0075】
例6-更新チェックおよび任意のカスタマイズされた処理付きの例示的なクエリー処理
例1で説明されたように、場合によっては、ローカルの複製テーブルへのアクセスを含むクエリー要求は、図4のプロセス420のイベント424に対応するような、特定の基準に従ってスナップショットの複製が最新であるかどうかを判定するためのチェックをトリガすることができる。通常、変更が検出されない場合、クエリーは、現在のスナップショットの複製を使用して実行され得る。しかし、スナップショットの複製が古いと判定される場合は、異なるプロセスが実施され得る。
【0076】
スナップショットの複製が古いと判定される場合、クエリーは、たとえクエリーによってアクセスされるデータの一部が古い可能性があるとしても、現在のスナップショットの複製を使用して実行され得る。別のオプションとして、スナップショットの複製が古いと判定される場合、クエリーは、拒否されることが可能であるか、またはスナップショットの更新の完了までキューに入れられることが可能である。所与の挙動がシステムに「ハードコードされる」ことが可能であり、またはデフォルトの挙動が指定されることが可能であるが、デフォルトの挙動は、選択的にオーバーライドされ得る。
【0077】
特定の例において、特定のクエリーは、所望の挙動を直接指定することができる。すなわち、クエリーは、クエリーエグゼキュータまたはクエリーオプティマイザにどのような挙動が望ましいかを示すキーワードなどの「ヒント」を含み得る。クエリーヒントは、たとえデータがリモートテーブルと比較して古い可能性があるとしても、クエリーがスナップショットの複製の現在のバージョンに対して遅延なく実行されるべきであることを示し得る。クエリーヒントは、その代わりに、更新スナップショットが取得されるまでクエリー処理が延期されるべきであることを示し得る。さらなる例において、クエリーヒントは、データフェデレーション技術を使用するなどして、スナップショットの複製の代わりにリモートテーブルを使用してクエリーが実行されるべきであることを示すために使用され得る。さらに別の例において、クエリーヒントは、スナップショットが最新でない場合、失敗メッセージが返されるべきであると指定し得る。
【0078】
図5は、デフォルトの動作に基づいて、またはクエリーヒントが与えられる場合にはデフォルト以外の挙動を使用して、クエリーエグゼキュータ514がクエリー504を実行する例示的なプロセス520を示す。クエリーエグゼキュータによって実行されるものとして説明されるが、プロセス520の少なくとも一部の動作は、クエリーオプティマイザによって実行され得る。
【0079】
524において、クエリーが受信される。528において、クエリーが複製テーブルにアクセスすると判定される。532において、複製テーブルがリモートテーブルと比べて最新であるかどうかを判定するためのチェックが実行される。最新である場合、クエリーは、536において現在の複製テーブルを使用して実行され、プロセス520は、540において終了することができる。
【0080】
複製テーブルが最新でないと532において判定される場合、更新されたスナップショットが取得されるまで待つというデフォルトの挙動ではなく、クエリーが複製テーブルの現在のバージョンに対して実行されるべきであることを示すヒント506をクエリー504が含むかどうかを判定するためのチェックが、544において実行される。クエリー504がヒント506を含むと544において判定される場合、クエリーは、既存の複製を使用して548において処理され、プロセス520は、540において終了することができる。
【0081】
クエリー504がヒント506を含まないと544において判定される場合、ローカルの複製テーブルが古い場合にクエリーがリモートテーブルに対して実行されるべきであることを示すヒント508をクエリーが含むかどうかが、552において判定される。ヒント508が存在する場合、クエリーは、556においてリモートテーブルを使用して実行され、プロセス520は、540において終了することができる。
【0082】
クエリー504がヒント508を含まないと552において判定される場合、ローカルの複製テーブルが更新されるまで、クエリーは、560においてキューに入れられ得る。ローカルの複製テーブルが更新されると、クエリー504は、564において実行されることが可能であり、プロセス520は、540において終了することができる。
【0083】
プロセス520は、開示されるテクノロジーがどのように使用され得るかの一例に過ぎないことに留意されたい。その他の実装においては、ヒント506またはヒント508のみに関するチェックが実施され、データベースシステムは、ヒント506またはヒント508のみをサポートする場合がある。同様に、プロセス520において、デフォルトの挙動は、複製テーブルのために更新されたスナップショットが取得されるまで、クエリーの実行を延期することである。しかし、プロセスは、現在の古い複製を使用してクエリーを実行するデフォルトの挙動を有することができ、そうではなく、更新まで実行が延期されるべきかどうか、またはリモートテーブルを使用して、フェデレーションされたクエリーの実行が使用されるべきかどうかを判定するために、ヒントが使用され得る。別のプロセスは、ローカルの複製テーブルが古い場合、リモートテーブルを使用するフェデレーションされたクエリーの実行を使用するデフォルトの挙動を有することができ、そうではなく、更新スナップショットが受信された後にローカルシステムで実行が行われる可能性があるかどうか、または現在の、ただし古い複製テーブルを使用してローカルシステムでクエリーが実行されるべきかどうかを判定するために、ヒントが使用され得る。
【0084】
例7-2つのデータオブジェクトが異なるかどうかを判定するか、または更新分析プロセスをトリガするための例示的な要素
図6は、データが複製テーブルにレプリケーションされるリモートテーブルと比較して複製テーブルが最新であるかどうかを判定する際に使用され得る様々なテーブルプロパティを示す。図6は、リモートテーブル606を持つリモートシステム604と、リモートテーブルのスナップショットに対応する複製テーブル610を持つローカルシステム608とを含む。
【0085】
リモートテーブル606は、コンテンツ620を有するものとして示されている。コンテンツ620は、1つまたは複数のセマンティック属性(semantic attribute)624および1つまたは複数の同期属性626を含み得る。セマンティック属性624は、リモートテーブル606のエントリとして表される特定のエンティティ「についての」データを提供する。たとえば、リモートテーブル606のエントリは、従業員、顧客、または販売取引に対応する可能性がある。従業員の場合、セマンティック属性624は、名前、従業員識別番号、住所、肩書き、または賃金レート(payrate)などの属性を含む可能性がある。
【0086】
同期属性626は、リモートテーブル606のデータが複製テーブル610のデータと異なるかどうかを判定するために特に使用されるまたは使用可能な属性である。同期属性626は、セマンティック属性624であり得るが、そうであるとは限らない。同期属性626の特定の例は、テーブルの特定の行が最後にいつ追加、削除、または修正されたかを示すタイムスタンプなどのタイムスタンプである。複製テーブル610のコンテンツ640は、セマンティック属性624および626に対応するセマンティック属性644および同期属性646を含み得るが、複製テーブルがリモートテーブルよりも古い場合、属性の値は、テーブル606、610間で異なる場合がある。複製テーブル610は、同期属性644として最終修正日を含むことができ、値は、最新のスナップショットの時点のリモートテーブル606の最終修正日に対応する。したがって、複製テーブル610が古いかどうかを判定することは、リモートテーブル606に問い合わせて、複製テーブル610のタイムスタンプ同期属性646に反映された最新の値よりも後のタイムスタンプ同期属性626の値を有するレコードをリモートテーブルが含むかどうかを判定することによって実行され得る。
【0087】
同期属性626として「最終修正」日を持つのではなく、リモートテーブル606の全体的な最終修正日632aが、リモートテーブルに関連付けられ、メタデータ要素632(632a~632gとして示される)を有するメタデータ630に記憶され得る。複製テーブル608は、メタデータ要素652(メタデータ要素652a~652gとして示される)を有するメタデータ650を含み、最新のスナップショット中のリモートテーブル606に関連する最終修正日652aを含み得る。リモートテーブル606が複製テーブル610と比べて変わったかどうかをチェックする要求が行われるときは、最終修正日632aがメタデータ650の最終修正日652aと同じかどうかを判定するために、メタデータ630が問い合わされ得る。値が同じでない場合、更新された複製が取得され得る。
【0088】
上述のように、一部のシナリオにおいて、複製テーブル610のために新しいスナップショットが取得されるべきかどうかを判定することは、リモートテーブル606全体よりも細かく実行され得る。たとえば、リモートテーブル606の一部のセマンティック属性624に対する変更は、その他のセマンティック属性624よりも注目される場合がある。この場合、複製テーブル610の対応するセマンティック属性644と比較して、特に注目されるセマンティック属性624が変更されたときにスナップショットを更新することが望ましい場合がある。したがって、メタデータ630は、(リモートテーブル606の特定のカラムなどの)特定のセマンティック属性624の最終修正日632bを含むことができ、複製テーブル610のメタデータ650は、対応するセマンティック属性646の最終修正日652bを含むことができる。そのとき、複製テーブル610が最新であるかどうかの判定は、所与のセマンティック属性624の最終修正日632bが対応するセマンティック属性644の最終修正日652bと同じであるかどうかを判定することによって実行され得る。
【0089】
メタデータ630に反映されたリモートテーブル606のテーブル統計632cが、リモートテーブルが複製テーブル610のコンテンツと異なるコンテンツを有する可能性があるときを判定するために使用されることも可能である。メタデータ630が現在の統計を記憶する一方、複製テーブル610のメタデータ650は、最後のスナップショットの更新が行われたときにメタデータ630からコピーされた統計652cを含む。任意の好適な種類のテーブル統計632cが使用され得るが、テーブル統計の例は、以下を含む。
テーブルサイズ: テーブルデータ用のメモリと、インデックスなどの構造またはシステム管理用に使用されるメモリとを含み得るメモリ内のテーブルのサイズ。
レコード数: テーブル内のレコード(行)の数。平均レコード長も、追跡され得る。
カラム統計: 異なる値の数、最大値および最小値、最頻値、ヌルの数、ならびに平均データサイズなどの、テーブルの各カラム(属性)に記憶されたデータについての情報。
パーティション情報: パーティションの数、各パーティション内の行もしくはカラムの数、または各パーティションの全体サイズ(メモリまたはディスク)を含み得る、テーブルがどのようにパーティショニングされているかについての情報。
インデックス統計: インデックス識別子、インデックスサイズ、およびインデックス内の葉ノードの数などの情報。
ヒストグラム: カラム値の分布の統計についての情報。
ディスク上のサイズ/クラスタリング情報: 特定のテーブルのディスク上のサイズについての情報、および似たカラム値を有するどの行がディスク上で互いに近くに記憶されているかについての情報。
【0090】
特定のテーブル統計632cは、リモートシステム604に依存する場合があることに注意されたい。たとえば、特にインデックスまたはシステム管理のためのメモリ使用についての情報は、リモートシステム604の実装に固有であることが可能であり、たとえ複製テーブル610のデータがリモートテーブル606のデータと同一であっても、ローカルシステム608は、同じメモリの使い方をしない場合がある。しかし、これは、比較がリモートシステム604におけるリモートテーブル606の2つの状態間であり、複製テーブル610の実際の統計とリモートテーブル606の統計との間ではないので、統計632cが複製テーブル610が古い可能性があるかどうかを判定するために使用されることを妨げない。言い換えると、そのようなメタデータ650は、スナップショット時のメタデータ630に対応する。
【0091】
リモートテーブル606のコンテンツは、その他の方法でテーブルの状態の比較に使用され得る。たとえば、リモートテーブル606のコンテンツ(すなわち、リモートテーブルの定義に従ってリモートテーブルに記憶された実際の値)は、ハッシュ値632dを生成するためのハッシュアルゴリズムへの入力として提供され得る。このハッシュ値632dは、ローカルシステム608に提供され、メタデータ650にハッシュ値652dとして記憶され得る。複製テーブル610がリモートテーブル606と同じコンテンツを有するかどうかが判定されるとき、リモートテーブルの現在のハッシュ値632dが、複製テーブルのために使用された最新のスナップショットの複製のハッシュ値652dと比較され得る。
【0092】
リモートテーブル606の現在のハッシュ値632は、特定の実装の判断に応じて、様々な時点で決定され(計算され)得る。たとえば、ハッシュ値632dは、更新されたスナップショットの複製が取得されるべきかどうかをチェックするためのプロセスの一部など、ローカルシステム608の要求に応じて決定され得る。その他の場合、ハッシュ値632dは、リモートテーブル606に変更が行われるときを含め、リモートシステム604において定期的に更新され得るが、それは、頻繁に変わるデータを持つテーブルに関して、大きなオーバーヘッドをともなう可能性がある。一方、リモートテーブルが実際には変わったが、更新されたハッシュ値がまだ計算されていない場合に、複製テーブル610がリモートテーブル606と異ならないという「偽陰性(false negative)」インジケーションのリスクを生じ得るが、ハッシュ値632dの定期的な更新は、十分である場合がある。
【0093】
検討は、ハッシュアルゴリズムおよびハッシュ関数の例を用いるが、チェックサムを使用するなど、より計算コストの低い技術を含む、同様の種類の技術が使用され得る。ハッシュ値と同様に、少なくともいくつかの場合に、リモートテーブル606のコンテンツ全体を使用してチェックサムが計算され得る。ハッシュ値およびチェックサムは、ダイジェストまたはダイジェスト値のより広いカテゴリの例であり、その他の種類のダイジェストも、開示される技術で使用されてよい。さらに、ハッシュ値およびチェックサムは、テーブルで表されたテーブルのコンテンツに対して計算され得るが、任意で、テーブルのコンテンツのバイナリ表現に対してなど、別の方法で計算され得る。
【0094】
メタデータ630またはメタデータ650の一方または両方は、それぞれ、リモートシステム604の同期論理670またはローカルシステム608の同期論理672によって使用され得る同期スケジュール632e、652eを含むことができる。より典型的には、メタデータ650が、同期スケジュール652eを含み、更新されたスナップショットの複製が取得されるべきかどうかを判定するためのチェックが、スケジュールに従って実行される。別の実装において、リモートシステム604は、メタデータ630のスケジュール632eに従うなどして、更新スナップショットの複製をローカルシステム608に定期的に送信することができる。スケジュールは、新しいスナップショットの複製が特定の日付/時間に取得されるべきかどうかのチェックが(1時間ごとまたは毎日など)定期的なスケジュールに従って行われるべきであると指定する、または「~以前」日付または「~以降」日付の一方もしくは両方を使用するなどして、指定された枠内のチェックを実行するなど、様々な方法で表現され得る。同期(またはより詳細には、同期が実行されるべきかどうかを判定するためのチェック)は、メタデータ630、650の最終同期日632f、652fに基づくことを含め、要求に応じて実行されることも可能である。たとえば、コマンドは、「synchronize if LAST_SYNC_DATE > 1 day」であることが可能である。
【0095】
メタデータ630またはメタデータ650は、トリガ632g、652gも含み得る。この場合、「トリガ」は、トリガベースの更新またはレプリケーションなどのトリガベースのデータベースプロセスを指していない。むしろ、「トリガ」は、複製テーブル610がリモートテーブル606と一致しているかどうかの判定を行わせる何らかのその他のイベントを指す。同期スケジュール、または複製テーブル610に対する動作を含むクエリーが受信されるときにチェックを実行することは、トリガ632g、652gの例と考えられる可能性があるが、それらは、この検討においては分けられ、列挙され、説明された。トリガ632g、652gのその他の例は、閾値の数の変更がリモートテーブル606に対して行われること、または複製テーブル610にアクセスする閾値の数のクエリーが受信されることである可能性がある。そのようなトリガ632g、652gは、静的なスケジュールと比較して、複製の更新が実行されるべきかどうかを判定することに動的側面を導入することができ、それは、リモートテーブル606に対するより多くの更新がある(複製テーブル610がより大幅に古くなっている可能性があることを示す)場合、または複製テーブルに関するより盛んな活動がある(複製テーブルがより高い関心を持たれ、したがって、「コールド」データと比較して更新チェックに関して優先される可能性があることを示す)場合、更新チェックが頻繁に発生し得るからである。
【0096】
この例7を含む本明細書は、概して、コンテンツが複製テーブル610と異なると判定されるときに、リモートテーブル606のコンテンツ全体のコピーを送信することを説明するが、その他の場合には、最後の複製のスナップショットが取得されてから追加されたデータなど、データの一部が送信され得る。特定の例として、テーブルが、追加専用(append only)として指定され得る。これらの種類のデータに関しては、最後の複製のスナップショットの日付後に追加された行のみが、ローカルシステム608に送信される必要がある。
【0097】
例8-例示的な動作
図7は、現在のスナップショットの複製がリモートデータオブジェクトと比較して古いと判定した後にスナップショットの複製の更新を実行するプロセス700の流れ図である。705では、ローカルデータソースにおいて、第1のデータオブジェクトタイプの第1のインスタンスが作成される。リモートデータソースから、710において、第1のデータオブジェクトタイプの第1のインスタンスのために、データの第1のセットが受信される。データの第1のセットは、リモートデータソースのリモートデータオブジェクトから抽出されたデータである。715において、データが、第1のオブジェクトタイプの第1のインスタンスに記憶される。720において、第1のオブジェクトタイプの第1のインスタンスがリモートデータオブジェクトと比較して古いと判定される。725において、第1のデータオブジェクトタイプの第1のインスタンスのために、データの第2のセットが受信される。データの第2のセットは、リモートデータオブジェクトの更新されたデータである。730において、データの第1のセットの少なくとも一部が、第1のオブジェクトタイプの第1のインスタンス内でデータの第2のセットのデータで置き換えられる。
【0098】
例9-コンピューティングシステム
図8は、説明された発明が実装されてよい好適なコンピューティングシステム800の一般化された例を示す。発明は、多様な汎用または専用コンピューティングシステムにおいて実施される場合があるので、コンピューティングシステム800は、本開示の使用または機能の範囲に関するいかなる限定も示唆するように意図されていない。
【0099】
図8を参照すると、コンピューティングシステム800は、1つまたは複数の処理ユニット810、815およびメモリ820、825を含む。図8において、この基本構成830は、破線内に含まれている。処理ユニット810、815は、例1~8において説明されたデータベース環境および関連する方法を実装するためなどのコンピュータ実行可能命令を実行する。処理ユニットは、汎用の中央演算処理装置(CPU)、特定用途向け集積回路(ASIC)内のプロセッサ、または任意のその他の種類のプロセッサであることが可能である。マルチプロセッシングシステムにおいては、処理能力を高めるために、複数の処理ユニットが、コンピュータ実行可能命令を実行する。たとえば、図8は、中央演算処理装置810と、グラフィックス処理ユニットまたは補助処理ユニット815とを示す。有形のメモリ820、825は、処理ユニット810、815によってアクセス可能な揮発性メモリ(たとえば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(たとえば、ROM、EEPROM、フラッシュメモリなど)、またはそれら2つの何らかの組合せであってよい。メモリ820、825は、処理ユニット810、815による実行に好適なコンピュータ実行可能命令の形態で、本明細書において説明される1つまたは複数の発明を実装するソフトウェア880を記憶する。
【0100】
コンピューティングシステム800は、追加的な特徴を有する場合がある。たとえば、コンピューティングシステム800は、記憶装置840、1つまたは複数の入力デバイス850、1つまたは複数の出力デバイス860、および1つまたは複数の通信接続870を含む。バス、コントローラ、またはネットワークなどの相互接続メカニズム(図示せず)が、コンピューティングシステム800のコンポーネントを相互に接続する。概して、オペレーティングシステムのソフトウェア(図示せず)が、コンピューティングシステム800において実行されるその他のソフトウェアのための動作環境を提供し、コンピューティングシステム800のコンポーネントの活動を調整する。
【0101】
有形の記憶装置840は、取り外し可能または取り外し不可能であってよく、磁気ディスク、磁気テープもしくはカセット、CD-ROM、DVD、または非一時的な方法で情報を記憶するために使用されることが可能であり、コンピューティングシステム800内でアクセスされることが可能な任意のその他の媒体を含む。記憶装置840は、本明細書において説明される1つまたは複数の発明を実装するソフトウェア880の命令を記憶する。
【0102】
入力デバイス850は、キーボード、マウス、ペン、もしくはトラックボールなどのタッチ入力デバイス、音声入力デバイス、スキャンデバイス、またはコンピューティングシステム800に入力を与える別のデバイスであってよい。出力デバイス860は、ディスプレイ、プリンタ、スピーカ、CDライタ、またはコンピューティングシステム800からの出力を提供する別のデバイスであってよい。
【0103】
通信接続870は、別のデータベースサーバなどの別のコンピューティングエンティティとの通信媒体を介した通信を可能にする。通信媒体は、コンピュータ実行可能命令、音声もしくは映像の入力もしくは出力、またはその他のデータなどの情報を、変調されたデータ信号内で運ぶ。変調されたデータ信号は、その信号の特性のうちの1つまたは複数を、信号中に情報を符号化するような方法で設定または変更させる信号である。限定ではなく例として、通信媒体は、電気、光、RF、またはその他のキャリアを使用し得る。
【0104】
発明は、プログラムモジュールに含まれるコンピュータ実行可能命令などのコンピュータ実行可能命令が、コンピューティングシステムにおいて、ターゲットの実プロセッサまたは仮想プロセッサ上で実行される広い文脈で説明され得る。概して、プログラムモジュールまたはコンポーネントは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含む。プログラムモジュールの機能は、様々な実施形態において希望に応じて組み合わされるかまたはプログラムモジュールの間で分割されてよい。プログラムモジュールのコンピュータ実行可能命令は、ローカルのまたは分散型コンピューティングシステム内で実行されてよい。
【0105】
用語「システム」および「デバイス」は、本明細書においては交換可能なように使用される。文脈がそうでないことをはっきりと示さない限り、どちらの用語も、コンピューティングシステムまたはコンピューティングデバイスの種類に対するいかなる限定も示唆しない。概して、コンピューティングシステムまたはコンピューティングデバイスは、ローカルまたは分散型であることが可能であり、専用ハードウェアおよび/または汎用ハードウェアの、本明細書において説明される機能を実装するソフトウェアとの任意の組合せを含むことが可能である。
【0106】
提示のために、詳細な説明は、コンピューティングシステムにおけるコンピュータの動作を説明するために、「判定する」または「使用する」のような用語を使用する。これらの用語は、コンピュータによって実行される動作の高レベルの抽象化であり、人間によって行われる行為と混同されるべきでない。これらの用語に対応する実際のコンピュータの動作は、実装に応じて変わる。
【0107】
例10-クラウドコンピューティング環境
図9は、説明されるテクノロジーが実装され得る例示的なクラウドコンピューティング環境900を示す。クラウドコンピューティング環境900は、クラウドコンピューティングサービス910を含む。クラウドコンピューティングサービス910は、コンピュータサーバ、データ記憶リポジトリ、ネットワーキングリソースなどの様々な種類のクラウドコンピューティングリソースを含み得る。クラウドコンピューティングサービス910は、中央に置かれる(たとえば、会社または組織のデータセンターによって提供される)か、または分散される(たとえば、異なるデータセンターなどの異なる場所に置かれた、および/または異なる都市もしくは国に置かれた様々なコンピューティングリソースによって提供される)ことが可能である。
クラウドコンピューティングサービス910は、コンピューティングデバイス920、922、および924などの様々な種類のコンピューティングデバイス(たとえば、クライアントコンピューティングデバイス)によって利用される。たとえば、コンピューティングデバイス(たとえば、920、922、および924)は、コンピュータ(たとえば、デスクトップまたはラップトップコンピュータ)、モバイルデバイス(たとえば、タブレットコンピュータまたはスマートフォン)、またはその他の種類のコンピューティングデバイスであることが可能である。たとえば、コンピューティングデバイス(たとえば、920、922、および924)は、コンピューティングオペレータ(computing operator)(たとえば、データ処理、データ記憶装置など)を実行するためにクラウドコンピューティングサービス910を利用することができる。
【0108】
例11-実装
開示される方法のうちの一部の動作は、簡便な提示のために特定の連続的な順序で説明されているが、本明細書に記載された特定の文言によって特定の順序が必要とされない限り、説明のこのような方法は並べ替えを包含することを理解されたい。たとえば、順に説明される動作は、場合によっては並べ替えられるか、または同時に実行されてよい。さらに、簡単にするため、添付の図は、開示される方法がその他の方法と併せて使用され得る様々な方法を示さない場合がある。
【0109】
開示される方法のいずれも、有形の非一時的コンピュータ可読記憶媒体などの1つまたは複数のコンピュータ可読記憶媒体に記憶され、コンピューティングデバイス(たとえば、コンピューティングハードウェアを含むスマートフォンまたはその他のモバイルデバイスを含む任意の利用可能なコンピューティングデバイス)上で実行されるコンピュータ実行可能命令またはコンピュータプログラム製品として実装され得る。有形のコンピュータ可読記憶媒体は、コンピューティング環境内でアクセスされ得る任意の利用可能な有形の媒体(たとえば、DVDもしくはCDなどの1つもしくは複数の光媒体ディスク、(DRAMまたはSRAMなどの)揮発性メモリコンポーネント、または(フラッシュメモリまたはハードドライブなどの)不揮発性メモリコンポーネント)である。例として、図8を参照すると、コンピュータ可読記憶媒体は、メモリ820および825ならびに記憶装置840を含む。コンピュータ可読記憶媒体という用語は、信号および搬送波を含まない。さらに、コンピュータ可読記憶媒体という用語は、通信接続(たとえば、870)を含まない。
【0110】
開示される技術を実施するためのコンピュータ実行可能命令のいずれも、および開示される実施形態の実現において作成され、使用されるいずれのデータも、1つまたは複数のコンピュータ可読記憶媒体に記憶され得る。コンピュータ実行可能命令は、たとえば、専用のソフトウェアアプリケーション、またはウェブブラウザもしくは(リモートコンピューティングアプリケーションなどの)その他のソフトウェアアプリケーションを介してアクセスもしくはダウンロードされるソフトウェアアプリケーションの一部であることが可能である。そのようなソフトウェアは、たとえば、単一のローカルコンピュータ(たとえば、任意の好適な市販のコンピュータ)上で、または1つもしくは複数のネットワークコンピュータを使用する(たとえば、インターネット、広域ネットワーク、ローカルエリアネットワーク、(クラウドコンピューティングネットワークなどの)クライアントサーバネットワーク、またはその他のそのようなネットワークを介した)ネットワーク環境において実行され得る。
【0111】
明瞭にするために、ソフトウェアベースの実装の特定の選択された態様のみが説明される。当技術分野においてよく知られているその他の詳細は、省略される。たとえば、開示されるテクノロジーは、いかなる特定のコンピュータ言語またはプログラムにも限定されないことを理解されたい。たとえば、開示されるテクノロジーは、C++、Java、Perl、JavaScript、Python、Ruby、ABAP、構造化照会言語、Adobe Flash、もしくは任意のその他の好適なプログラミング言語、または一部の例においては、htmlもしくはXMLなどのマークアップ言語、または好適なプログラミング言語とマークアップ言語との組合せで記述されたソフトウェアによって実装され得る。同様に、開示されるテクノロジーは、いかなる特定のコンピュータまたはハードウェアの種類にも限定されない。好適なコンピュータおよびハードウェアの特定の詳細は、よく知られており、本開示において詳述される必要はない。
【0112】
さらに、(たとえば、開示される方法のいずれかをコンピュータに実行させるためのコンピュータ実行可能命令を含む)ソフトウェアベースの実施形態のいずれも、好適な通信手段を通じてアップロードされるか、ダウンロードされるか、またはリモートでアクセスされ得る。そのような好適な通信手段は、たとえば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、(光ファイバケーブルを含む)ケーブル、磁気通信、(RF、マイクロ波、および赤外線通信を含む)電磁通信、電子通信、またはその他のそのような通信手段を含む。
【0113】
開示される方法、装置、およびシステムは、いかなる形でも限定的であるものと解釈されるべきでない。そうではなく、本開示は、単独で、ならびに互いの様々な組合せおよび部分的組合せで、様々な開示される実施形態のすべての新規の自明でない特徴および態様を対象とする。開示される方法、装置、およびシステムは、いかなる特定の態様もしくは特徴またはそれらの組合せにも限定されず、開示される実施形態は、いずれの1つもしくは複数の特定の利点が存在することも、または問題が解決されることも要求しない。
【0114】
いずれの例のテクノロジーも、その他の例のいずれか1つまたは複数において説明されたテクノロジーと組み合わされ得る。開示されるテクノロジーの原理が適用されてよい多くの可能な実施形態を考慮すると、示される実施形態は、開示されるテクノロジーの例であり、開示されるテクノロジーの範囲に対する限定と捉えられるべきでないことを認識されたい。むしろ、開示されるテクノロジーの範囲は、以下の請求項の範囲および精神によって包含されることを含む。
【符号の説明】
【0115】
100 データベース環境
104 クライアント
106 データベースサーバ
108 セッションマネージャコンポーネント
110 アプリケーションマネージャコンポーネント
112 クエリーインターフェース
114 トランザクションマネージャコンポーネント
116 照会言語プロセッサ
120 照会言語エグゼキュータ
124 スレッドプール
128 照会言語パーサ
132 照会言語オプティマイザ
136 計画キャッシュ
140 クエリープロセッサ
142 OLAPエンジン
144 結合エンジン
146 属性エンジン
148 計算エンジン
154 ジョブエグゼキュータコンポーネント
156 スレッドプール
162 行ストア
164 列ストア
168 パーシステンス層
172 永続化データ
180 通信マネージャコンポーネント
190 データフェデレーションコンポーネント
192 アダプタ
200 コンピューティング環境
208 アプリケーション
210 中央コンピューティングシステム
212 リモートデータベースシステム
214 アプリケーション
220 クエリープロセッサ
222 クエリーオプティマイザ
224 クエリーエグゼキュータ
226 クエリー実行計画
228 クエリー計画キャッシュ
230 キャッシュされたクエリー計画
234 データディクショナリ
236 ローカルテーブルスキーマ
238 複製テーブルスキーマ
242 データストア
244 リモートテーブル
246 レプリケーションサービス
248 レプリケーションサービス
252 仮想テーブルスキーマ
256 フェデレーションサービス
260 更新可能な仮想テーブルスキーマ
262 論理的ポインタ、テーブルポインタ
264 ステータス情報
266 複製テーブル
268 データストア
270 ローカルテーブル
272 仮想テーブルサービス
278 キャッシュ
280 キャッシュされたビュー
286 セッションマネージャ
304 リモートシステム
308 ローカルシステム
312 リモートテーブル
316 複製テーブル
320 リアルタイムレプリケーションプロセス
330 スナップショットレプリケーションプロセス
340 遅延期間
334 スナップショット、スナップショットデータ
404 リモートシステム
408 リモートテーブル
412 ローカルシステム
416 複製テーブル
420 スナップショットレプリケーションプロセス
504 クエリー
506 ヒント
508 ヒント
514 クエリーエグゼキュータ
520 プロセス
604 リモートシステム
606 リモートテーブル
608 ローカルシステム
610 複製テーブル
620 コンテンツ
624 セマンティック属性
626 同期属性
630 メタデータ
632 メタデータ要素
632a 全体的な最終修正日
632b 最終修正日
632c テーブル統計
632d ハッシュ値
632e 同期スケジュール
632f 最終同期日
632g トリガ
640 コンテンツ
644 セマンティック属性
646 同期属性
650 メタデータ
652 メタデータ要素
652a 最終修正日
652b 最終修正日
652c 統計
652d ハッシュ値
652e 同期スケジュール
652f 最終同期日
652g トリガ
670 同期論理
672 同期論理
700 プロセス
800 コンピューティングシステム
810 処理ユニット、中央演算処理装置
815 処理ユニット、グラフィックス処理ユニット、補助処理ユニット
820 メモリ
825 メモリ
830 基本構成
840 記憶装置
850 入力デバイス
860 出力デバイス
870 通信接続
880 ソフトウェア
900 クラウドコンピューティング環境
910 クラウドコンピューティングサービス
920 コンピューティングデバイス
922 コンピューティングデバイス
924 コンピューティングデバイス
図1
図2
図3
図4
図5
図6
図7
図8
図9
【外国語明細書】