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:
-- 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;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”.
Pokaż wskazówkę
Rzutuj na ::json lub ::jsonb i użyj ->'user'->>'name'.
Rozwiązanie dostępne po 3 próbach
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ą”.
Pokaż wskazówkę
->>1 (liczy od zera!)
Rozwiązanie dostępne po 3 próbach