
2025年1月、CData Connect Cloud に新しい「キャッシュ機能」が追加されました。キャッシュ機能は指定したテーブルのデータをDB (キャッシュDB) に保持し、次回同じテーブルがアクセスされた際にキャッシュDB のデータを取りに行く機能です。一般的に、SaaS のWeb API からのデータ取得はDB へのアクセスと比較して時間がかかります。また、サービスによってはAPI の利用回数に制限が存在します。例えばSalesforce のAPI は一日に発行できるAPI コール数に上限があり、これを超えるとエラーが発生する場合があります。キャッシュ機能はAPI へのリクエストをDB へのリクエストに置き換えることによって、性能の改善やAPI 制限の回避を目指します。
キャッシュ機能の概要
以下はSalesforce のデータをBI (Business Intelligence) ツールで分析する例を用いて、従来の連携方法とキャッシュを用いた連携方法を示した図です。従来はツールからのデータ要求に応じてAPI にアクセスしデータを取得していました。一方キャッシュを利用する場合、要求されたデータがキャッシュDB にあるか確認し、もし存在すればキャッシュDB からデータを取得し、なければAPI からデータを取得します。


キャッシュDB へのデータ書き込みもConnect Cloud で行います。以下はキャッシュ構築・更新時のデータの流れを示した図です。キャッシュの更新はスケジュールすることができ、例えば一時間ごとにSaaS からデータを取得しキャッシュを更新するといったことができます。

更新間隔はシステム全体のパフォーマンスに大きく影響するため、データやクライアントツールの性質によって調整が必要です。例えば更新間隔を長くするとキャッシュを更新するためのAPI コール数は減りますがキャッシュのデータが古くなります。データの鮮度を保つために更新間隔を短くするとコール数が増加します。ただし、一部のデータソースでは更新されたレコードのみを対象にキャッシュを更新する差分更新機能に対応しています。この機能を使うことでAPI コール数への影響を最小限にしつつ更新頻度を高めることができます。
キャッシュ機能の使用方法
本章ではキャッシュ機能の使用方法を説明します。はじめにキャッシュDB への接続を設定し、そのDB にキャッシュを構築します。キャッシュDB への接続は一度設定すればDB への接続情報(アドレスや認証情報)が変わらない限り再設定の必要はありません。
前提条件
キャッシュ機能を使うには、インターネットからアクセス可能な場所にPostgreSQL を用意していただく必要があります。
キャッシュDBの設定
本節ではキャッシュデータを保持するキャッシュDB の設定方法を説明します。メニューの[Job] からジョブ一覧画面を開き、右上の[Manage Cache Connection] をクリックするとPostgreSQL への接続設定画面が開きます。

まず[Server] にサーバのアドレス、[Port] にポート番号を設定します。[Auth Scheme] に認証方法を設定します。認証方法はユーザとパスワードで認証を行うパスワード認証やAzure AD 認証などに対応しています。
以下はパスワード認証の設定例です。[Auth Scheme] にPassword を設定するとユーザ (User) とパスワード (Password) の入力欄が表示されますので、それぞれ認証に必要な情報を設定します。最後に[Database] にPostgre SQL 上でキャッシュデータを保存するデータベースを設定します。ちなみにキャッシュのテーブル名はConnect Cloud が決定し、テーブルの構築も自動的に行われます。設定が完了したら画面右上にある[Save & Test] をクリックします。設定した認証情報でテスト接続が行われ、成功すると画面に「Connection successfully saved」と表示され設定が保存されます。

接続テスト時に以下のエラーメッセージが表示される場合があります。このエラーは接続先のPostgreSQL サーバがConnect Cloud のIP アドレスからのアクセスを許可していない時に発生します。このエラーが表示された際は設定画面の右にあるヘルプドキュメントのPrerequisites の内容を確認し、PostgreSQL サーバ側でConnect Cloud のIP アドレスを許可してください。

キャッシュデータの構築
本節ではキャッシュDBへデータを書き込む方法について説明します。キャッシュへのデータ書き込みはコネクション・テーブル単位で行います。同じデータソースの同じテーブルでも、コネクションが異なる場合は別々にキャッシュが構築されます。
以下からは例としてSalesforce のAccount テーブルをキャッシュとして設定する方法を示します。
[Jobs] メニューからジョブの一覧を表示し、[+Add Job] をクリックします。

はじめにキャッシュ対象のデータを取得するコネクションを選択し、[Next] をクリックします。

次にテーブルを選択し、[Next] をクリックします。

最後にキャッシュの更新間隔と更新方法を選択します。

更新間隔は以下のように時間 (Hours)、日付 (Days)、週 (Weeks)、月 (Months) 単位で設定することができます。

更新方法は差分更新 (Incremental Updates) と洗い替え (Full Updates)から選択します。差分更新はレコードの更新日付カラム (Time Check Column) をもとに更新が必要なレコードだけを更新する方式です。更新日付カラムをサポートしているテーブルでのみ選択できます。洗い替えは毎回すべてのデータを上書きする更新方法です。

これで設定は完了です。[Confirm] をクリックすると設定が保存されます。
キャッシュジョブの実行
設定した更新間隔に従ってキャッシュの更新が行われますが、以下の手順で任意に更新処理を実行することが可能です。
[Jobs] メニューからジョブのリストを開きます。

実行するジョブをチェックし、[Run] をクリックすると確認ダイアログが表示され、[Confirm] をクリックするとジョブが実行されます。

実行中は[Status] がRunning となり、完了すると以下のようにSuccess となります。

これでキャッシュデータの構築は完了です。
ここでPostgreSQL を見てみると「コネクション名_テーブル名」というテーブルが追加されデータが書き込まれていることが確認できます。

Data Explorer を開くとキャッシュが構築されているテーブルに以下のアイコンが表示されます。

パフォーマンス評価
冒頭で述べたように、キャッシュ機能はクエリの結果を取得するまでの応答時間の改善と、APIコール数の削減に効果があります。この効果を評価するため、以下の条件で実験を行いました。
- データソース:Salesforce
- キャッシュDB : PostgreSQL 16.2 (EC2に構築)
- クライアント:Connect JDBC Driver
- クエリ実行環境:Java
テストデータとしてSalesforce の製品オブジェクト (Product2 テーブル) に10万~30万件のデータを登録しました。Connect Cloud で二つのコネクションを作成し、片方のコネクションのProduct2 テーブルにキャッシュを設定しました。それぞれのコネクションで10万件、20万件、30万件のレコードを取得し、応答時間とAPI コール数を評価しました。
応答時間の評価
以下に応答時間の評価結果を示します。このグラフは横軸にレコード数、縦軸に応答時間をとります。グラフが示す通り、キャッシュを使ったクエリは使わないクエリと比較して応答時間が短く、平均で約33% の性能改善が見られました。これはSalesforce API と比較してキャッシュDB へのアクセスが高速なためです。キャッシュを使ったクエリの実行時間はキャッシュDB の応答時間に依存するため、キャッシュDB の性能によっては期待ほど応答時間が改善しない場合もあります。

API コール数の評価
以下にAPI コール数の評価結果を示します。このグラフは横軸にレコード数、縦軸にSalesforce API へのコール数をとります。グラフが示す通り、キャッシュを使っていないクエリはレコード数に比例してAPI コールが増加します。これはSalesforce API の仕様上、一回のリクエストで取得できるレコード数が限られているためです。一方キャッシュを使ったクエリはレコード数に関わらずAPI コール数が二回となりました。

以上の検証結果から、キャッシュ機能を利用することで応答時間やAPI コール数の削減に効果があることが分かりました。今回はSalesforce API で評価しましたが、API の仕様や応答時間によって効果が変わります。例えば時間帯によって高負荷となり応答時間が長くなるサービスがある場合、当該時間にキャッシュを使うと効果が大きくなります。
おわりに
本記事ではCData Connect Cloud でパフォーマンスの改善を目的にデータを一時的にDB に保持するキャッシュ機能の使い方を説明しました。Connect Cloud は30日間の無償トライアルが可能です。 SaaS とのデータ連携をご検討のかたはぜひお試しください。
関連コンテンツ