sql >> Database >  >> RDS >> PostgreSQL

Maakt JSONB PostgreSQL-arrays onbruikbaar?

In de meeste gevallen zou ik een genormaliseerd schema gebruiken met een tabel option_tag implementeren van de veel-op-veel relatie tussen de tabellen option en tag . Referentie-implementatie hier:

Het is misschien niet in alle opzichten de snelste optie, maar het biedt het volledige scala aan DB-functionaliteit, inclusief referentiële integriteit, beperkingen, het volledige scala aan gegevenstypen, alle indexopties en goedkope updates.

Voeg voor de volledigheid toe aan uw lijst met opties:

  • hstore (goede optie)
  • xml uitgebreider en complexer dan hstore of jsonb , dus ik zou het alleen gebruiken als ik met XML werk.
  • "reeks van door komma's gescheiden waarden" (zeer eenvoudige, meestal slechte optie)
  • EAV (Entity-Attribute-Value) of "naam-waarde-paren" (meestal slechte optie)
    Details onder deze gerelateerde vraag op dba.SE:

Als de lijst alleen voor weergave is en zelden wordt bijgewerkt, zou ik een gewone array overwegen, die doorgaans kleiner is en hiervoor beter presteert dan de rest.

Lees het blogbericht van Josh Berkus @a_horse waarnaar wordt gelinkt in zijn opmerking. Maar houd er rekening mee dat het zich richt op geselecteerde leescases. Josh geeft toe:

En dat is waar de genormaliseerde aanpak veel wint, vooral wanneer u enkele tags veel verandert onder gelijktijdige belasting.

jsonb is alleen een goede optie als je toch met JSON gaat werken, en JSON "as is" kunt opslaan en ophalen.



  1. MySql-query:selecteer de bovenste 3 rijen uit de tabel voor elke categorie

  2. Transacties in MySQL - Kan niet terugdraaien

  3. php mysql vandaag, gisteren en datum uit database

  4. Meerdere sets of arrays van waarden doorgeven aan een functie