4D-jp 4D Japan Technical Support Team

BLOBの最大サイズ

2020-11-10

テキスト・ピクチャ・BLOB・オブジェクト型を総称してBLOBと呼ぶことがありますが,上限サイズはそれぞれ違います。テキストは,4GiBが4Dのメモリ管理によって扱える理論的な上限サイズであり,UTF-16コードポイント(文字)数でいえば,20億弱となります。オブジェクトの場合,テキスト型のプロパティには前述した制限が適用されますが,プロパティはいくらでも追加することができるので,単体としてのサイズは4Dのメモリ管理ではなく,システム側の制限によって上限サイズが決まります。ピクチャも,4Dではなくシステム側の制限によって上限サイズが決まりますが,ネットワーク・ファイル・レコード・シリアルポートなどを介してストリーム入出力する場合,ストリームのサイズ上限(2GiB)によって制約されます。WRITE PICTURE FILEコマンドでエクスポートするのであれば,ストリームの限界サイズには制約されません。

v16では,キャッシュマネージャーが新しくなりましたが,技術的な制約により,種別(BLOB・ピクチャ・テキスト)毎の合計サイズが2GiBと決まっていました。つまり,BLOBの合計2GiB,ピクチャの合計2GiB,テキストの合計2GiBが上限でした。たとえば,2GiBのBLOBを1個,あるいは200MiBのBLOBを10個まで作成することができます。

V18では,テキスト・ピクチャ・BLOB・オブジェクト型の変数,プロパティ,および「レコードの外」に保存されるフィールドそれぞれに2GiBまでデータを代入できるようになりました,たとえば,1GiBのBLOBを4個(BLOB合計で4GiB)作成することができます。「レコードの中」保存されるフィールドの場合,レコード1個の最大サイズが2GiBなので,他のフィールドとの合計で2GiBを超えることはできません。

これらの数値はいずれも設計上の理論的な最大サイズです。快適に管理できる最大サイズは,オペレーションシステムにも左右されます。たとえば,Windows Server 2016以前の場合,数百GiBのキャッシュをフラッシュするのにかなりの時間を要することが知られています。その点,Windows Server 2019と4D v18の組み合わせであれば,パフォーマンスが劇的に向上します。


リンク