sql >> Databasteknik >  >> RDS >> PostgreSQL

Gör JSONB PostgreSQL-arrayer värdelösa?

I de flesta fall skulle jag använda ett normaliserat schema med en tabell option_tag implementera många-till-många-relationen mellan tabellerna option och tag . Referera till implementering här:

Det kanske inte är det snabbaste alternativet i alla avseenden, men det erbjuder hela utbudet av DB-funktionalitet, inklusive referensintegritet, begränsningar, hela utbudet av datatyper, alla indexalternativ och billiga uppdateringar.

För fullständighetens skull, lägg till i din lista med alternativ:

  • hstore (bra alternativ)
  • xml mer omfattande och mer komplex än någondera hstore eller jsonb , så jag skulle bara använda det när jag arbetar med XML.
  • "sträng med kommaseparerade värden" (mycket enkelt, oftast dåligt alternativ)
  • EAV (Entity-Attribute-Value) eller "namn-värde-par" (oftast dåligt alternativ)
    Detaljer under denna relaterade fråga på dba.SE:

Om listan bara är för visning och sällan uppdateras, skulle jag överväga en vanlig array, som vanligtvis är mindre och presterar bättre för detta än resten.

Läs blogginlägget av Josh Berkus @a_horse länkade till i sin kommentar. Men var medveten om att den fokuserar på utvalda läsfall. Josh medger:

Och det är där det normaliserade tillvägagångssättet vinner stort, särskilt när du byter enstaka taggar mycket under samtidig belastning.

jsonb är bara ett bra alternativ om du ändå ska arbeta med JSON, och kan lagra och hämta JSON "som den är".



  1. Docker-django kastar fel vid anslutning till postgres:psycopg2.OperationalError:kunde inte ansluta till servern:Anslutning nekades

  2. sql Optimizer för stora Db-tabeller

  3. MySQL - använder GROUP BY och DESC

  4. Hur gör man trigger som implementerar detta tillstånd?