sql >> Databáze >  >> RDS >> PostgreSQL

Vysvětlení JSONB představeného PostgreSQL

Nejprve hstore je modul contrib, který vám umožňuje ukládat pouze páry klíč => hodnota, kde klíče a hodnoty mohou být pouze text s (hodnoty však mohou být sql NULL s taky).

Oba json &jsonb umožňuje uložit platnou hodnotu JSON (definováno v jeho specifikaci).

F.ex. toto jsou platné reprezentace JSON:null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore je jen malá podmnožina ve srovnání s tím, co umí JSON (ale pokud potřebujete pouze tuto podmnožinu, je to v pořádku).

Jediný rozdíl mezi json &jsonb je jejich úložiště:

  • json je uložen ve formátu prostého textu, zatímco
  • jsonb je uložen v nějaké binární reprezentaci

To má 3 hlavní důsledky:

  • jsonb uložení obvykle zabere více místa na disku než json (někdy ne)
  • jsonb Sestavení z jeho vstupní reprezentace trvá déle než json
  • json operace zaberou významně více času než jsonb (&analýzu je také nutné provést pokaždé, když provádíte nějakou operaci v json zadaná hodnota)

Když jsonb bude k dispozici se stabilní verzí, budou existovat dva hlavní případy použití, kdy si mezi nimi můžete snadno vybrat:

  1. Pokud ve své aplikaci pracujete pouze s reprezentací JSON, PostgreSQL se používá pouze k ukládání a načítání této reprezentace, měli byste použít json .
  2. Pokud provádíte mnoho operací s hodnotou JSON v PostgreSQL nebo používáte indexování v některých polích JSON, měli byste použít jsonb .


  1. Rozdělení hodnot oddělených čárkami v Oracle

  2. Použití SQL Server Profiler | Řešení problémů s výkonem serveru SQL -5

  3. Mohl by někdo vysvětlit, co příkaz MERGE skutečně dělá v Oracle?

  4. Jak používat _COUNT v BaseColumns