sql >> Databasteknik >  >> RDS >> PostgreSQL

Förklaring av JSONB introducerad av PostgreSQL

Först, hstore är en bidragsmodul, som endast låter dig lagra nyckel => värdepar, där nycklar och värden endast kan vara text s (värden kan dock vara sql NULL också).

Båda json &jsonb låter dig lagra ett giltigt JSON-värde (definierad i dess spec).

T.ex. dessa är giltiga JSON-representationer:null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore är bara en liten delmängd jämfört med vad JSON kan (men om du bara behöver denna delmängd går det bra).

Den enda skillnaden mellan json &jsonb är deras lagring:

  • json lagras i dess oformaterade textformat, medan
  • jsonb lagras i någon binär representation

Det finns tre stora konsekvenser av detta:

  • jsonb tar vanligtvis mer diskutrymme att lagra än json (ibland inte)
  • jsonb tar mer tid att bygga från dess indatarepresentation än json
  • json operationer tar avsevärt mer tid än jsonb (&parsning måste också göras varje gång du gör någon operation på en json inskrivet värde)

När jsonb kommer att finnas tillgänglig med en stabil version, det kommer att finnas två stora användningsfall när du enkelt kan välja mellan dem:

  1. Om du bara arbetar med JSON-representationen i din applikation, används PostgreSQL endast för att lagra och hämta denna representation, du bör använda json .
  2. Om du gör många operationer på JSON-värdet i PostgreSQL, eller använder indexering på något JSON-fält, bör du använda jsonb .


  1. SQL CASE-sats:Vad är det och vilka är de bästa sätten att använda den?

  2. Hur man skapar kontrollbegränsning på flera kolumner i SQL Server - SQL Server / TSQL självstudie del 84

  3. PostgreSQL JOIN med array-typ med array-elements ordning, hur implementerar man?

  4. Spring Data JPA Auditing fungerar inte för JpaRepository-uppdateringsmetoden med @Modifying annotation, varför?