PostgreSQL

Typ danych i funkcje PostgreSQL JSONB

Typ danych i funkcje PostgreSQL JSONB

Jak w 9.Wersja 2, PostgreSQL dodał dość podstawowy typ danych JSON. Pod okładką typ danych JSON to tekst, ze sprawdzeniem, czy być może układ jest poprawnym wejściem JSON podobnym do XML. Ostatecznie zespół stwierdził, że ilość przetwarzania JSON i specjalistycznego wyszukiwania potrzebnego w PostgreSQL byłaby trudna lub racjonalna do wymuszenia na tekstowym typie danych. Dlatego stworzyli binarną reprezentację typu danych JSON z pełną gamą operatorów i metod. Oto typ danych JSONB. Typ danych JSONB jest rzeczywiście wszechstronnym układem przechowywania binarnego z pełnym przetwarzaniem, indeksowaniem i możliwością wyszukiwania. W rezultacie wstępnie przetwarza informacje JSON do wewnętrznego układu, który ma tylko jedną wartość na klucz i ignoruje dodatkowe spacje lub wgłębienia lub możesz powiedzieć wcięcie. W tym przewodniku dowiesz się, jak korzystać z formularza danych JSONB w PostgreSQL, a także o kilku przydatnych operatorach i metodach radzenia sobie z danymi JSONB.

Typ danych, którego najprawdopodobniej będziesz potrzebować i którego będziesz używać, to JSONB, a nie wczesna wersja JSON, która jest używana tylko w celu zapewnienia zgodnoś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 różnic między tymi dwoma typami danych. Musimy stworzyć tabelę 'Nowa', której jedna z kolumn musi mieć typ danych 'JSON' w następujący sposób:

>> UTWÓRZ TABELĘ Nowy (numer seryjny klucza podstawowego, Val JSON);

Wstaw kilka wartości do kolumny „Val”.

>> INSERT INTO New(Val) VALUES ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('“klucz”: “wartość”') ;

Użycie operatora „@>”

Gdy próbujemy wyszukać wpisy z liczbą całkowitą na liście kolumn „dodatkowe”, zawsze otrzymujemy komunikat o błędzie, jak dołączono poniżej.

>> SELECT * FROM New WHERE Val @> '11';

tak. JSON to tylko tekst i nie jest zbyt wydajny i nie zawiera konfiguracji operatora. Niech treść zmieni się na jsonb.

>> ALTER TABLE Nowa ALTER COLUMN Val TYPE JSONB;

Teraz wykonaj to samo zapytanie w powłoce, a wynik pokaże jeden wiersz z liczbą „11” w swojej tablicy, jak podano poniżej.

>> SELECT * FROM New WHERE Val @> '11';

Przykład 02:

Stwórzmy tabelę „Bag”, która będzie używana w naszych ilustracjach, dopóki nie zaczniemy mówić o metodach i operatorach używanych dla typu danych PostgreSQL JSONB. Jedna z jego kolumn, e.sol. „Brand” musi być typem danych „JSONB” w następujący sposób:

>> CREATE TABLE Bag (identyfikator numeru seryjnego PRIMARY KEY, marka JSONB NOT NULL);

Użyjemy następującej deklaracji SQL INSERT, aby dodać informacje do tabeli „Bag” PostgreSQL:

>> INSERT INTO Bag(Marka) VALUES ('"name": "Gucci", "color": ["czerwony", "czarny"], "price": 10000,  "sprzedane": prawda,]') , ('"name": "Allure", "color": ["czerwony", "Szary"], "price": 85000,  "sold": false,]'), ('"name": "Kidza", "kolor": ["czarny", "biały"], "cena": 75000,  "sprzedane": prawda,]');

Widać, że dane zostały dodane w formie słownika, e.sol., klucze i wartości.

Elementy tej tabeli 'Torba' można zobaczyć za pomocą zdania SELECT, jak pokazano poniżej:

>> WYBIERZ * Z Torba;

Użycie '->' Operator

Poszukajmy wartości w kolumnie „Marka” za pomocą klucza „nazwa”, używając operatora „->” w naszym zapytaniu.  Pobiera wszystkie rekordy klucza „nazwa” z kolumny „Marka”. Wynik zostanie wyświetlony w nowej kolumnie „marka”. Ostateczny wynik pojawi się w załączniku poniżej. Jak widać, mamy trzy wartości: „Gucci, Allure, kidza” dla klucza „imię”.

>> SELECT Brand -> 'nazwa' AS marki FROM Bag;

Użycie operatora '->' przy użyciu klauzuli WHERE

Pobierzmy wszystkie te wiersze z tabeli „Torba”, w których kolumna „Marka” ma wartość „true” dla klucza „sprzedane”. Zapytanie dla tego wyboru jest następujące:

>> SELECT * FROM Bag WHERE Marka -> „sprzedane” = „prawda”;

Widzisz, zapytanie pobrało tylko dwa wiersze z tabeli „Bag”, ponieważ ma tylko dwa wiersze o wartości „true” dla klucza „sprzedane”.

Funkcje JSONB PostgreSQL:

W przypadku informacji JSONB wydaje się, że istnieje wiele wbudowanych metod, które można wykorzystać. Przyjrzyjmy się im jeden po drugim.

JSONB Każda funkcja:

JSONB Każda funkcja pobiera dane i konwertuje je na parę klucz_wartość. Rozważ następujące zapytanie metody jsonb_each, w której podaliśmy wartości. Dane JSON najwyższego poziomu są rozwijane do serii kombinacji klucz-wartość w wyniku. Mamy dwie pary klucz-wartość, jak pokazano poniżej.

>> SELECT jsonb_each('"name": "Allure", "sold": "true"'::jsonb );

Funkcja kluczy obiektowych JSONB:

Teraz przyjrzymy się funkcji Jsonb_object_keys. Ta funkcja pobiera dane i sama oddziela i identyfikuje w nich kluczowe wartości. Wypróbuj poniższe zapytanie SELECT, w którym użyliśmy metody jsonb_object_keys i podaliśmy kilka wartości. Ta metoda zwróci tylko klucze dokumentu JSON najwyższego poziomu dla określonych danych, jak pokazano poniżej.

>> SELECT jsonb_object_keys('"nazwa": "kidza", "sprzedane": "prawda"'::jsonb );

Funkcja ścieżki wyodrębniania JSONB:

Funkcja wyodrębniania ścieżki JSONB pobiera ścieżkę, aby wyświetlić wartość w wyniku. Wypróbuj poniższe zapytanie w powłoce poleceń, w której jako ścieżkę do metody JSONB jsonb_extract_path podaliśmy 'brand'. Z danych wyjściowych przedstawionych na poniższym obrazku widać, że 'Gucci' jest wartością zwracaną do ścieżki 'name'.

>> SELECT jsonb_extract_path('"nazwa": "Gucci", "sprzedane": prawda'::jsonb, 'nazwa');

Funkcja ładna JSONB:

Jeśli chcesz wyświetlać pliki JSON w czytelnym układzie, najlepszą opcją jest funkcja JSONB Pretty. Wypróbuj poniższe zapytanie, a otrzymasz prosty wynik.

>> SELECT jsonb_pretty('"name": "Allure", "sold": false'::jsonb);

Wniosek:

Przechowując informacje JSONB w bazach danych PostgreSQL, uzyskujesz najlepszy możliwy wynik: prostotę i niezawodność bazy danych NoSQL w połączeniu z zaletami relacyjnej bazy danych. Korzystając z wielu operatorów i metod, pokazaliśmy, jak korzystać z PostgreSQL JSONB. Będziesz mógł pracować z danymi JSONB, korzystając z naszych ilustracji jako odniesienia.

Jak zmienić ustawienia myszy i touchpada za pomocą Xinput w systemie Linux?
Większość dystrybucji Linuksa jest domyślnie dostarczana z biblioteką „libinput” do obsługi zdarzeń wejściowych w systemie. Może przetwarzać zdarzenia...
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...