sql >> Database teknologi >  >> RDS >> PostgreSQL

Forklaring af JSONB introduceret af PostgreSQL

Først hstore er et bidragsmodul, som kun giver dig mulighed for at gemme nøgle => værdipar, hvor nøgler og værdier kun kan være text s (værdier kan dog være sql NULL også).

Både json &jsonb giver dig mulighed for at gemme en gyldig JSON værdi (defineret i dens spec).

F.eks. disse er gyldige JSON-repræsentationer:null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore er bare en lille undergruppe i forhold til, hvad JSON er i stand til (men hvis du kun har brug for denne undergruppe, er det fint).

Den eneste forskel mellem json &jsonb er deres lager:

  • json gemmes i sit almindelige tekstformat, mens
  • jsonb er gemt i en binær repræsentation

Der er 3 store konsekvenser af dette:

  • jsonb tager normalt mere diskplads at gemme end json (nogle gange ikke)
  • jsonb tager længere tid at bygge fra sin inputrepræsentation end json
  • json operationer tager betydeligt mere tid end jsonb (&parsing skal også udføres, hver gang du udfører en operation på en json indtastet værdi)

Når jsonb vil være tilgængelig med en stabil udgivelse, vil der være to store use cases, når du nemt kan vælge mellem dem:

  1. Hvis du kun arbejder med JSON-repræsentationen i din applikation, bruges PostgreSQL kun til at gemme og hente denne repræsentation, du skal bruge json .
  2. Hvis du udfører mange operationer på JSON-værdien i PostgreSQL eller bruger indeksering på et JSON-felt, bør du bruge jsonb .


  1. Åbn automatisk SQLite-forespørgselsresultater i en teksteditor

  2. Tekstkomprimering i PostgreSQL

  3. Test af DML-erklæringer for OLTP i hukommelsen

  4. EXTRACT() Eksempler – MySQL