Jak w 9.2 wersja, PostgreSQL dodał dość podstawowy zestaw danych JSON. Pod osłoną typem JSON jest tekstem, z kontrolą, że być może układ jest prawidłowy wejście JSON podobne do XML. Ostatecznie zespół stwierdził, że wielkość przetwarzania JSON i wyspecjalizowane wyszukiwanie potrzebne w PostgreSQL byłoby trudne lub racjonalne do egzekwowania przez dane tekstowe danych. Stąd stworzyli binarną reprezentację danych JSON z pełnym zakresem operatorów i metod. Oto typ danych JSONB. Zestaw danych JSONB jest wszechstronnym układem przechowywania binarnego z pełnym możliwościami przetwarzania, indeksowania i wyszukiwania. W rezultacie przetwarza informacje o JSON do wewnętrznego układu, który ma tylko jedną wartość na klucz i ignoruje dodatkową białe listy lub depresję, lub można powiedzieć, że wcięcie. W ramach tego przewodnika dowiesz się, jak wchodzić w interakcje z formularzem danych JSONB w PostgreSQL, a także niektórym przydatnym operatorom i metodom radzenia sobie z danymi JSONB.
Typ danych, którego najprawdopodobniej potrzebujesz i wybierzesz, to JSONB, a nie wersja wczesna JSON, która jest używana tylko do kompatybilności wstecznej. Otwórz więc powłokę poleceń PostgreSQL i podaj nazwy serwera, bazę danych, port i nazwę użytkownika.
Przykład 01:
Oto krótka ilustracja zmian między dwoma typami danych. Musimy utworzyć tabelę „nową” z jedną z jej kolumn, musi być typem danych „JSON” w następujący sposób:
>> Utwórz tabelę NOWOŚĆ (ID Serial Primary Key, Val Json);Włóż niektóre wartości do kolumny „Val”.
>> Włóż do nowych (val) wartości ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('„key”: „wartość”') ;Użycie operatora „@>”
Gdy spróbujemy szukać wpisów z liczbą całkowitą na liście kolumn „Dodatkowe”, zawsze otrzymujemy komunikat o błędzie zgodnie z dołączeniem poniżej.
>> Wybierz * z nowego, gdzie val @> '11';Tak. JSON to po prostu tekst i nie jest bardzo wydajny i nie zawiera konfiguracji operatora. Niech treść zostanie zmieniona na JSONB.
>> Zmień tabelę NOWOŚĆ ZMIENIK COUNT VAL JSONB;Teraz wykonaj to samo zapytanie w powłoce, a wynik pokazuje jeden wiersz o liczbie „11” w swojej tablicy, jak podano poniżej.
>> Wybierz * z nowego, gdzie val @> '11';Przykład 02:
Zróbmy stół „torba” do użycia w naszych ilustracjach, dopóki nie zaczniemy mówić o metodach i operatorach użytecznych dla typu danych JSONB PostgreSQL. Jedna z jego kolumn, e.G. „Brand” musi być „JSONB” danych w następujący sposób:
>> Utwórz torbę tabeli (ID szeregowy klucz podstawowy, marka JSONB nie null);Użyjemy następującej deklaracji SQL Insert, aby dodać informacje do tabeli PostgreSQL „Bag”:
>> Wstaw do torby (marki) wartości ('„name”: „gucci”, „kolor”: [„czerwony”, „czarny”], „cena”: 10000, „sprzedał”: true,]') , ('„name”: „allure”, „kolor”: [„czerwony”, „szary”], „cena”: 85000, „sprzedano”: false,]'), ('„name”: „Kidza”, „Color”: [„Black”, „White”], „Price”: 75000, „sprzedany”: true,] ');Możesz zobaczyć, że dane zostały dodane w postaci słownika, e.G., klucze i wartości.
Elementy tej tabeli „torba” można zobaczyć za pomocą wybranego zdania, jak pokazano poniżej:
>> Wybierz * z torby;Użycie operatora '->'
Poszukajmy wartości w kolumnie „Brand” za pomocą klucza „Nazwa” za pomocą operatora „->” w naszym zapytaniu. Przyniesie wszystkie rekordy klucza „nazwa” z marki kolumny. Wyjście zostanie pokazane w nowej kolumnie „marka”. Ostateczne wyjście pojawią się zgodnie z dodatkiem poniżej. Jak widać, mamy trzy wartości: „Gucci, Allure, Kidza” dla kluczowego „nazwy”.
>> Wybierz markę -> „Nazwa” jako marka z torby;Użycie operatora „->” przy użyciu klauzuli Where
Pobierajmy wszystkie te rzędy z tabeli „Bag”, w których kolumna „marki” ma wartość „prawdziwa” dla jej klucza „sprzedanego”. Zapytanie do tego wyboru jest następujące:
>> Wybierz * z torby, w której marka -> „sprzedała” = „true”;Tam widzisz, zapytanie przyniosło dwa rzędy tylko z tabeli „torba”, ponieważ ma tylko dwa rzędy o wartości „prawdziwej” dla klucza „sprzedanego”.
Funkcje JSONB Postgresql:
W przypadku informacji JSONB wydaje się, że istnieje wiele metod wbudowanych, których można użyć. Rzućmy na nich okiem jeden po drugim.
JSONB Każda funkcja:
JSONB Każda funkcja przenosi dane i przekształca ją w parę key_value. Rozważ następujące zapytanie metody JSONB_EACH, w której podaliśmy wartości. Dane JSON o najwyższym poziomie są rozszerzane na serię kombinacji wartości kluczowej w wyniku. Mamy dwie pary wartości kluczowej, jak pokazano poniżej.
>> Wybierz jsonb_each ('„name”: „allure”, „sprzedał”: „true”' :: jsonB);Funkcja kluczy obiektowych JSONB:
Teraz przyjrzymy się funkcji JSONB_OBject_keys. Ta funkcja przyjmuje dane i sama oddziela i identyfikuje kluczowe wartości. Wypróbuj poniższe zapytanie, w którym używamy metody JSONB_OBject_keys i podano pewne wartości. Ta metoda zwróci tylko klucze dokumentu najwyższego poziomu JSON dla konkretnych danych, jak pokazano poniżej.
>> Wybierz JSONB_OBject_keys ('„Nazwa”: „Kidza”, „sprzedał”: „true”' :: jsonB);Funkcja ścieżki ekstraktu JSONB:
Funkcja ścieżki ekstraktu JSONB zajmuje ścieżkę, aby pokazać wartość w wyniku. Wypróbuj poniższe zapytanie w powłoce poleceń, w której dostarczyliśmy „markę” jako ścieżkę do metody JSONB JSONB_EXTRACT_PATH. Ze wyjścia przedstawionego na poniższym obrazku widać, że „Gucci” jest zwróconą wartością do ścieżki „Nazwa”.
>> Wybierz jsonb_extract_path ('„name”: „gucci”, „sprzedał”: true ”:: jsonb,„ name ”);JSONB ładna funkcja:
Jeśli chcesz wyświetlić pliki JSON z łatwym do odczytania układu, najlepsza funkcja JSONB jest najlepszą opcją. Wypróbuj poniższe zapytanie, a otrzymasz proste wyjście.
>> Wybierz jsonb_pretty ('„name”: „allure”, „sprzedał”: false' :: jsonB);Wniosek:
Podczas przechowywania informacji JSONB w bazach danych PostgreSQL uzyskasz najlepszy możliwy wynik: prostota i niezawodność bazy danych NoSQL w połączeniu z zaletami relacyjnej bazy danych. Korzystając z wielu operatorów i metod, wykazaliśmy, jak korzystać z JSONB PostgreSQL. Będziesz w stanie pracować z danymi JSONB przy użyciu naszych ilustracji jako odniesienia.