Przejdź do treści

HStore – prosty magazyn klucz-wartość

    HSTore dictionary

    Typ HStore w Postgresie jest magazynem klucz-wartość (key-value). Działanie HStore jest bardzo zbliżone do używania słownika w innym języku programowania. Może znaleźć zastosowanie przy danych częściowo ustrukturyzowanych lub takich, które nie zawsze będziemy chcieli pobierać, mniej ważniejszych.

    Wraz z wydaniem Postgres w wersji 9.4 i dodaniu obsługi JSONB, w większości przypadków staje się to lepszym podejściem niż po prostu HStore. Niemniej jednak, sama znajomość HStore może okazać się przydatna, a funkcjonalności jakie oferuje – wystarczające.

    Włączenie HStore

    Jeśli nigdy wcześniej nie spotkałeś się z typem HStore, to prawdopodobnie nie jest on aktywny w Twojej bazie Postgres. Aby korzystać z typu danych HStore, musimy włączyć rozszerzenie HStore.
    Składnia dodania HStore do naszej bazy danych jest następująca:

    Wykorzystanie HStore

    Po wykonaniu tej komendy, możemy stworzyć pierwszą tabelę wykorzystującą typ HStore w jednej z kolumn (elements).

    Oczywiście możliwa też jest zmiana istniejącego typu tekstowego (varchar) na HStore, pod warunkiem spełnienia wymaganego formatu zapisanego ciągu znaków. Format ten (klucz-wartość, rozdzielone przecinkami) prezentuje się następująco:

    key1 => value1, key2 => value2

    W poleceniach INSERT/UPDATE wartości key, oraz value, mogą znajdować się w cudzysłowach („key” => „value”), jednak ostateczny format jest upraszczany do tego przedstawionego powyżej.

    Odbierz darmowy eBook

    Słownik w praktyczne

    Masz już uruchomiony moduł HStore, oraz pierwszą tabelę wykorzystującą ten typ w Postgresql. Teraz pora na wykorzystanie HStore w praktycznym przykładzie. Najpierw umieśćmy w tabeli kilka przykładowych rekordów, a następnie zobaczysz jak można wykorzystać HStore w zapytaniach (SELECT).

    Pora na praktyczne wykorzystanie HStore:

    Pierwsze zapytania zwraca wszystkie dane z tabeli items – możemy zweryfikować wprowadzone wcześniej dane.
    Kolejne (2,3) pobierają konkretne fragmenty z słownika HStore. W przypadku braku danego klucza w słowniku, zwracana jest wartość null. W kolejnym zapytaniu (4) zwrócone zostaną detale przedmiotów, które posiadają dany klucz w HStore elements, pozostałe zostaną odfiltrowane. Warto zauważyć, że przy wykorzystaniu grupowania (GROUP BY) w przypadku braku danego klucza, powstaje też grupa z kluczem o wartości null – czyli pozostałe, nie posiadające tego klucza elementy tworzą oddzielną grupę.

    Update HStore

    Oczywistym jest, że prędzej czy później, będziesz chciał wprowadzić zmiany w danych, rozszerzyć elements o kolejne atrybuty, lub aktualizować obecne. Funkcja UPDATE działa płynnie i intuicyjnie.

    Możliwości jakie otrzymujesz są kompletne: możesz zmienić wartość dla istniejącego klucza, dodać nieistniejący klucz, lub też klucz usunąć, w jednym elemencie lub w całej grupie, w zależności od warunku WHERE.

    Podsumowanie

    Mam nadzieję, że udało mi się przybliżyć Tobie typ HStore w PostgreSQL. Tak jak wspomniałem na wstępie, HStore jest dobrym wstępem do poznania JSONB, znacznie bardziej rozbudowanego i oferującego znacznie szerszy zakres możliwości, ale o tym w kolejnym artykule.

    Jeśli interesuje Ciebie ta tematyka, koniecznie zapisz się do mojej listy mailowej, właśnie rusza cały pakiet ciekawych materiałów w tej tematyce.

    Więcej przykładów zastosowania znajdziesz tutaj. Uwagi, pytania, sugestie? Zostaw komentarz lub skorzystaj z formularza.

    Subskrybuj
    Powiadom o
    guest
    0 Komentarze
    Najstarsze
    Najnowsze Najwięcej głosów