Postgres 对 JSON(甚至索引)有很多支持。我只想放置 1 个名为 everything
的 jsonb 字段,而不是定义一堆类型化的列(mongodb 样式)。
但我认为这是个坏主意。我的问题是:我为什么不应该这样做?唯一的缺点是它可能会占用额外的存储空间吗?
(我的表有很多可选字段,这就是我要这样做的原因)
最佳答案
我能想到几个原因:
如果 JSON blob 具有指向其他列的外键,我认为您不能添加
REFERENCES
约束。对于列,您可以非常轻松地执行
NOT NULL
约束,但是对于 JSON,您必须为每个必需的值编写CHECK
约束。JSON 的类型少于 Postgres。例如,没有日期/时间/时间戳,没有间隔,没有范围,只有一种数字类型,没有 IP 地址,没有二进制数据。
随着时间的推移,如果您在 JSON 结构中添加/移动/删除字段,您会发现旧行变得过时并且您的应用无法理解 JSON。使用常规列会强制您使整个表格保持最新状态。
关于sql - Postgres 使用 JSONB 列而不是定义的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37888681/