Het hangt er van af. Als u verwacht veel gebruikers te hebben, een zeer hoog transactievolume of een waanzinnig aantal attribuutophaalacties per zoekopdracht, zou ik zeggen HSORE te gebruiken. Als uw app echter klein begint en in de loop van de tijd groeit, of relatief weinig transacties heeft die attributen ophalen, of slechts een paar per query ophaalt, gebruik dan JSON. Zelfs in het laatste geval, als u niet veel attributen ophaalt maar vaak een of twee sleutels controleert in de WHERE
clausule van uw zoekopdrachten, kunt u een functionele index maken om dingen te versnellen:
CREATE INDEX idx_foo_somekey ON foo((bar ->> 'somekey'));
Nu, als je WHERE bar ->> somekey
. hebt , het zou de index moeten gebruiken.
En natuurlijk is het gemakkelijker om geneste gegevens te gebruiken en te upgraden naar jsonb wanneer deze voor u beschikbaar komt.
Dus ik zou in de richting van JSON leunen, tenzij je zeker weet dat je je server gaat schoppen met intensief gebruik van sleutelophaalacties voordat je de kans hebt om te upgraden naar 9.4. Maar om daar zeker van te zijn, zou ik zeggen, doe nu wat benchmarking met verwachte vraagvolumes en kijk wat het beste voor u werkt.