Det kommer an på. Hvis du forventer at have mange brugere, et meget højt transaktionsvolumen eller et vanvittigt antal attributhentninger pr. forespørgsel, vil jeg sige brug HSTORE. Hvis din app derimod starter i det små og vokser over tid, eller har relativt få transaktioner, der henter attributter, eller blot henter nogle få pr. forespørgsel, så brug JSON. Selv i sidstnævnte tilfælde, hvis du ikke henter mange attributter, men ofte tjekker en eller to nøgler i WHERE
klausul i dine forespørgsler, kan du oprette et funktionelt indeks for at fremskynde tingene:
CREATE INDEX idx_foo_somekey ON foo((bar ->> 'somekey'));
Nu, når du har WHERE bar ->> somekey
, bør den bruge indekset.
Og selvfølgelig bliver det nemmere at bruge indlejrede data og at opgradere til jsonb, når de bliver tilgængelige for dig.
Så jeg ville hælde til JSON, medmindre du ved med sikkerhed, at du vil sparke din server i røven med kraftig brug af nøglehentninger, før du har en chance for at opgradere til 9.4. Men for at være sikker på det, vil jeg sige, gør nogle benchmarking med forventede forespørgselsvolumener nu og se, hvad der fungerer bedst for dig.