この記事は、Mary Kelly氏のブログの抄訳です
データベースの変更を追跡する機能は、開発者にとって時間のかかる作業であり、特定のトランザクション負荷や変更量によっては、データベース パフォーマンスにも影響を与える可能性があります。InterBaseでは、これらの変更を追跡するための導入しやすいソリューションを提供します。
Table of Contents
変更ビューとは?
変更ビューは、データをサブスクライブし、データベースで変更されたデータを識別するために使用される特許取得済みのサブスクリプションモデルです。
異なるテーブルやカラムを網羅するサブスクリプションを作成し、データの変更をサブスクライブする権限をユーザーに与えます。ログテーブルや外部ファイルがないため、内部的に追跡する非常にクリーンな設定となっています。変更内容は誰でもアクセス可能ではなく、データベース内で安全に管理されます。つまり、サブスクライブしているユーザーのみが、実際に利用可能なデータの変更点を確認できます。
サブスクリプションは、接続中と接続後の両方で実行できます。したがって、接続中にアラートを取得して差分を取得することができます。例えば、数千件のレコードを取得した後に「テーブルに変更がありました」というメッセージを受け取った場合、クエリ全体を再度更新する代わりに、変更ビューを使用して差分を取得することができます。これにより 、ネットワーク上での時間とデータの移動を削減します。
サブスクリプションが特に非常に優れているのは、変更を記録するために実際に接続している必要がないという点です。データベーストランザクションを開始した後、サブスクリプションセットを設定してデータベースから切断し、将来の時点で新しいトランザクションで新しい接続を開始することができます。
データに変更を加えた場合、更新を適用するたびにそのデータを取得しています。InterBasesの変更ビューを使用すると、フィールドレベルで変更された差分を具体的に特定することができるため、変更されたデータのみをパッケージ化して移動することができます。
変更ビューを使用することによるメリットは以下の通りです。
- モバイルデバイスでのデータ同期を最小限に抑えることで、コストとディスクI/Oを削減
- パフォーマンスへの影響が少ない
- 外部のログテーブルが不要
- ユーザーのスケーラビリティ
- 期待した通りにデータ変更を追跡
変更ビューによって同期すると、ローカルとサーバーのデータベース間の差分変更のみが移動し、データが正確かつ最新の状態に保たれます。
変更ビューの設定方法
変更ビューを利用するために必要なステップは大きく分けて2つあり、サーバー上でサブスクリプションを設定し、アプリケーションにいくつかのコンポーネントを追加することができます。
サーバー
- サブスクリプションの作成
- テーブル、カラム、フィールドレベルでデータを指定
- サブスクリプションアクセスの権限を付与
CREATE SUBSCRIPTIONのサンプルは、以下の通りです。
[crayon-6740474b5cef6278196669/]クライアント
サーバー上でサブスクリプションが設定されると、アプリケーション上でサブスクリプションを追加/アクティブ化できます。
- トランザクションの SNAPSHOT 排他レベルで開始
- クエリを使用してSET SUBSCRIPTION active to Trueを実行し、サブスクリプションをアクティブに設定
- select文を実行して差分の取得(これは単純なselect文で構いません)
- 差分を取得したら、トランザクションをコミットして、アプリケーション内の変更ビューを最新の状態に保つ