PostgreSQL jsonb?

时间:2016-06-21 14:31:57

标签: postgresql

哪个更好,将配置数据存储到单个jsonb字段中还是为每个属性键指定一个字段?

例如,这个json数据:

{
  notifications: {
    check: {
      enabled: true,
      In_delimiters: true,
      Out_delimiters : false
    },
    battery_low: {
      enabled: true,
      battery_power: 0.70
    },
    gps_on: {
      enabled: true
    },
    gps_off: {
      enabled: true
    },
    speed_exceeded: {
      enabled: true,
      speed: 100
    }
  }
}

如果我有成千上万的用户,每个属性密钥将在每一行中重复,这使得数据库大小变得比我为每个属性专门设置一个字段并仅存储值。

这种情况下的建议是什么?我应该使用jsonb并使用压缩?或者为每个房产投入一笔?

1 个答案:

答案 0 :(得分:2)

不要先考虑数据库大小;这些天存储相对便宜。

如果

,请使用jsonjsonb
  1. 结构因入门而异,因此难以提出关系数据模型
  2. 数据库中的值处理不多
  3. 否则使用关系数据模型,它是关系数据库最擅长的。

    如果您根本不处理数据库中的数据并且保存存储对您很重要,请使用json - 如果您的行大小超过2KB,它将自动压缩。 如果您有对象键顺序,空格或需要保留的重复对象键,json也是可行的方法。

    如果您必须在查询中使用数据,请务必使用jsonb。 运算符更快,您可以使用索引。