すべてのプロダクト
Search
ドキュメントセンター

キャッシュ更新ポリシー

最終更新日: Mar 23, 2020

サービスアクセスを高速化し、同時読み取りパフォーマンスを向上させるため、多くのユーザーはサービスアーキテクチャにキャッシュレイヤーを作成します。ビジネスの読み取りリクエストはキャッシュレイヤーにルーティングされ、メモリにキャッシュされたデータを読み取ることでビジネスの読み取りパフォーマンスは強化されます。データの整合性を確保するため、ビジネスの更新データを永続ストレージ RDS に保存できます。ビジネスデータが更新された場合にキャッシュデータが同期、更新されるように、キャッシュ更新ポリシーを実装する必要があります。

記事「Did you know cache invalidation can be solved in this way?」で記述されているように、DTS のデータサブスクリプション機能により、高信頼性かつ低レイテンシのデータ更新ポリシーを実現できます。

このトピックでは、RDS を永続ストレージとして使用し、MongoDB または Redis をキャッシュとして使用している場合に、DTS を使用してキャッシュを更新する方法について説明します。

キャッシュの更新手順

DTS が提供する RDS MySQL 増分サブスクリプション機能を使用して、永続的な RDS データベースから MongoDB/Redis キャッシュに更新データを同期するには、次の手順に従います。

  1. DTS コンソールで RDS インスタンスのサブスクリプションチャネルを作成します。詳細は、「サブスクリプションチャネルの作成」をご参照ください。
  2. DTS が提供する SDK をカプセル化し、サブスクリプションチャネルでリッスンしてから、RDS の増分をリアルタイムで取得します。ビジネス要件に基づいて増分データを MongoDB/Redis のデータ更新文にカプセル化した後、RDS から MongoDB/Redis に増分データをリアルタイム同期するために、増分データを MongoDB/Redis キャッシュに同期します。この結果、高信頼性かつ低レイテンシのキャッシュ更新を実現できます。

この機能を簡単に使用できるように、DTS は DTS SDK をカプセル化して、増分データを MongoDB/Redis に同期するデモを提供します。次に、これらのサンプルデモの実行手順を示します。

MongoDB キャッシュ更新デモ

Access Key の作成

キャッシュ更新デモを実行する際、サブスクリプションチャネルが属する Alibaba Cloud アカウントの Access Key/Access Secret を設定する必要があります。したがって、デモを実行する前に、まず Access Key を作成します。Alibaba Cloud アカウントが既に Access Key を作成済みの場合、Access Key を再度作成する必要はありません。そうでない場合、次の手順に従います。

  1. Alibaba Cloud コンソールにログインし、右上の Alibaba Cloudアカウントをクリックして、アカウント管理センターにアクセスします。
  2. [Access Key 管理] をクリックして、[Access Key 管理] ページにアクセスします。
  3. コンソールの右上にある [Access Key の作成] をクリックして、Access Key/Access Secret を作成します。

Java SDK のインストール

DTS で提供され、Java SDK でサポートされている開発環境は、J2SE Development Kit (JDK) 1.5 以降です。

次に、Eclipse プロジェクトを例として、SDK のインストール手順を説明します。

  1. [SDK ダウンロード] ページにログインして、最新のデータサブスクリプション SDK パッケージ dts-subscribe-3.0.jar をダウンロードします。
  2. Eclipse にアクセスし、Maven プロジェクトを作成します。[プロジェクト] を右クリックし、[プロパティ] > [Javaビルドパス] > [ライブラリ] > [外部 JAR の追加] の順にクリックし、dts-subscribe-3.0.jar がプロジェクトに追加されるように、dts-subscribe-3.0.jar の保存されているパスを選択します。
  3. dts-subscribe-3.0.jar を選択し、[OK] をクリックします。上記の手順の後、プロジェクトで DTS Java SDK を使用できます。

サンプルデモの実行

次に、Eclipse プロジェクトを例として、MongoDB データ更新デモの実行方法を説明します。

  1. MongoDB データ更新デモをダウンロードします。

  2. 新しく作成したプロジェクトに新しいクラス DTSMySQL2Mongo を作成します。

  3. 生成された Java ファイル DTSMySQL2Mongo を開き、その中のコードテンプレートを削除してから、サンプルコードを DTSMySQL2Mongo ファイルに貼り付けます。

  4. Maven を設定します。

       
    1. <dependency>
    2. <groupId>com.vividsolutions</groupId>
    3. <artifactId>jts</artifactId>
    4. <version>1.13</version>
    5. </dependency>
    6. <dependency>
    7. <groupId>org.mongodb</groupId>
    8. <artifactId>mongo-java-driver</artifactId>
    9. <version>3.2.0</version>
    10. </dependency>

    pom.xml ファイルを編集して Maven の設定を行った後、プロジェクトを右クリックし、[Maven] > [プロジェクトを更新] を選択して Maven 依存関係を更新します。

  5. デモの AccessKeyID、AccessKeySecret、サブスクリプションチャネル ID、mongoUrl、mongoUserName、mongoUserPassword を変更します。具体的には、次のとおりです。

      • AccessKeyID は、上記で作成した AccessKey です。
      • AccessSecret は、AccessKey に対応する AccessSecret です。
      • Subscription_Instance_ID は、サブスクリプションチャネル ID です。
      • mongoUrl は、同期させる MongoDB の接続アドレスです。接続文字列の形式は次のとおりです。
    • - MongoDB address: MongoDB listening port/default connecting database。例:120.26.122.72:27037/admin1
      • mongoUserName は、MongoDB にアクセスするためのアカウントです。
      • mongoUserPassword は、MongoDB にアクセスするためのアカウントのパスワードです。

    ![Mongodb2mysql Configuration]

  6. Eclipse でデモファイルを右クリックし、[操作モード] > [JAVA アプリケーション] を選択すると、サンプルデモを実行できます。

Redis キャッシュ更新のデモ

Access Key の作成

キャッシュ更新デモを実行する際、サブスクリプションチャネルが属する Alibaba Cloud アカウントの Access Key/Access Secret を設定する必要があります。したがって、デモを実行する前に、まず Access Key を作成します。Alibaba Cloud アカウントが既に Access Key を作成済みの場合、Access Key を再度作成する必要はありません。そうでない場合、次の手順に従います。

  1. Alibaba Cloud コンソールにログインし、右上の Alibaba Cloudアカウントをクリックして、アカウント管理センターにアクセスします。
  2. [Access Key 管理] をクリックして、[Access Key 管理] ページにアクセスします。
  3. コンソールの右上にある [Access Key の作成] をクリックして、Access Key/Access Secret を作成します。

Java SDK のインストール

DTS で提供され、Java SDK でサポートされている開発環境は、J2SE Development Kit (JDK) 1.5 以降です。

次に、Eclipse プロジェクトを例として、SDK のインストール手順を説明します。

  1. [SDK ダウンロード] ページにログインして、最新のデータサブスクリプション SDK パッケージ dts-subscribe-3.0.jar をダウンロードします。
  2. Eclipse にアクセスし、Maven プロジェクトを作成します。[プロジェクト] を右クリックし、[プロパティ] > [Javaビルドパス] > [ライブラリ] > [外部 JAR の追加] の順にクリックし、dts-subscribe-3.0.jar がプロジェクトに追加されるように、dts-subscribe-3.0.jar の保存されているパスを選択します。
  3. dts-subscribe-3.0.jar を選択し、[OK] をクリックします。上記の手順の後、プロジェクトで DTS Java SDK を使用できます。

サンプルデモの実行

次に、Eclipse プロジェクトを例として、MongoDB データ更新デモの実行方法を説明します。

  1. Redis データ更新デモをダウンロードします。

  2. 新しく作成したプロジェクトに新しいクラス DTSMySQL2Redis を作成します。

  3. 生成された Java ファイル DTSMySQL2Redis を開き、その中のコードテンプレートを削除してから、サンプルコードを DTSMySQL2Redis ファイルに貼り付けます。

  4. Maven を設定します。

       
    1. <dependency>
    2. <groupId>com.vividsolutions</groupId>
    3. <artifactId>jts</artifactId>
    4. <version>1.13</version>
    5. </dependency>
    6. <dependency>
    7. <groupId>redis.clients</groupId>
    8. <artifactId>jedis</artifactId>
    9. <version>2.7.2</version>
    10. </dependency>

    pom.xml ファイルを編集して Maven の設定を行った後、プロジェクトを右クリックし、[Maven] > [プロジェクトを更新] を選択して Maven 依存関係を更新します。

  5. デモの AccessKeyID、AccessKeySecret、サブスクリプションチャネル ID、redisUrl、redisPort、redisPassword を変更します。具体的には、次のとおりです。

      • AccessKeyID は、上記で作成した AccessKey です。
      • AccessSecret は、AccessKey に対応する AccessSecret です。
      • Subscription_Instance_ID は、サブスクリプションチャネル ID です。
      • redisUrl は、同期する Redis の接続アドレスです。たとえば、120.26.122.72 はデモアドレスです。
      • redisPort は Redis のリスニングポートです。
      • redisPassword は、Redis にアクセスするためのアカウントです。

    ![mysql2redis 設定]

  6. Eclipse でデモファイルを右クリックし、[操作モード] > [JAVA アプリケーション] を選択すると、サンプルデモを実行できます。

    DTS データサブスクリプションと MongoDB/Redis データ更新 writer を使用した、高信頼性かつ低レイテンシのキャッシュ更新ポリシーが完成しました。