4D-jp 4D Japan Technical Support Team

クライアント側ORDAキャッシュ

2022-05-16

19r2では4D.Blobオブジェクトが使用できるようになり,19r3ではORDAでBLOBフィールドが使用できるようになりました。この機会にクラシックコードをORDAで書き換えることを検討しているかもしれません。大量のBLOBフィールドをORDAで扱うのであれば,クライアント側キャッシュのサイズに気を配ると良いでしょう。

クライアント側ORDAキャッシュとは

ローレベルのREST APIはデフォルトで100件のエンティティを返しますが,クライアント/サーバー版のORDAリクエスト毎にフェッチされるエンティティは80件に設定されています。すべての属性(フィールド)がリクエストされるわけではなく,必要に応じてリクエストされる属性やリレーション属性がコンテキストに追加されてゆきます。サーバから取得したエンティティは,30000件/テーブル毎を限度として再利用されます。これがクライアント側ORDAキャッシュです。

entitySelection.refresh()@18r3のドキュメントに説明されているように,クライアント/サーバー版のORDAには30秒間保持されるクライアント側キャッシュが存在します。これはサーバー側で10分間保持されるローレベルのエンティティセットのキャッシュとは別のものです。また,ストラクチャ/プロジェクトのクライアント側キャッシュとも違います。

クライアント側ORDAキャッシュの管理

クライアント/サーバー版のORDAでBLOB属性にアクセスした場合,最高で30000件/テーブル毎のBLOBがクライアント側にキャッシュされる可能性があります。プロセスのメモリ占有量が問題になるようであれば,setRemoteCacheSettings()@19r5でキャッシュされるエンティティ数を抑えたり,setRemoteContextInfo()@19r5でコンテキストの設定を調整することができます。


リンク