Funkce a případy použití PostgreSQL
PostgreSQL je open-source objektově-relační systém správy databází (DBMS). Je to pokročilý systém pro správu a analýzu databází, který se používá hlavně pro platformy elektronického obchodu, platební transakce a různá řešení pro ukládání dat. Existuje již více než 30 let a je pravidelně každý rok aktualizován, podporuje různé funkce SQL, jako jsou triggery, uživatelem definované typy a funkce, dílčí dotazy atd.
PostgreSQL je jednou z nejpokročilejších open source databází na světě. Je vhodný pro několik případů použití ve výrobě a vývoji. Poskytuje četné výhody, jako je vylepšené dělení a výkon dotazů (zejména u velkých datových sad), vylepšení B-stromu pro optimální využití prostoru, statistika nejběžnějších hodnot ve více sloupcích (MCV), společné tabulkové výrazy s vkládáním dotazů a kontrolou kontrolního součtu.
Pár slov o Ubuntu 20.04 na DigitalOcean
Ubuntu je populární desktopový operační systém s otevřeným zdrojovým kódem. Ubuntu 20.04 obsahuje řadu špičkových funkcí, jako je nástroj pro správu snímků ZFS, hlavní jádro jádra a vylepšení zabezpečení. Cloudová platforma DigitalOcean poskytuje robustní infrastrukturu a globální dostupnost pro vývoj, správu a škálování aplikací v cloudu. S jeho výpočetními, úložnými, databázovými a síťovými produkty mohou vývojáři vytvářet webové a mobilní aplikace, streamovací služby, hry, řešení SaaS a další. DigitalOcean nabízí funkce jako sdílené privátní sítě, nástroje DevOps na jedno kliknutí a pevné disky SSD a je flexibilní, zabezpečená a jednoduchá volba pro kritická řešení.
Tento tutoriál poskytuje podrobné pokyny, jak nainstalovat PostgreSQL na DigitalOcean Ubuntu 20.04. Bez dalších řečí můžeme začít!
|
Předpoklady pro instalaci PostgreSQL
Než se vrhneme na samotnou instalaci PostgreSQL 12 na DigitalOcean Ubuntu 20.04, musíte se ujistit, že váš systém splňuje následující předpoklady.
- Server by měl mít alespoň základní UFW firewall, aby bylo zajištěno, že budou povolena pouze připojení k určitým službám.
- Systém by měl být aktualizován pro novou instanci serveru a restartován. Chcete-li to provést, použijte následující příkazy:
sudo apt update && sudo apt upgrade –y
sudo reboot
Instalace PostgreSQL na Ubuntu 20.04 DigitalOcean
PostgreSQL 12 můžete nainstalovat pomocí oficiálních/výchozích repozitářů Ubuntu 20.04 pomocí systému správce balíčků apt. Než to uděláte, měli byste již aktualizovat místní index balíčků vašeho serveru (viz předpoklady výše).
Úložiště obsahuje různé balíčky (včetně doplňků třetích stran), jako například:
- postgresql-klient
- postgresql
- libpq-dev
- postgresql-server-dev
- balíčky pgadmin
Poté nainstalujte kompletní balíček PostgreSQL 12 spolu s modulem postgresql-contrib, který poskytuje další nástroje a funkce. To lze nainstalovat spuštěním následujícího příkazu:
sudo apt install postgresql postgresql-contrib –y
Poté spusťte službu PostgreSQL při restartu systému spuštěním následujícího příkazu:
sudo systemctl start postgresql
Chcete-li automaticky spustit službu PostgreSQL při spuštění systému, spusťte:
sudo systemctl enable postgresql
Ověřte, že služba PostgreSQL běží podle očekávání spuštěním systemctl status postgresql:
sudo systemctl status postgresql
To by mělo vrátit stav služby PostgreSQL a mělo by se ukázat jako aktivní, podobně jako na obrázku níže.
Přizpůsobení inicializace PostgreSQL
Po instalaci lze pomocí příkazu initdb vytvořit databázový klastr. Příkaz initdb musí být spuštěn z uživatele databáze, nikoli z uživatele root. Uživatel root může vytvořit prázdný adresář, který může být chown (příkaz změny vlastníka) uživatelem postgres. Tento adresář bude obsahovat data jako šablonu, která se standardně zkopíruje do všech databází. Od uživatele postgres lze vyvolat následující příkaz s příslušnou volbou a názvem adresáře.
initdb [option...] [ --pgdata | -D ] directory
Příkaz initdb lze spustit jako ověřený uživatel s různými příznaky pro vytvoření šablony db v daném adresáři.
Níže je uveden seznam konkrétních příznaků, jak je vidět na snímku obrazovky výše:
--encoding UTF8
(může být jakýkoli na základě národního prostředí).- Příznak kódování nastavuje kódování šablony databáze. Všechny databáze vytvořené pomocí této šablony budou také používat stejnou metodu kódování, pokud není uvedeno samostatně. Pro různé jazyky je k dispozici mnoho metod kódování.
--pgdata test
(tento příznak vytvoří adresář s názvem „test“ pro uložení dat databáze).- Určuje adresář, kam databázový cluster ukládá data.
-A peer
(toto určuje metodu ověřování použitou v souboru pg_hba.conf).- Určuje výchozí metodu ověřování pro místní uživatele používanou v pg_hba.conf (hostitelské a místní linky). initdb předvyplní záznamy pg_hba.conf pomocí zadané metody ověřování pro nereplikační i replikační připojení.
-k
(používá kontrolní součet dat ke kontrole chyb I/O)- Určuje kontrolní součet dat na všech stránkách s údaji, aby bylo možné zjistit poškození I/O systému. To však zpomaluje rychlost zpracování databáze).
Zabezpečení vaší PostgreSQL databáze
Během instalace se ve výchozím nastavení automaticky vytvoří nový uživatel s názvem postgres. Tento uživatel má úplná systémová oprávnění, takže je důležité zabezpečit uživatelský účet silným heslem.
sudo passwd postgres
Nyní se přepněte na uživatelský účet postgres. Uživatel by měl mít oprávnění sudo.
sudo su – postgres
Verzi PostgreSQL lze potvrdit spuštěním
psql -c "SELECT version();"
Chcete-li změnit heslo postgres
příkaz user use:
psql -c "ALTER USER postgres WITH PASSWORD 'MyNewPassword'";
Poznámka:Toto heslo platí pouze při postgres
uživatel se připojí k PostgreSQL přes síť.
Pro přístup k databázi Postgres se můžete přihlásit do databáze PostgreSQL pomocí:
psql postgres
Ve výchozím nastavení PostgreSQL pro přístup k databázi nevyžaduje autentizaci heslem od uživatelů místního systému. Toto se nazývá „peer authentication“. Ověření heslem však lze povolit z pg_hba.conf
soubor.
Chcete-li upravit tento pg_hba.conf
použijte \q
příkaz k ukončení prostředí postgres a ke vstupu do prostředí Linux. V prostředí Linuxu upravte soubor pg_hba.conf
soubor. Před úpravou souboru se ujistěte, že jste si udělali zálohu.
sudo cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.bak
Poté soubor upravte pomocí editoru nano
nano /etc/postgresql/12/main/pg_hba.conf
Najděte místní řádek v části „Pouze připojení soketu domény Unix“ a změňte METHOD
atribut z peer
na md5
.
Chcete-li použít nová nastavení, znovu načtěte službu PostgreSQL.
sudo systemctl reload postgresql
Upozorňujeme, že existují dva uživatelé se jménem postgres; jeden je uživatel Linuxu pro připojení a přístup k databázi a druhý je uživatel databáze, který se používá k provádění administrativních rolí v databázi.
Konfigurace databáze PostgreSQL
PostgreSQL lze ručně nakonfigurovat pro adresy a porty naslouchání změnou požadovaných parametrů v souboru postgresql.conf.
Ve výchozím nastavení se používá port PostgreSQL 5432 a naslouchá na localhost. Toto lze změnit úpravou konfiguračního souboru.
sudo nano /etc/postgresql/12/main/postgresql.conf
Po provedení jakýchkoli změn bude služba restartována.
sudo systemctl restart postgresql
Vytvoření nové role v PostgreSQL 12
Autentizace a autorizace v PostgreSQL 12 probíhá prostřednictvím konceptu „role“. Role je zde flexibilní termín, který se vztahuje jak na uživatele, tak na skupiny.
Přihlaste se k uživateli postgres pomocí následujícího příkazu:
sudo su postgres
Nové role lze vytvářet interaktivně z příkazového řádku pomocí příkazu createrole –interactive. Zde použití příznaku –interactive vytvoří výzvu pro název nové role a zda by této roli měla být přidělena oprávnění superuživatele.
Nový uživatel může být vytvořen s novou rolí mimo uživatelský postgresql shell jako:
createuser –interactive
Výstup příkazu new user by měl vypadat nějak takto.
Vytvoření a smazání databáze na vašem PostgreSQL serveru
V PostgreSQL 12, když je vytvořena nová role, musí existovat nová databáze se stejným názvem, protože se role standardně pokouší připojit k databázi. Stejně jako v předchozí části, kde je vytvořen uživatel liam, lze databázi s tímto jménem vytvořit pomocí následujícího příkazu:
createdb liam
V PostgreSQL 12 existuje několik cest pro vytváření databází podle potřeby:
- Při přihlášení z účtu postgres:
postgres@server:~$ createdb liam
- Použijte
sudo
,sudo –u postgres created liam
Pro smazání databáze můžeme použít
dropdb liam
Otevření výzvy Postgres s novou rolí
Uživatel Linuxu se stejným jménem jako databáze Postgres a rolí může být vytvořen pro přihlášení pomocí ověřování založeného na identitě.
Uživatele Linuxu lze vytvořit (pokud ještě neexistuje) z příkazového řádku zadáním:
sudo adduser noah
Po vytvoření uživatele jej lze přihlásit pomocí následujícího příkazu;
sudo -u noah psql
K aktuální databázi a informacím o uživateli lze přistupovat pomocí;
\conninfo
Správa PostgreSQL
Vytváření a mazání tabulek
SQL příkaz CREATE TABLE
lze použít k vytvoření libovolné tabulky v databázi. V příkazu musí být specifikován seznam sloupců a datový typ pro každý sloupec.
CREATE TABLE customers (customer_id int, first_name varchar(80), last_name varchar(80));
Tento příkaz vytvoří tabulku s názvem „zákazníci“. První sloupec bude obsahovat ID zákazníka typu integer. Druhý a třetí sloupec jsou typu a budou obsahovat jméno a příjmení zákazníků o maximální délce 80 znaků.
Tuto novou tabulku zobrazíte zadáním \d
.
Tabulku lze smazat zadáním:
DROP TABLE customers;
Vkládání, výběr a mazání dat v tabulce
Data jsou přidávána do PostgreSQL tabulek ve formě řádků. Každý řádek představuje samostatnou sadu dat. Data lze do řádku vložit pomocí příkazu INSERT INTO. Za názvem příkazu následuje „název tabulky“ (v následujícím příkladu zákazníci), klíčové slovo VALUES, seznam hodnot oddělených čárkou.
INSERT INTO customers VALUES (1, 'Owen', 'Buyer');
INSERT INTO customers VALUES (2, 'Luke', 'Seller');
Obsah tabulky lze zobrazit pomocí příkazu SELECT.
SELECT * FROM customers;
Řádek lze smazat pomocí DELETE
příkaz. WHERE
klíčové slovo se používá k podmíněnému výběru řádků.
DELETE FROM customers WHERE last_name = 'Seller';
Chcete-li odstranit všechny řádky, zadejte:
SELECT * FROM customers;
Přidávání a vypouštění sloupců z tabulky
PostgreSQL 12 poskytuje možnost snadno přidávat nebo odstraňovat sloupce ze stávajících tabulek.
ALTER TABLE
příkaz se používá spolu s ADD
klíčové slovo pro přidání sloupce do existující tabulky. Toto pole je prázdné pro existující řádky v tabulce.
ALTER TABLE customers ADD branch_id int;
Stejný příkaz se používá s DROP
klíčové slovo pro odstranění zadaného sloupce z tabulky.
ALTER TABLE customers DROP first_name;
Aktualizace dat v tabulce
Kromě přidávání a mazání záznamů v tabulce je můžeme také upravovat. To lze provést pomocí UPDATE
příkaz. Musíme určit sloupce, které je třeba upravit pomocí nových hodnot.
UPDATE customers SET last_name= 'Buyer' WHERE customer_id = '1';
Úvahy o produkčním prostředí
PostgreSQL 12 lze bezpečně používat v produkčním prostředí. Tato databáze je natolik stabilní, že by neměly mít problémy s její implementací ve velkém měřítku. Další informace naleznete v našem předchozím článku zde.
Závěr
Tento tutoriál vám ukázal, jak nastavit PostgreSQL 12 na serveru Ubuntu 20.04 běžícím na DigitalOcean. PostgreSQL 12 je komplexní aplikace s mnoha novými a pokročilými funkcemi, jako je vylepšená správa prostoru standardních indexů B-stromu a podpora souběžného přestavování indexů a vytváření indexů. Verze 12 také podporuje inline WITH dotazy a porovnávání poskytovaná ICU, zlepšuje dělení a poskytuje připojitelné rozhraní pro ukládání tabulek pro vytváření a používání různých metod pro ukládání tabulek.
Nyní, když znáte základy nastavení a používání serveru PostgreSQL, proč nezkusit spravovanou alternativu? Se spravovanou službou, jako je ScaleGrid, můžete dokončit celý proces nastavení, instalace a konfigurace kliknutím na tlačítko. Začněte svou bezplatnou 30denní zkušební verzi ještě dnes a přesvědčte se sami! Není vyžadována žádná kreditní karta a svou úplně první databázi si můžete založit během několika minut.
Pokryli jsme zde základy instalace a také poskytli některé pokyny pro obecnou správu databáze. Doufáme, že vám tato příručka byla užitečná.