ユーザープロファイルを格納するためにnull許容フィールドまたはjsonbを使用することを決定しています。当初、これは連絡先に使用されます:email
およびphone
。 mobile
やwebsite
などの他の列が後で追加される可能性があると思います。さらに、設定/設定、保存された検索など、関連しない他のフィールドがある場合があります。
非常に正当な理由がない限り、これにはどのような形式のKey-Valueストア(または多対多の関係を含むスキーマ)も使用しないことをすでに決定しています。
Jsonbの長所:
Jsonbの短所:
この賛否両論のリストに追加するものはありますか?私が単にnull許容列を使用したいのと同じくらい、jsonbを無視するのは過失だと思います-説得力のある選択のようです。
「両方の長所」を利用できます。知っているすべての通常の列を専用列として実装し(正確な適切なデータ型を使用し、NOT NULL/CHECK/PK/FKなどの制約を使用して、詳細なルール、デフォルト値、およびドキュメントのコメントを適用)、「キャッチオール」を追加します上記の機能を必要としない非常にまれなケース/後の追加/揮発性の高い属性のjsonb
列。
明確にするために:「非常に揮発性が高い」とは、値が頻繁に更新されることを意味しません。これにより、jsonb
などのドキュメントタイプが明確に対で示され、更新がより複雑で高価になります。これは、属性自体(メタレベルで)が大きく変化することを意味します(異なる名前、まれなandは、時間の経過などにより、存在の有無を問わず)。
ほとんどの人は、NULLストレージの実際の安さを過小評価しています。
関連: