このブログ記事では、データストア内の変更を管理・追跡する方法に革命をもたらす強力な方法をご紹介します。ここではデータの変更監視を合理化するために設計された特別なマーカーである「スタンプ」の概念を公開し、そのスタンプを独自の要件に合わせてカスタマイズする方法を紹介します。
スタンプとは
詳細な説明に入る前に、ここで言う「スタンプ」とは何かを明確にしましょう。基本的に、「スタンプ」はデータエンティティの変更を追跡するためのマーカーとして機能し、これを使用することでデータに加えられた変更の包括的な記録を維持することを可能にします。
データ変更追跡
データ変更追跡の有効化
シンプルな手順でデータ変更追跡を開始することができます。まず、ストラクチャエディタウィンドウ内で監視したいテーブルを右クリックします。そこから、“データ変更追跡を有効にする”という名前の付いたメニュー項目を選択します。
注:この操作を行うことで、2つの必要不可欠な要素である、“__GlobalStamp” フィールド と “__DeletedRecords” テーブル が作成されます。これらの要素は、データストア内のデータ変更を正確かつ効果的に追跡・管理するための基盤となります。
データ変更の取得
新しい .getGlobalStamp() 関数は、ユーザがデータストアに関連付けられた現在のグローバル変更スタンプを取得できるようにする重要なツールです。これらのスタンプは、データの変更ステータスのインジケーターとして機能し、データセット内の変更や更新に関する貴重な内部情報を提供します。
昨日以降のデータ変更の取得例
//1. 最初に、将来の使用のために現在のグローバルスタンプを保存します
StoreTodayStamp(ds.getGlobalStamp())
//2. 次の日になったら、前日に保存したスタンプを読み出します。
var $yesterdayStamp : Integer
$yesterdayStamp := ReadStoredStamp()
//3. 'product' テーブル内において前日に保存したスタンプ以降に
//変更されたエンティティの一覧を取得する
var $modifiedProd : cs.productSelection
$modifiedProd:=ds.product.query("__GlobalStamp >= :1"; $yesterdayStamp)
この例においては、StoreTodayStamp と ReadStoredStamp は、参照スタンプを保存および取得するために作成する必要があるプロジェクトメソッドです。
昨日以降削除されたレコード情報を取得する例
//4. 前日に保存されたスタンプ以降削除されたエンティティについての情報を取得
var $deletedProdInfo : cs.__DeletedRecordsSelection
$deletedProdInfo:=ds.__DeletedRecords.query("__Stamp >= :1"; $yesterdayStamp)
正確なデータ管理が重要な分野においては、この機能を使用することによって変更や削除などを容易に知ることができるようになります。HDIで見た例と同様に、データの変化を明確に把握し、効果的にモニタリングすることができます。さらに、 インクリメンタルアップデートなどのタスクには最適な、正確なデータ同期が可能になります。またこれは、SQL経由の複製よりも、より現代的なデータ同期の方法です。この機能は効率的なデータコントロールの鍵であり、データストアの管理、監視、変更の追跡を容易にします。まさに、モニタリングからバックアップ、インクリメンタル同期までスマートにこなす、新しいアプローチを開いたと言えます。