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でコンテキストの設定を調整することができます。