記事
Toshihiko Minamoto · 2021年9月28日 3m read

DSTIMEでデータを同期する

Cachéでのデータ同期については、オブジェクトとテーブルを同期させるさまざまな方法があります。
データベースレベルでは、シャドーイングまたはミラーリングを使用できます。 

これは非常によく機能し、データの一部分だけを同期する必要がある場合には、
グローバルマッピングを使用してより小さなピースにデータを分割することができます。
または、クラス/テーブルレベルで双方向の同期が必要な場合には、オブジェクト同期機能を使用することができます。


これらすべての優れた機能には次のような制限があります。
Caché/IRISからCaché/IRISにしか機能しません。

外部のデータベースにデータを同期する必要がある場合には、ほかのソリューションが必要です。

このソリューションは、かなり以前からCaché/IRISに提供されており、非常に良く機能します。
[^OBJ.DSTIME](https://docs.intersystems.com/ens20181j/csp/docbook/DocBook.UI.Page.cls?...)で解決です。

これは、Deep Seeとのデータ同期を可能にするために構築されました。
Modified,New,Deleted
をシグナルすることで、オブジェクト/テーブルの変更に関する非常に単純なジャーナルを維持します。 これはDeep Seeだけでなく、あらゆる種類のデータ同期でも有用です。

グローバル ^OBJ.DSTIMEにはこのほかに2つの機能があります。

  • 永続クラスの%SYSTEM.DSTIMEにラップされているため、通常のSQLテーブルとして変更を選択するために使用することもできます。  
  • 同期されたジャンクの制御を可能にするバージョンID(DSTIMEという名前)を維持します。            - 最後のバージョンをフェッチする            - バージョンを増加する            - フェッチされたバージョンに基づいて、必要な場所に変更をアップロードする

純粋なSQLで同期を行う場合、SQLを理解するあらゆるデータベースをターゲットとすることができます。

クラス %SYSTEM.DSTIME を拡張して、こちらに例を置きました。SAMPLESで試すことができます。
 

これはCaché 2018.1.3とIRIS 2020.2で機能するコーディングの例です。
新しいバージョンと同期されません。
また、InterSystemsのサポートによるサービスはありません

 

00
2 0 0 22
Log in or sign up to continue