Przejdź do głównej treści
eLearner.app
Moduł 15 · Lekcja 1 z 256/57 w kursie~15 min
Lekcje modułu (1/2)

Integracja JSON i JSONB

Integracja JSON i JSONB

PostgreSQL na nowo napisał zasady baz danych, łącząc uspokajająco kolosalną naturę ACID SQL z dynamiczną i zmienną elastycznością NoSQL. Zrobiło to, oferując kolumny natywnie przeznaczone do zapisywania danych JSON.

Ostrzeżenie: w postgresie prawie zawsze zaleca się używanie JSONB. „B” oznacza Binary: dokumenty JSON wstawione do tych kolumn tracą swoje czysto tekstowe formatowanie, ale zyskują możliwość sprawdzania poprawności, sprawdzania zapytań z bardzo dużą wydajnością, manipulowania, a nawet indeksowania za pomocą klasycznego drzewa INDEX B lub GIN.

Nawigacja w formacie JSON: operator „strzałki”.

Niestety baza danych `ecommerce` nie ma obecnie predefiniowanych czystych kolumn JSON. Możemy jednak utworzyć tymczasowy kod JSON i „rzucić” go dosłownie!

Podczas pracy z JSON operatorami schodzącymi do obiektów i tablic są -> (zachowuje dane w czystej formie jsonb/json) lub ich „rozszerzona” wersja ->> (dosłownie konwertuje napotkane dane json).

Przykład akademicki, jeśli istniała kolumna „metadane” JSON:

SQL
-- Cerca il valore associato alla chiave info
SELECT metadata->'info' FROM users;

-- Cerca dentro info, e prendi testuale city
SELECT metadata->'info'->>'city' FROM users;
Ćwiczenie#sql.m15.l1.e1
Próby: 0Ładowanie...

Na bieżąco wysyłamy zapytania do JSON. Zaprojektuj ten dosłowny kod json `'{"user": {"name": "Mario"}}'::json` i użyj powiązanego z tekstem operatora `->` (`->>`), aby wyodrębnić jego „nazwę”, wywołując wyodrębnioną kolumnę „nazwa_użytkownika”.

Ładowanie edytora...
Pokaż wskazówkę

Rzutuj na ::json lub ::jsonb i użyj ->'user'->>'name'.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#sql.m15.l1.e2
Próby: 0Ładowanie...

A co jeśli przekażemy tablicę? Dostęp do tablicy w json_b w postgres odbywa się za pomocą INDEX (podstawa 0). Wyodrębnij dosłownie DRUGI element z `'["A", "B", "C"]'::json` i nazwij go „literą”.

Ładowanie edytora...
Pokaż wskazówkę

->>1 (liczy od zera!)

Rozwiązanie dostępne po 3 próbach