我有一个实体表。所有实体都有必需的属性,其中之一是bucket_id,用户也可以为实体定义自定义属性(attribute_name + value)。 我需要对这些实体进行以下操作:
必需的属性可以是表列。我找到了两种存储自定义属性的方法:
这些方法中哪一种更好或者您能提出更好的建议吗?
与此类问题一样,这取决于情况。
JSONB 可能是更简单的方法,特别是当您查询实体时您始终需要所有自定义属性时,它也可能比 JSON 更紧凑,如果它变大将会被压缩。
存储为单独的表可以为您使用的索引类型提供一定的灵活性,例如如果你只需要相等,可以使用哈希索引,你也可以考虑将表分区成更小的块以提高性能。
我通常更喜欢单独的表和连接,因为它们提供了更大的灵活性,并且您使用纯 SQL 进行查询,但 JSON 字段是无模式的,因此它可以更加动态,而无需触及表结构。