Jak być może wiesz, możesz rozszerzyć funkcjonalność PostgreSQL za pomocą rozszerzeń PostgreSQL. Możesz używać różnych rozszerzeń, aby PostgreSQL przypominał wersję korporacyjną i spełniał określone potrzeby. W tym blogu zobaczymy niektóre z najpopularniejszych rozszerzeń open source w PostgreSQL i jak można je wykorzystać do rozszerzenia jego możliwości.
PostgreSQL to najbardziej zaawansowana baza danych typu open source. Każdego roku społeczność PostgreSQL wydaje nową wersję z kilkoma nowymi funkcjami, ale istnieje wiele funkcji opracowanych przy użyciu rozszerzeń, które można wykorzystać w konkretnym przypadku użycia.
Niektóre z tych rozszerzeń są bardzo wydajne i popularne w budowaniu środowiska PostgreSQL klasy korporacyjnej.
Pg_stat_statements
Moduł pg_stat_statements umożliwia śledzenie statystyk wykonania wszystkich instrukcji SQL wykonywanych przez serwer PostgreSQL. Po załadowaniu modułu pg_stat_statements śledzi statystyki we wszystkich bazach danych serwera. Statystyki gromadzone przez moduł pg_stat_statements są udostępniane za pośrednictwem widoku o nazwie pg_stat_statements. Więcej szczegółów na temat funkcji pg_stat_statements i parametrów konfiguracyjnych można sprawdzić tutaj.
PostGIS
PostGIS jest rozszerzeniem systemu baz danych PostgreSQL, które umożliwia przechowywanie obiektów GIS (Geographic Information Systems) w bazie danych. Obejmuje obsługę indeksów przestrzennych R-Tree opartych na GiST oraz funkcje do analizy i przetwarzania obiektów GIS.
PostGIS jest używany dla obiektów przestrzennych i geograficznych dla PostgreSQL. PostGIS dodaje typy (geometria, geografia, raster itp.) do bazy danych PostgreSQL. PostGIS dodaje również funkcje, operatory i rozszerzenia indeksów, które mają zastosowanie do tych typów przestrzennych. Metodę instalacji możesz sprawdzić tutaj.
Postgres_fdw
Moduł postgres_fdw udostępnia opakowanie postgres_fdw dla obcych danych, które może być używane do uzyskiwania dostępu do danych przechowywanych na zewnętrznych serwerach baz danych PostgreSQL. Gdy istnieją dwie bazy danych PostgreSQL, postgres_fdw odnosi się do tabeli drugiej bazy danych z jednej bazy danych. Po zdefiniowaniu TABELA ZAGRANICZNA możesz wykonać WYBIERZ, WSTAW, AKTUALIZUJ, USUŃ jak lokalną bazę danych.
Funkcjonalność zapewniana przez moduł postgres_fdw w znacznym stopniu pokrywa się z funkcjonalnością starszego modułu dblink. Ale moduł postgres_fdw zapewnia bardziej przejrzystą i zgodną ze standardami składnię dostępu do zdalnych tabel i może w wielu przypadkach zapewnić lepszą wydajność.
Głównym przypadkiem użycia tabel obcych jest udostępnienie danych systemom bez ich replikacji lub powielania. Istnieją nawet proste implementacje shardingu przy użyciu FDW, ponieważ dane w innych shardach mogą być dostępne dla zapytań przez FDW.
W Oracle możesz uzyskać dane ze zdalnych tabel bazy danych za pomocą DBLinks, ale główna różnica między DBLinks i FDW polega na tym, że FDW może lokalnie utrzymywać metadane lub definicję tabeli dotyczącej obcej tabeli.
Mysql_fdw
Mysql_fdw to rozszerzenie PostgreSQL implementujące FDW (Foreign Data Wrapper) dla MySQL. Moduł Mysql_fdw ułatwia korzystanie z serwera PostgreSQL jako klienta dla MySQL Server, co oznacza, że może on następnie pobierać dane z bazy danych MySQL jako klient. Obecnie EnterpriseDB utrzymuje ten moduł na github.
Poprzednia wersja mysql_fdw była obsługiwana tylko w trybie tylko do odczytu, ale najnowsza wersja zapewnia możliwość zapisu. Użytkownik może teraz wydawać instrukcje wstawiania, aktualizowania i usuwania dla tabel obcych za pomocą mysql_fdw. Wykorzystuje mechanizm rzutowania typów PostgreSQL, aby zapewnić przeciwne rzutowanie typów między typami danych MySQL i PostgreSQL.
Hstore
Moduł hstore implementuje typ danych hstore do przechowywania par klucz-wartość w pojedynczej wartości w PostgreSQL. Typ danych hstore jest bardzo przydatny w wielu przypadkach użycia, takich jak dane częściowo ustrukturyzowane lub wiersze z wieloma atrybutami, które rzadko są odpytywane. Pamiętaj, że klucze i wartości to tylko ciągi tekstowe.
Przed rozpoczęciem pracy z typem danych hstore, musisz utworzyć rozszerzenie hstore, które ładuje moduł contrib do twojej instancji PostgreSQL.
Pgaaudit
pgAudit to rozszerzenie audytu PostgreSQL, które zapewnia szczegółowe rejestrowanie audytu sesji i/lub obiektów za pomocą standardowej funkcji rejestrowania PostgreSQL.
Głównym celem modułu pgAudit jest zapewnienie użytkownikom PostgreSQL możliwości tworzenia dzienników audytów, często wymaganych do uzyskania zgodności z certyfikatami rządowymi, finansowymi lub ISO.
Ogólnie rzecz biorąc, audyt to oficjalna inspekcja kont osoby lub organizacji, zazwyczaj przeprowadzana przez niezależny organ. Informacje zebrane przez moduł pgAudit są właściwie nazywane ścieżką audytu lub dziennikiem audytu.
Moduł pgAudit został opracowany do obsługi PostgreSQL 9.5 i nowszych wersji.
Logowanie audytu sesji z modułu pgAudit dostarcza szczegółowych logów wszystkich instrukcji wykonanych przez użytkownika w backendzie. Możesz sprawdzić więcej szczegółów, konfigurację oraz sposób instalacji i używania w PostgreSQL tutaj.
Orafa
Orafce to moduł, który implementuje funkcje, typy danych i pakiety kompatybilne z Oracle. Jest to narzędzie typu open source z licencją BSD, więc każdy może z niego korzystać. Ten moduł jest bardzo przydatny w zadaniu migracji z Oracle do PostgreSQL, posiada wiele funkcji Oracle zaimplementowanych w PostgreSQL.
Aplikacje zwykle używają tych funkcji w wielu wystąpieniach. Korzystając z tego narzędzia, możesz zmniejszyć koszt modyfikacji SQL. Możesz sprawdzić, jak przeprowadzić migrację z bloga Oracle do PostgreSQL.
Wszystkie funkcje i pakiety są poprawnie zaimplementowane i dobrze przetestowane.
Niektóre z funkcji to:
- Dbms_output
- Dbms_random
- utl_file – funkcje związane z systemem plików
- Dbms_pipe i dbms_alert
- PLVdate,PLVstr,PLVchr
- Zgodny z Oracle typ danych DATE i funkcje, takie jak ADD_MONTHS, LAST_DAY, NEXT_DAY i tak dalej.
- Funkcja NVL
- Funkcja SUBSTR i SUBSTRB
- Obsługa VARCHAR2 i NVARCHAR2
- DO_DATA()
Pg_bulkload
Moduł Pg_bulkload zapewnia użytkownikom PostgreSQL możliwość szybkiego ładowania danych. Moduł pg_bulkload jest przeznaczony do ładowania ogromnej ilości danych do bazy danych. Możesz załadować dane do tabeli z pominięciem współdzielonych buforów PostgreSQL. Moduł pg_bulkload ma również kilka funkcji ETL, takich jak sprawdzanie poprawności danych wejściowych i transformacja danych za pomocą funkcji filtrowania.
Pierwotnym celem modułu pg_bulkload była szybsza alternatywa dla polecenia COPY w PostgreSQL.
Moduł Pg_bulkload jest rozwijany i utrzymywany przez NTT OSS Center.
WAŻNA UWAGA:W środowisku replikacji strumieniowej w PostgreSQL moduł pg_bulkload nie działa poprawnie. Więcej informacji znajdziesz tutaj.
Pgstattuple
Moduł pgstattuple udostępnia różne funkcje do uzyskiwania statystyk krotek w PostgresQL. Funkcja w module pgstattuple zwraca fizyczną długość relacji, procent „martwych” krotek i inne informacje. Może to być pomocne dla użytkowników w ustaleniu, czy próżnia jest konieczna, czy nie. Argumentem funkcji jest nazwa relacji docelowej (opcjonalnie kwalifikowana według schematu) lub OID.
Pg_trgm
pg_trgm to rozszerzenie PostgreSQL zapewniające proste rozmyte dopasowanie ciągów w PostgreSQL. Jego koszty operacyjne i koncepcyjne są znacznie niższe niż w przypadku wyszukiwania pełnotekstowego PostgreSQL lub oddzielnej wyszukiwarki.
Trygram lub trygraf to grupa trzech kolejnych znaków pobranych z ciągu. Możesz zmierzyć podobieństwo dwóch ciągów, licząc liczbę trygramów, które dzielą. Ta prosta idea trygramu okazuje się bardzo skuteczna w mierzeniu podobieństwa słów w wielu językach naturalnych.
Ogólnie rzecz biorąc, moduł pg_trgm może pomóc, gdy:
- Potrzebujesz rozmytego dopasowywania ciągów znaków bez uwzględniania wielkości liter w PostgreSQL.
- Chcesz przyspieszyć LIKE, ILIKE, ~ lub ~* w PostgreSQL.
- Chcesz wyszukać wzorce, które nie są zakotwiczone z lewej strony (np. %john%). Takie wzorce nie są obsługiwane przez indeksy B-drzewa w PostgreSQL.
Powyższa lista modułów/rozszerzeń jest bardzo przydatna do rozszerzenia możliwości PostgreSQL. Jest jeszcze kilka rozszerzeń, których nie ma na blogu, ale bardzo przydatne jest rozszerzenie funkcjonalności PostgreSQL. Oto one.
- Rozszerzenia językowe:PL/Python, PL/Perl, PL/R, PL/v8, PL/sh itp.
- Cstore_fdw
- Mongo_fdw
- HypoPG
- Tds_fdw
- Plprofiler
Wniosek
Istnieje wiele rozszerzeń obsługiwanych przez społeczność PostgreSQL i niektóre rozszerzenia stron trzecich, wszystkie używane w konkretnym przypadku użycia. Korzystając z tych modułów, możesz rozszerzyć możliwości lub funkcjonalność PostgreSQL.