Podczas tworzenia tabeli będziesz mieć dwie opcje dla swojej kolumny JSON. Zwykły typ danych JSON i typ danych JSONB, oba mają własne zalety i wady. Przejdziemy przez każdą z nich, tworząc prostą tabelę z zaledwie 2 kolumnami identyfikatorem i wartością JSON. Po tym będziemy zapytać dane z tabeli i wyczumy, jak zarządzać danymi sformatowanymi JSON w Postgres.
Typ danych JSON
Tworzenie tabeli z typem danych JSON
Utwórzmy prostą dwuprolumnową tabelę o nazwie Użytkownicy:
Utwórz użytkowników tabeli (Tutaj identyfikator kolumny działa jako klucz podstawowy i wzrośnie w sposób przyrostowy dzięki pseudotypowi serialowi, więc nie będziemy musieli martwić się o ręczne wprowadzenie wartości identyfikatorów.
Druga kolumna jest typu JSON i jest zmuszona nie być zerowa. Wprowadźmy kilka wierszy danych do tej tabeli, składających się z wartości JSON.
Wstaw wartości użytkowników (Info) (Możesz użyć preferowanego JSON Beautifier/Minifier do konwersji ładunków JSON powyżej na jedną linię. Więc możesz wkleić go przy przejściu do podpowiedzi PSQL.
Wybierz * od użytkowników;Polecenie Select na końcu pokazało nam, że wiersze zostały pomyślnie włożone do tabeli użytkowników.
Zapytanie typu danych JSON
Postgres umożliwia kopanie w samym ładunku JSON i odzyskanie określonej wartości, jeśli odniesiesz się do niej za pomocą odpowiedniej wartości. Możemy użyć operatora -> po nazwie kolumny JSON, a następnie klawisz wewnątrz obiektu JSON. Robiąc tak
Na przykład w tabeli, którą stworzyliśmy powyżej:
Być może zauważyłeś podwójne cytaty w kolumnie zawierającej e -maile. Wynika to z faktu, że operator -> zwraca obiekt JSON, jak obecny w wartości kluczowej „e -mail”. Oczywiście możesz zwrócić tylko SMS, ale zamiast tego będziesz musiał użyć operatora ->>.
Wybierz informacje ->> „E -mail” od użytkowników;Różnica między zwróceniem obiektu JSON a ciągiem staje się jasna, gdy zaczniemy pracować z obiektami JSON zagnieżdżonymi w innych obiektach JSON. Na przykład wybrałem klucz „PersonalDetail”, aby celowo zatrzymać inny obiekt JSON. Możemy również zagłębić się w ten obiekt, jeśli chcemy:
Wybierz informacje -> „PersonalDetails” -> „Płeć” od użytkowników;To może pozwolić ci przejść tak głęboko w obiekt JSON, jak chcesz. Upuśćmy tę tabelę i utwórz nową (o tej samej nazwie), ale z typem JSONB.
Typ danych JSONB
Z wyjątkiem faktu, że podczas tworzenia tabeli wspominamy typ danych JSONB zamiast JSON, wszystko inne Wygląd ten sam.
Utwórz użytkowników tabeli (Nawet wstawienie danych i wyszukiwania za pomocą operatora -> zachowuje się w ten sam sposób. To, co się zmieniło, jest pod maską i zauważalne w występie. Podczas konwersji tekstu JSON w JSONB Postgres faktycznie zamienia różne typy wartości JSON w rodzime typu Postgres, więc nie wszystkie prawidłowe obiekty JSON można zapisać jako prawidłową wartość JSONB.
Co więcej, JSONB nie zachowuje białychpaceów, zamówienia JSON Keys dostarczonych przez instrukcję Insert. JSONB faktycznie przekształca ładunek w binarny natywnych Postgres, stąd termin JSONB.
Oczywiście, wstawienie punktu odniesienia JSONB ma narzut wydajności ze względu na wszystkie te dodatkowe prace, które muszą wykonać Postgres. Jednak zaletą, którą zyskujesz, jest szybsze przetwarzanie już przechowywanych danych, ponieważ aplikacja nie byłaby konieczna przeanalizowania ładunku JSON za każdym razem, gdy pobiera jedną z bazy danych.
JSON vs Jsonb
Decyzja między JSON a JSONB SOLE zależy od twojego przypadku użycia. W razie wątpliwości użyj JSONB, ponieważ większość aplikacji ma częstsze operacje odczytu, które piszą operacje. Z drugiej strony, jeśli masz pewność, że Twoja aplikacja ma wykonać więcej synchronicznych operacji pisania niż odczyt, możesz uznać JSON za alternatywę.
Osoby pracujące z ładunkami JSON i projektowanie interfejsów dla Postgres Storage przyniosą ogromne korzyści z tej konkretnej sekcji ich oficjalnej dokumentacji. Deweloperzy byli na tyle mili, aby dostarczyć nam indeksowanie JSONB i inne fajne funkcje, które można wykorzystać w celu poprawy wydajności i prostoty aplikacji. Błagam cię, abyś je również zbadał.
Mamy nadzieję, że znalazłeś to krótkie wprowadzenie sprawy pomocne i inspirujące.