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

Spiegazione di JSONB introdotto da PostgreSQL

Innanzitutto, hstore è un modulo contrib, che ti consente solo di memorizzare chiavi => coppie di valori, dove chiavi e valori possono essere solo text s (tuttavia i valori possono essere sql NULL s anche).

Entrambi json &jsonb consente di memorizzare un valore JSON valido (definito nelle sue specifiche).

F.ex. queste sono rappresentazioni JSON valide:null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore è solo un piccolo sottoinsieme rispetto a ciò che JSON è capace (ma se hai solo bisogno di questo sottoinsieme, va bene).

L'unica differenza tra json &jsonb è il loro deposito:

  • json è memorizzato nel suo formato di testo normale, mentre
  • jsonb è memorizzato in una rappresentazione binaria

Ci sono 3 conseguenze principali di questo:

  • jsonb di solito richiede più spazio su disco per l'archiviazione rispetto a json (a volte no)
  • jsonb richiede più tempo per costruire dalla sua rappresentazione di input rispetto a json
  • json le operazioni richiedono in modo significativo più tempo di jsonb (&anche l'analisi deve essere eseguita ogni volta che esegui qualche operazione su un json valore digitato)

Quando jsonb sarà disponibile con una versione stabile, ci saranno due casi d'uso principali, quando potrai facilmente selezionarli:

  1. Se lavori solo con la rappresentazione JSON nella tua applicazione, PostgreSQL viene utilizzato solo per archiviare e recuperare questa rappresentazione, dovresti usare json .
  2. Se esegui molte operazioni sul valore JSON in PostgreSQL o utilizzi l'indicizzazione su alcuni campi JSON, dovresti usare jsonb .