PostgreSQL-funktioner og anvendelsestilfælde
PostgreSQL er et open source-objektrelationelt databasestyringssystem (DBMS). Det er et avanceret databasestyrings- og analysesystem, der hovedsageligt bruges til e-handelsplatforme, betalingstransaktioner og forskellige data warehousing-løsninger. Det har eksisteret i over 30 år og opdateres regelmæssigt hvert år, understøtter forskellige SQL-funktioner som triggere, brugerdefinerede typer og funktioner, underforespørgsler osv.
PostgreSQL er en af verdens mest avancerede open source-databaser. Den er velegnet til adskillige produktions- og udviklingsanvendelser. Det giver adskillige fordele, såsom forbedret partitionering og forespørgselsydeevne (især over store datasæt), B-træforbedringer for optimal pladsudnyttelse, statistik over den mest almindelige værdi (MCV) med flere kolonner, almindelige tabeludtryk med forespørgselsinlining og kontrolsumkontrol.
Et par ord om Ubuntu 20.04 på DigitalOcean
Ubuntu er et populært open source desktop-operativsystem. Ubuntu 20.04 indeholder adskillige avancerede funktioner, såsom et værktøj til at administrere ZFS-øjebliksbilleder, et stort kernebump og sikkerhedsforbedringer. DigitalOcean cloud-platformen giver en robust infrastruktur og global tilgængelighed til at udvikle, administrere og skalere applikationer i skyen. Med sine computer-, lagrings-, databaser og netværksprodukter kan udviklere bygge web- og mobilapplikationer, streamingtjenester, spil, SaaS-løsninger og mere. DigitalOcean tilbyder funktioner som delt privat netværk, et-klik DevOps-værktøjer og SSD-harddiske og er et fleksibelt, sikkert og enkelt valg til missionskritiske løsninger.
Denne vejledning giver detaljerede instruktioner om, hvordan du installerer PostgreSQL på DigitalOcean Ubuntu 20.04. Lad os uden videre komme i gang!
|
Forudsætninger for at installere PostgreSQL
Før vi dykker ned i selve installationen af PostgreSQL 12 på DigitalOcean Ubuntu 20.04, skal du sikre dig, at dit system opfylder følgende forudsætninger.
- Serveren skal have mindst en grundlæggende UFW-firewall for at sikre, at kun forbindelser til bestemte tjenester er tilladt.
- Systemet skal opdateres til en ny serverforekomst og genstartes. For at gøre det skal du bruge følgende kommandoer:
sudo apt update && sudo apt upgrade –y
sudo reboot
Installation af PostgreSQL på Ubuntu 20.04 DigitalOcean
Du kan installere PostgreSQL 12 ved hjælp af Ubuntu 20.04 officielle/default repositories ved hjælp af apt-pakkehåndteringssystemet. Før du gør dette, bør du allerede have opdateret din servers lokale pakkeindeks (se forudsætninger ovenfor).
Lagret indeholder forskellige pakker (inklusive 3. parts tilføjelser), såsom:
- postgresql-klient
- postgresql
- libpq-dev
- postgresql-server-dev
- pgadmin-pakker
Installer derefter den komplette PostgreSQL 12-pakke sammen med postgresql-contrib-modulet, der giver yderligere hjælpeprogrammer og funktionalitet. Dette kan installeres ved at køre følgende kommando:
sudo apt install postgresql postgresql-contrib –y
Start derefter PostgreSQL-tjenesten ved systemgenstart ved at køre følgende kommando:
sudo systemctl start postgresql
For automatisk at starte PostgreSQL-tjenesten ved systemstart skal du køre:
sudo systemctl enable postgresql
Bekræft, at PostgreSQL-tjenesten kører som forventet ved at køre systemctl status postgresql:
sudo systemctl status postgresql
Dette skulle returnere status for PostgreSQL-tjenesten og skulle vise aktiv, svarende til skærmbilledet nedenfor.
Tilpasning af PostgreSQL-initialisering
Efter installationen kan en databaseklynge oprettes ved hjælp af kommandoen initdb. Kommandoen initdb skal køres fra databasebrugeren og ikke fra root-brugeren. Rodbrugeren kan oprette en tom mappe, som kan vælges (skift ejerkommando) af postgres-brugeren. Denne mappe vil indeholde dataene som en skabelon, som som standard vil blive kopieret til alle databaser. Fra postgres-brugeren kan følgende kommando fremkaldes med den passende indstilling og mappenavn.
initdb [option...] [ --pgdata | -D ] directory
Kommandoen initdb kan køres som en autentificeret bruger med de forskellige flag for at skabe en db-skabelon i en given mappe.
Nedenfor er en liste over specifikke flag som ses på skærmbilledet ovenfor:
--encoding UTF8
(det kan være en hvilken som helst baseret på lokaliteten).- Kodningsflag indstiller kodningen af databaseskabelonen. Alle databaser, der er oprettet ved hjælp af denne skabelon, vil også bruge den samme indkodningsmetode, medmindre det er angivet separat. Der er mange kodningsmetoder tilgængelige for forskellige sprog.
--pgdata test
(dette flag opretter en mappe med navnet "test" for at gemme databasedataene).- Specificerer den mappe, hvor databaseklyngen gemmer sine data.
-A peer
(dette angiver den godkendelsesmetode, der bruges i filen pg_hba.conf).- Specificerer standardgodkendelsesmetoden for lokale brugere, der bruges i pg_hba.conf (værts- og lokale linjer). initdb vil på forhånd udfylde pg_hba.conf-poster ved hjælp af den angivne godkendelsesmetode for ikke-replikering samt replikeringsforbindelser.
-k
(bruger data-checksum til at kontrollere I/O-fejl)- Specificerer datakontrolsummen på alle datasiderne for at opdage korruptionen af I/O-systemet. Dette sænker dog databasebehandlingshastigheden).
Sikring af din PostgreSQL-database
Under installationen oprettes en ny bruger ved navn postgres automatisk som standard. Denne bruger har fulde systemrettigheder, så det er vigtigt at sikre brugerkontoen med en stærk adgangskode.
sudo passwd postgres
Skift nu til postgres-brugerkontoen. Brugeren skal have sudo-rettigheder.
sudo su – postgres
PostgreSQL-versionen kan bekræftes ved at køre
psql -c "SELECT version();"
For at ændre adgangskoden til postgres
brugerbrug kommando:
psql -c "ALTER USER postgres WITH PASSWORD 'MyNewPassword'";
Bemærk:Denne adgangskode gælder kun, når postgres
brugeren opretter forbindelse til PostgreSQL over netværket.
For at få adgang til Postgres-databasen kan du logge ind på PostgreSQL-databasen med:
psql postgres
Som standard kræver PostgreSQL ikke adgangskodegodkendelse fra lokale systembrugere for at få adgang til databasen. Dette kaldes "peer-godkendelse". Adgangskodegodkendelse kan dog aktiveres fra pg_hba.conf
fil.
For at redigere denne pg_hba.conf
fil, brug \q
kommando for at afslutte postgres-skallen og gå ind i Linux-skallen. Rediger pg_hba.conf
inde fra Linux-skallen fil. Sørg for at tage en sikkerhedskopi, før du redigerer filen.
sudo cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.bak
Rediger derefter filen ved hjælp af nano-editor,
nano /etc/postgresql/12/main/pg_hba.conf
Find den lokale linje under "Kun Unix-domæne-socket-forbindelser", og skift METHOD
attribut fra peer
til md5
.
Genindlæs PostgreSQL-tjenesten for at anvende de nye indstillinger.
sudo systemctl reload postgresql
Bemærk venligst her, at der er to brugere med navnet postgres; den ene er Linux-brugeren til at forbinde og få adgang til databasen, og den anden er databasebrugeren, der bruges til at udføre administrative roller i databasen.
Konfiguration af din PostgreSQL-database
PostgreSQL kan konfigureres manuelt til lytteadresser og porte ved at ændre de nødvendige parametre i postgresql.conf-filen.
Som standard bruges PostgreSQL-porten 5432 og lytter på localhost. Dette kan ændres ved at redigere konfigurationsfilen.
sudo nano /etc/postgresql/12/main/postgresql.conf
Tjenesten genstartes efter ændringer.
sudo systemctl restart postgresql
Oprettelse af en ny rolle i PostgreSQL 12
Autentificering og autorisation i PostgreSQL 12 sker via "rolle"-konceptet. Her er rolle et fleksibelt begreb, der refererer til både brugere og grupper.
Log ind på postgres-brugeren ved at bruge følgende kommando:
sudo su postgres
Nye roller kan oprettes interaktivt fra kommandolinjen med kommandoen createrole –interactive. Her vil brugen af det interaktive flag skabe en prompt om navnet på den nye rolle, og om denne rolle skal tildeles superbrugertilladelser.
En ny bruger kan oprettes med en ny rolle uden for brugerens postgresql shell som:
createuser –interactive
Outputtet af den nye brugerkommando skulle se nogenlunde sådan ud.
Oprettelse og sletning af en database i din PostgreSQL-server
I PostgreSQL 12, når en ny rolle oprettes, skal der eksistere en ny database med samme navn, da rollen som standard forsøger at oprette forbindelse til databasen. Så som i det foregående afsnit, hvor brugeren liam er oprettet, kan en database med det navn oprettes ved at bruge følgende kommando:
createdb liam
Inden for PostgreSQL 12 er der flere stier til at oprette databaser efter behov:
- Når du er logget ind fra postgres-kontoen:
postgres@server:~$ createdb liam
- Brug
sudo
,sudo –u postgres created liam
For at slette databasen kan vi bruge
dropdb liam
Åbning af en Postgres-prompt med den nye rolle
En Linux-bruger med samme navn som Postgres-databasen og rollen kan oprettes til at logge på med ident-baseret godkendelse.
En Linux-bruger kan oprettes (hvis en ikke allerede eksisterer) fra kommandolinjen ved at skrive:
sudo adduser noah
Efter at brugeren er oprettet, kan den logges på ved at bruge følgende kommando;
sudo -u noah psql
Den aktuelle database og brugerinformation kan tilgås ved at bruge;
\conninfo
PostgreSQL Management
Oprettelse og sletning af tabeller
SQL-kommandoen CREATE TABLE
kan bruges til at oprette en hvilken som helst tabel i en database. En liste over kolonner og en datatype for hver kolonne skal angives i kommandoen.
CREATE TABLE customers (customer_id int, first_name varchar(80), last_name varchar(80));
Denne kommando vil oprette en tabel med navnet "kunder". Den første kolonne vil indeholde kunde-id'et af typen heltal. Den anden og tredje kolonne er af typen karakter og vil indeholde for- og efternavne på kunderne med en maksimal længde på 80 tegn.
Denne nye tabel kan ses ved at skrive \d
.
Tabellen kan slettes ved at skrive:
DROP TABLE customers;
Indsættelse, valg og sletning af data i en tabel
Data tilføjes i PostgreSQL-tabellerne i form af rækker. Hver række repræsenterer et separat sæt data. Data kan indsættes i rækken ved at bruge kommandoen INSERT INTO. Kommandonavnet efterfølges af "tabelnavnet" (i følgende eksempel kunder), søgeordet VALUES, en liste over værdier adskilt af et komma.
INSERT INTO customers VALUES (1, 'Owen', 'Buyer');
INSERT INTO customers VALUES (2, 'Luke', 'Seller');
Indholdet af tabellen kan ses ved at bruge SELECT-kommandoen.
SELECT * FROM customers;
En række kan slettes ved at bruge DELETE
kommando. WHERE
nøgleordet bruges til at vælge rækkerne betinget.
DELETE FROM customers WHERE last_name = 'Seller';
For at slette alle rækkerne skal du skrive:
SELECT * FROM customers;
Tilføjelse og sletning af kolonner fra en tabel
PostgreSQL 12 giver mulighed for nemt at tilføje eller slette kolonner fra de eksisterende tabeller.
ALTER TABLE
kommandoen bruges sammen med ADD
nøgleord for at tilføje en kolonne til en eksisterende tabel. Dette felt er sat tomt for de eksisterende rækker i tabellen.
ALTER TABLE customers ADD branch_id int;
Den samme kommando bruges med DROP
nøgleord for at slette den angivne kolonne fra tabellen.
ALTER TABLE customers DROP first_name;
Opdatering af data i en tabel
Udover at tilføje og slette poster i en tabel, kan vi også ændre dem. Dette kan gøres ved at bruge UPDATE
kommando. Vi skal angive de kolonner, der skal redigeres med de nye værdier.
UPDATE customers SET last_name= 'Buyer' WHERE customer_id = '1';
Overvejelser for produktionsmiljø
PostgreSQL 12 kan bruges sikkert i et produktionsmiljø. Denne database er så stabil, at man ikke burde have problemer med at implementere den i stor skala. For mere information, se venligst vores tidligere artikel her.
Konklusion
Denne vejledning viste dig, hvordan du konfigurerer PostgreSQL 12 på en Ubuntu 20.04-server, der kører på DigitalOcean. PostgreSQL 12 er en kompleks applikation med mange nye og avancerede funktioner, såsom forbedret pladsstyring af standard B-tree indekser og understøttelse af samtidig indeksgenopbygning og dækning af indeksoprettelse. Version 12 understøtter også inlined WITH-forespørgsler og ICU-leverede sorteringer, forbedrer partitionering og giver en pluggbar tabellagringsgrænseflade til at oprette og bruge forskellige metoder til tabellagring.
Nu hvor du kender det grundlæggende i opsætning og brug af en PostgreSQL-server, hvorfor så ikke prøve et administreret alternativ? Med en administreret tjeneste som ScaleGrid kan du fuldføre hele opsætnings-, installations- og konfigurationsprocessen med et klik på en knap. Start din gratis 30-dages prøveperiode i dag, og se selv! Intet kreditkort er påkrævet, og du kan oprette din allerførste database på få minutter.
Vi har dækket de grundlæggende installationer her, og vi har også givet nogle instruktioner til generel databaseadministration. Vi håber, du fandt denne vejledning nyttig.