CRDT Disk-space requirements#
重要な考慮事項は、CRDTタイプ、特にディスク上のサイズに関連するオーバーヘッドです。
オペレーションベースのCRDTディスク領域要求#
operation-based types の場合、タイプは他のタイプの単なるドメインであるため、これは簡単です。ノードの数に関係なく、必要なディスク領域は同じです。
crdt_delta_counter-bigintと同じ8バイトcrdt_delta_sum-numericと同じ変数、精度とスケールに応じて異なります
操作ベースのCRDTタイプはノードごとの情報を保存しないため、ノードの数への依存関係はありません。
状態ベースのCRDTディスク領域要求#
state-based types の場合、状況はより複雑です。すべてのタイプは可変長であり、基本的にbytea
列として保存され、ヘッダーと、値を変更した各ノードの特定の量のノードごとの情報で構成されています。
bigint
バリアントの場合、おおよそのサイズを計算する式は次のとおりです。
crdt_gcounter-32B (header) + N * 12B (per-node)crdt_pncounter–48B (header) + N * 20B (per-node)
N は、この値を変更したノードの数を示します。
numeric
バリアントの場合、ヘッダー部分とノードごとの部分の両方にnumeric
可変長値が含まれるため、正確な式はありません。保持する必要があるこのような値の数を知るには
crdt_gsum固定
20B (header) + N * 4B (per-node)変数
(2 + N)numeric値crdt_pnsum固定
20B (header) + N *4B (per-node)変数
(4 + 2* N)numeric値
注釈
複数のノードで値が更新されない場合、クラスター内のノードの数は関係ありません。また、更新が同時実行されたかどうか、競合が発生したかどうかも関係ありません。
さらに、これらのノードのうちのいくつがクラスターから既に削除されたかは関係ありません。状態を圧縮する方法はまだありません。