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

Jaký datový typ zvolit json nebo jsonb nebo text

Za předpokladu, že mluvíte o skutečném, striktním JSON (bez zvláštností, jako jsou klíče bez uvozovek)...

json se příliš neliší od text . Kromě ověření JSON toho moc nedělá .

jsonb je jiná bestie ve srovnání s těmito dvěma:je to plnohodnotná datová struktura s vlastním interním formátem, která má k dispozici mnohem více operací při vyhledávání. Například json nemá žádné použitelné = (operátor rovnosti). jsonb má. (text má také, i když je sémanticky odlišný.)

Je mnohem rozumnější indexovat, ale během čtení a zápisu se musí transformovat tam a zpět.

Vzhledem k tomu jsonb zde nevypadá jako správná volba.

... Zbývá tedy učinit jediné rozhodnutí:

Chcete zajistit, aby vaše databáze obsahovala pouze platné hodnoty JSON ve vašem sloupci? Na úrovni databáze? Nebo důvěřujete každému klientovi této databáze (obvykle serverovým aplikacím), že poskytuje pouze platná data?

json je relativně bezpečná volba v obou směrech. Pomocí text by teoreticky mohl zlepšit výkon o zanedbatelnou rezervu kvůli absenci validace, ale konkrétní čísla získáte pouze srovnáním. Ale nebude mít takovou ochranu proti hodnotám, které nejsou JSON, a náhodná chyba v klientovi by mohla zůstat bez povšimnutí. Testujte zodpovědně!




  1. Načítání třídy `com.mysql.jdbc.Driver'. Toto je zastaralé. Nová třída ovladačů je `com.mysql.cj.jdbc.Driver'

  2. Explicitní hodnotu pro sloupec identity v tabulce lze zadat pouze v případě, že je použit seznam sloupců a IDENTITY_INSERT je na serveru SQL Server.

  3. PostgreSQL Connection Pooling:Část 4 – PgBouncer vs. Pgpool-II

  4. Pouze schéma mysqldump, aktualizace schématu bez poklesu