Funkcje PostgreSQL i przypadki użycia
PostgreSQL to obiektowy system zarządzania bazami danych (DBMS) o otwartym kodzie źródłowym. Jest to zaawansowany system zarządzania i analizy baz danych, który jest używany głównie w platformach eCommerce, transakcjach płatniczych i różnych rozwiązaniach do hurtowni danych. Istnieje od ponad 30 lat i jest regularnie aktualizowany co roku, obsługuje różne funkcje SQL, takie jak wyzwalacze, typy i funkcje zdefiniowane przez użytkownika, podzapytania itp.
PostgreSQL to jedna z najbardziej zaawansowanych na świecie baz danych typu open source. Nadaje się do kilku zastosowań produkcyjnych i programistycznych. Zapewnia wiele korzyści, takich jak ulepszone partycjonowanie i wydajność zapytań (szczególnie w przypadku dużych zestawów danych), ulepszenia B-drzewa w celu optymalnego wykorzystania przestrzeni, statystyki najczęściej używanych wartości (MCV) w wielu kolumnach, wspólne wyrażenia tabelowe z wstawianiem zapytań i kontrolą sum kontrolnych.
Kilka słów o Ubuntu 20.04 na DigitalOcean
Ubuntu to popularny komputerowy system operacyjny typu open source. Ubuntu 20.04 zawiera wiele najnowocześniejszych funkcji, takich jak narzędzie do zarządzania migawkami ZFS, duży skok jądra i ulepszenia bezpieczeństwa. Platforma chmurowa DigitalOcean zapewnia solidną infrastrukturę i globalną dostępność do tworzenia, zarządzania i skalowania aplikacji w chmurze. Dzięki swoim produktom obliczeniowym, pamięci masowej, bazom danych i produktom sieciowym programiści mogą tworzyć aplikacje internetowe i mobilne, usługi przesyłania strumieniowego, gry, rozwiązania SaaS i nie tylko. Oferując funkcje, takie jak współdzielona sieć prywatna, narzędzia DevOps jednym kliknięciem i dyski twarde SSD, DigitalOcean jest elastycznym, bezpiecznym i prostym wyborem dla rozwiązań o znaczeniu krytycznym.
Ten samouczek zawiera szczegółowe instrukcje dotyczące instalacji PostgreSQL na DigitalOcean Ubuntu 20.04. Bez dalszych ceregieli zacznijmy!
|
Warunki wstępne instalacji PostgreSQL
Zanim przejdziemy do faktycznej instalacji PostgreSQL 12 na DigitalOcean Ubuntu 20.04, musisz upewnić się, że Twój system spełnia następujące wymagania wstępne.
- Serwer powinien mieć co najmniej podstawową zaporę sieciową UFW, aby zapewnić, że dozwolone są tylko połączenia z określonymi usługami.
- System powinien zostać zaktualizowany o nową instancję serwera i ponownie uruchomiony. Aby to zrobić, użyj następujących poleceń:
sudo apt update && sudo apt upgrade –y
sudo reboot
Instalacja PostgreSQL na Ubuntu 20.04 DigitalOcean
Możesz zainstalować PostgreSQL 12 przy użyciu oficjalnych/domyślnych repozytoriów Ubuntu 20.04 przy użyciu systemu menedżera pakietów apt. Zanim to zrobisz, powinieneś już odświeżyć lokalny indeks pakietów serwera (patrz wymagania wstępne powyżej).
Repozytorium zawiera różne pakiety (w tym dodatki innych firm), takie jak:
- klient-postgresql
- postgresql
- libpq-dev
- postgresql-server-dev
- pakiety pgadmin
Następnie zainstaluj kompletny pakiet PostgreSQL 12 wraz z modułem postgresql-contrib, który zapewnia dodatkowe narzędzia i funkcje. Można to zainstalować, uruchamiając następujące polecenie:
sudo apt install postgresql postgresql-contrib –y
Następnie uruchom usługę PostgreSQL przy ponownym uruchomieniu systemu, uruchamiając następujące polecenie:
sudo systemctl start postgresql
Aby automatycznie uruchomić usługę PostgreSQL przy starcie systemu, uruchom:
sudo systemctl enable postgresql
Sprawdź, czy usługa PostgreSQL działa zgodnie z oczekiwaniami, uruchamiając systemctl status postgresql:
sudo systemctl status postgresql
Powinno to zwrócić stan usługi PostgreSQL i pokazać aktywne, podobnie jak na poniższym zrzucie ekranu.
Dostosowywanie inicjalizacji PostgreSQL
Po instalacji klaster bazy danych można utworzyć za pomocą polecenia initdb. Komenda initdb musi być uruchamiana z poziomu użytkownika bazy danych, a nie użytkownika root. Użytkownik root może utworzyć pusty katalog, który może zostać chownowany (polecenie zmiany właściciela) przez użytkownika postgres. Ten katalog będzie zawierał dane jako szablon, który domyślnie zostanie skopiowany do wszystkich baz danych. Z użytkownika postgres można wywołać następujące polecenie z odpowiednią opcją i nazwą katalogu.
initdb [option...] [ --pgdata | -D ] directory
Polecenie initdb można uruchomić jako uwierzytelniony użytkownik z różnymi flagami, aby utworzyć szablon db w danym katalogu.
Poniżej znajduje się lista konkretnych flag, jak widać na powyższym zrzucie ekranu:
--encoding UTF8
(może być dowolny w zależności od lokalizacji).- Flaga kodowania ustawia kodowanie szablonu bazy danych. Wszystkie bazy danych utworzone przy użyciu tego szablonu będą również używać tej samej metody kodowania, chyba że określono inaczej. Dostępnych jest wiele metod kodowania dla różnych języków.
--pgdata test
(ta flaga tworzy katalog o nazwie „test” do przechowywania danych bazy danych).- Określa katalog, w którym klaster bazy danych zapisuje swoje dane.
-A peer
(określa to metodę uwierzytelniania używaną w pliku pg_hba.conf).- Określa domyślną metodę uwierzytelniania dla użytkowników lokalnych używaną w pg_hba.conf (linie hosta i lokalne). initdb wstępnie wypełni wpisy pg_hba.conf przy użyciu określonej metody uwierzytelniania dla połączeń niereplikacyjnych, jak również dla połączeń replikacyjnych.
-k
(wykorzystuje sumę kontrolną danych do sprawdzania błędów we/wy)- Określa sumę kontrolną danych na wszystkich stronach danych w celu wykrycia uszkodzenia systemu we/wy. Spowalnia to jednak szybkość przetwarzania bazy danych).
Zabezpieczenie bazy danych PostgreSQL
Podczas instalacji domyślnie tworzony jest nowy użytkownik o nazwie postgres. Ten użytkownik ma pełne uprawnienia systemowe, dlatego ważne jest, aby zabezpieczyć konto użytkownika silnym hasłem.
sudo passwd postgres
Teraz przejdź do konta użytkownika postgres. Użytkownik powinien mieć uprawnienia sudo.
sudo su – postgres
Wersję PostgreSQL można potwierdzić, uruchamiając
psql -c "SELECT version();"
Aby zmienić hasło postgres
komenda użytkownika:
psql -c "ALTER USER postgres WITH PASSWORD 'MyNewPassword'";
Uwaga:to hasło ma zastosowanie tylko wtedy, gdy postgres
użytkownik łączy się z PostgreSQL przez sieć.
Aby uzyskać dostęp do bazy danych Postgres, możesz zalogować się do bazy danych PostgreSQL za pomocą:
psql postgres
Domyślnie PostgreSQL nie wymaga uwierzytelniania hasłem od użytkowników systemu lokalnego w celu uzyskania dostępu do bazy danych. Nazywa się to „uwierzytelnianiem równorzędnym”. Jednak uwierzytelnianie hasłem można włączyć z poziomu pg_hba.conf
plik.
Aby edytować ten pg_hba.conf
plik, użyj \q
polecenie, aby wyjść z powłoki postgres i wejść do powłoki Linuksa. Wewnątrz powłoki Linux edytuj plik pg_hba.conf
plik. Upewnij się, że wykonałeś kopię zapasową przed edycją pliku.
sudo cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.bak
Następnie edytuj plik za pomocą edytora nano,
nano /etc/postgresql/12/main/pg_hba.conf
Znajdź linię lokalną w sekcji „Tylko połączenia z gniazdem domeny uniksowej” i zmień METHOD
atrybut z peer
do md5
.
Załaduj ponownie usługę PostgreSQL, aby zastosować nowe ustawienia.
sudo systemctl reload postgresql
Zwróć uwagę, że jest dwóch użytkowników o nazwie postgres; jeden to użytkownik Linuksa, który łączy się i uzyskuje dostęp do bazy danych, a drugi to użytkownik bazy danych używany do wykonywania ról administracyjnych w bazie danych.
Konfiguracja bazy danych PostgreSQL
PostgreSQL można skonfigurować ręcznie dla adresów i portów nasłuchiwania, zmieniając wymagane parametry w pliku postgresql.conf.
Domyślnie używany jest port PostgreSQL 5432 i nasłuchuje na hoście lokalnym. Można to zmienić, edytując plik konfiguracyjny.
sudo nano /etc/postgresql/12/main/postgresql.conf
Po wprowadzeniu jakichkolwiek zmian usługa zostanie ponownie uruchomiona.
sudo systemctl restart postgresql
Tworzenie nowej roli w PostgreSQL 12
Uwierzytelnianie i autoryzacja w PostgreSQL 12 odbywa się za pomocą koncepcji „roli”. Tutaj rola jest terminem elastycznym, który odnosi się zarówno do użytkowników, jak i grup.
Zaloguj się do użytkownika postgres za pomocą następującego polecenia:
sudo su postgres
Nowe role można tworzyć interaktywnie z wiersza poleceń za pomocą polecenia createrole –interactive. W tym przypadku użycie flagi –interactive spowoduje wyświetlenie monitu o nazwę nowej roli oraz o to, czy tej roli należy przypisać uprawnienia administratora.
Nowego użytkownika można utworzyć z nową rolą poza powłoką użytkownika postgresql jako:
createuser –interactive
Wynik nowego polecenia użytkownika powinien wyglądać mniej więcej tak.
Tworzenie i usuwanie bazy danych na serwerze PostgreSQL
W PostgreSQL 12, gdy tworzona jest nowa rola, musi istnieć nowa baza danych o tej samej nazwie, ponieważ rola domyślnie próbuje połączyć się z bazą danych. Tak jak w poprzedniej sekcji, gdzie tworzony jest liam użytkownika, bazę danych o tej nazwie można utworzyć za pomocą następującego polecenia:
createdb liam
W PostgreSQL 12 istnieje wiele ścieżek do tworzenia baz danych zgodnie z wymaganiami:
- Po zalogowaniu się z konta postgres:
postgres@server:~$ createdb liam
- Użyj
sudo
,sudo –u postgres created liam
Aby usunąć bazę danych, możemy użyć
dropdb liam
Otwieranie monitu Postgres z nową rolą
Użytkownik Linuksa o tej samej nazwie co baza danych i rola Postgres może zostać utworzony, aby logować się z uwierzytelnianiem opartym na identyfikatorze.
Użytkownik Linuksa można utworzyć (jeśli jeszcze nie istnieje) z wiersza poleceń, wpisując:
sudo adduser noah
Po utworzeniu użytkownika można go zalogować za pomocą następującego polecenia;
sudo -u noah psql
Dostęp do bieżącej bazy danych i informacji o użytkowniku można uzyskać za pomocą;
\conninfo
Zarządzanie PostgreSQL
Tworzenie i usuwanie tabel
Polecenie SQL CREATE TABLE
może służyć do tworzenia dowolnej tabeli w bazie danych. W poleceniu należy określić listę kolumn i typ danych dla każdej kolumny.
CREATE TABLE customers (customer_id int, first_name varchar(80), last_name varchar(80));
To polecenie utworzy tabelę o nazwie „klienci”. Pierwsza kolumna będzie zawierała identyfikator klienta typu liczba całkowita. Druga i trzecia kolumna są typu character i będą zawierać imię i nazwisko klientów o maksymalnej długości 80 znaków.
Tę nową tabelę można zobaczyć, wpisując \d
.
Tabelę można usunąć, wpisując:
DROP TABLE customers;
Wstawianie, wybieranie i usuwanie danych w tabeli
Dane są dodawane do tabel PostgreSQL w postaci wierszy. Każdy wiersz reprezentuje osobny zestaw danych. Dane można wstawić do wiersza za pomocą polecenia INSERT INTO. Po nazwie polecenia następuje „nazwa tabeli” (w poniższym przykładzie klienci), słowo kluczowe WARTOŚCI, lista wartości oddzielonych przecinkami.
INSERT INTO customers VALUES (1, 'Owen', 'Buyer');
INSERT INTO customers VALUES (2, 'Luke', 'Seller');
Zawartość tabeli można wyświetlić za pomocą polecenia WYBIERZ.
SELECT * FROM customers;
Wiersz można usunąć za pomocą DELETE
Komenda. WHERE
słowo kluczowe służy do warunkowego wybierania wierszy.
DELETE FROM customers WHERE last_name = 'Seller';
Aby usunąć wszystkie wiersze, wpisz:
SELECT * FROM customers;
Dodawanie i usuwanie kolumn z tabeli
PostgreSQL 12 zapewnia możliwość łatwego dodawania lub usuwania kolumn z istniejących tabel.
ALTER TABLE
polecenie jest używane wraz z ADD
słowo kluczowe, aby dodać kolumnę do istniejącej tabeli. To pole jest puste dla istniejących wierszy w tabeli.
ALTER TABLE customers ADD branch_id int;
To samo polecenie jest używane z DROP
słowo kluczowe, aby usunąć określoną kolumnę z tabeli.
ALTER TABLE customers DROP first_name;
Aktualizacja danych w tabeli
Oprócz dodawania i usuwania rekordów w tabeli, możemy je również modyfikować. Można to zrobić za pomocą UPDATE
Komenda. Musimy określić kolumny, które mają być edytowane z nowymi wartościami.
UPDATE customers SET last_name= 'Buyer' WHERE customer_id = '1';
Rozważania dotyczące środowiska produkcyjnego
PostgreSQL 12 może być bezpiecznie używany w środowisku produkcyjnym. Ta baza danych jest na tyle stabilna, że nie powinno być problemów z jej wdrożeniem na dużą skalę. Aby uzyskać więcej informacji, zapoznaj się z naszym poprzednim artykułem tutaj.
Wniosek
Ten samouczek pokazał, jak skonfigurować PostgreSQL 12 na serwerze Ubuntu 20.04 działającym na DigitalOcean. PostgreSQL 12 to złożona aplikacja z wieloma nowymi i zaawansowanymi funkcjami, takimi jak ulepszone zarządzanie przestrzenią standardowych indeksów B-drzewa oraz wsparcie dla współbieżnej przebudowy indeksu i pokrywania tworzenia indeksu. Wersja 12 obsługuje również wbudowane zapytania WITH i sortowanie dostarczane przez ICU, poprawia partycjonowanie i zapewnia podłączany interfejs przechowywania tabel do tworzenia i używania różnych metod przechowywania tabel.
Skoro znasz już podstawy konfigurowania i używania serwera PostgreSQL, dlaczego nie wypróbować zarządzanej alternatywy? Dzięki usłudze zarządzanej, takiej jak ScaleGrid, możesz ukończyć cały proces instalacji, instalacji i konfiguracji jednym kliknięciem. Rozpocznij bezpłatny 30-dniowy okres próbny już dziś i przekonaj się sam! Nie jest wymagana karta kredytowa, a swoją pierwszą bazę danych możesz skonfigurować w ciągu kilku minut.
Omówiliśmy tutaj podstawy instalacji, a także dostarczyliśmy kilka instrukcji dotyczących ogólnego administrowania bazą danych. Mamy nadzieję, że ten przewodnik okazał się przydatny.