PostgreSQL-functies en gebruiksscenario's
PostgreSQL is een open-source Object-relationeel Database Management Systeem (DBMS). Het is een geavanceerd databasebeheer- en analysesysteem dat voornamelijk wordt gebruikt voor e-commerceplatforms, betalingstransacties en verschillende datawarehousing-oplossingen. Het bestaat al meer dan 30 jaar en wordt elk jaar regelmatig bijgewerkt, ondersteunt verschillende SQL-functies zoals triggers, door de gebruiker gedefinieerde typen en functies, subquery's, enz.
PostgreSQL is een van 's werelds meest geavanceerde open source databases. Het is geschikt voor verschillende gebruiksscenario's voor productie en ontwikkeling. Het biedt tal van voordelen, zoals verbeterde partitionering en queryprestaties (vooral bij grote datasets), B-tree-verbeteringen voor optimaal gebruik van de ruimte, statistieken met meerdere kolommen (meest voorkomende waarden), algemene tabelexpressies met query-inlining en controlesomcontrole.
Een paar woorden over Ubuntu 20.04 op DigitalOcean
Ubuntu is een populair open-source desktopbesturingssysteem. Ubuntu 20.04 bevat tal van geavanceerde functies, zoals een tool om ZFS-snapshots te beheren, een grote kernelbump en beveiligingsverbeteringen. Het DigitalOcean-cloudplatform biedt een robuuste infrastructuur en wereldwijde beschikbaarheid voor het ontwikkelen, beheren en schalen van applicaties in de cloud. Met zijn compute-, storage-, database- en netwerkproducten kunnen ontwikkelaars web- en mobiele applicaties, streamingdiensten, games, SaaS-oplossingen en meer bouwen. Met functies zoals gedeeld privénetwerk, DevOps-tools met één klik en SSD-harde schijven, is DigitalOcean een flexibele, veilige en eenvoudige keuze voor bedrijfskritieke oplossingen.
Deze tutorial biedt gedetailleerde instructies voor het installeren van PostgreSQL op DigitalOcean Ubuntu 20.04. Laten we zonder verder oponthoud beginnen!
|
Vereisten om PostgreSQL te installeren
Voordat we ingaan op de daadwerkelijke installatie van PostgreSQL 12 op DigitalOcean Ubuntu 20.04, moet u ervoor zorgen dat uw systeem aan de volgende vereisten voldoet.
- De server moet minimaal een basis UFW-firewall hebben om ervoor te zorgen dat alleen verbindingen met bepaalde services zijn toegestaan.
- Het systeem moet worden bijgewerkt voor een nieuwe serverinstantie en opnieuw worden opgestart. Gebruik hiervoor de volgende commando's:
sudo apt update && sudo apt upgrade –y
sudo reboot
PostgreSQL installeren op Ubuntu 20.04 DigitalOcean
U kunt PostgreSQL 12 installeren met Ubuntu 20.04 officiële/standaard repositories met behulp van het apt-pakketbeheersysteem. Voordat u dit doet, zou u de lokale pakketindex van uw server al moeten hebben vernieuwd (zie de vereisten hierboven).
De repository bevat verschillende pakketten (inclusief add-ons van derden), zoals:
- postgresql-client
- postgresql
- libpq-dev
- postgresql-server-dev
- pgadmin-pakketten
Installeer vervolgens het volledige PostgreSQL 12-pakket samen met de postgresql-contrib-module die extra hulpprogramma's en functionaliteit biedt. Dit kan worden geïnstalleerd door het volgende commando uit te voeren:
sudo apt install postgresql postgresql-contrib –y
Start vervolgens de PostgreSQL-service bij het opnieuw opstarten van het systeem door de volgende opdracht uit te voeren:
sudo systemctl start postgresql
Om de PostgreSQL-service automatisch te starten bij het opstarten van het systeem, voert u het volgende uit:
sudo systemctl enable postgresql
Controleer of de PostgreSQL-service werkt zoals verwacht door systemctl status postgresql uit te voeren:
sudo systemctl status postgresql
Dit zou de status van de PostgreSQL-service moeten teruggeven en zou actief moeten zijn, vergelijkbaar met de onderstaande schermafbeelding.
PostgreSQL-initialisatie aanpassen
Na de installatie kan een databasecluster worden aangemaakt met behulp van het initdb-commando. De opdracht initdb moet worden uitgevoerd vanuit de databasegebruiker en niet vanuit de rootgebruiker. De root-gebruiker kan een lege map maken die door de postgres-gebruiker kan worden gewijzigd (opdracht van eigenaar wijzigen). Deze map bevat de gegevens als een sjabloon, die standaard naar alle databases wordt gekopieerd. Van de postgres-gebruiker kan het volgende commando worden aangeroepen met de juiste optie en mapnaam.
initdb [option...] [ --pgdata | -D ] directory
Het initdb-commando kan worden uitgevoerd als een geverifieerde gebruiker met de verschillende vlaggen om een db-sjabloon in een bepaalde map te maken.
Hieronder vindt u een lijst met specifieke vlaggen zoals te zien is in de bovenstaande schermafbeelding:
--encoding UTF8
(het kan elk zijn op basis van de landinstelling).- De coderingsvlag stelt de codering van de databasesjabloon in. Alle databases die met die sjabloon zijn gemaakt, gebruiken ook dezelfde coderingsmethode, tenzij afzonderlijk gespecificeerd. Er zijn veel coderingsmethoden beschikbaar voor verschillende talen.
--pgdata test
(deze vlag creëert een map met de naam "test" om de databasegegevens op te slaan).- Specificeert de directory waar het databasecluster zijn gegevens opslaat.
-A peer
(dit specificeert de authenticatiemethode die wordt gebruikt in het bestand pg_hba.conf).- Specificeert de standaard authenticatiemethode voor lokale gebruikers die wordt gebruikt in pg_hba.conf (host en lokale lijnen). initdb zal pg_hba.conf-vermeldingen vooraf invullen met behulp van de gespecificeerde authenticatiemethode voor zowel niet-replicatie als replicatieverbindingen.
-k
(gebruikt data-checksum om I/O-fouten te controleren)- Specificeert de gegevenscontrolesom op alle gegevenspagina's om de corruptie van het I/O-systeem te detecteren. Dit vertraagt echter de verwerkingssnelheid van de database).
Uw PostgreSQL-database beveiligen
Tijdens de installatie wordt standaard automatisch een nieuwe gebruiker met de naam postgres aangemaakt. Deze gebruiker heeft volledige systeemrechten, dus het is belangrijk om het gebruikersaccount te beveiligen met een sterk wachtwoord.
sudo passwd postgres
Schakel nu over naar het postgres-gebruikersaccount. De gebruiker moet sudo-rechten hebben.
sudo su – postgres
De PostgreSQL-versie kan worden bevestigd door
. uit te voeren
psql -c "SELECT version();"
Het wachtwoord van postgres
wijzigen gebruiker gebruik commando:
psql -c "ALTER USER postgres WITH PASSWORD 'MyNewPassword'";
Opmerking:dit wachtwoord is alleen van toepassing als de postgres
gebruiker maakt via het netwerk verbinding met PostgreSQL.
Om toegang te krijgen tot de Postgres-database kunt u inloggen op de PostgreSQL-database met:
psql postgres
Standaard vereist PostgreSQL geen wachtwoordverificatie van lokale systeemgebruikers om toegang te krijgen tot de database. Dit wordt "peer-authenticatie" genoemd. Wachtwoordverificatie kan echter worden ingeschakeld vanuit de pg_hba.conf
bestand.
Om deze pg_hba.conf
te bewerken bestand, gebruik \q
commando om de postgre-shell te verlaten en de Linux-shell binnen te gaan. Bewerk vanuit de Linux-shell de pg_hba.conf
het dossier. Zorg ervoor dat u een back-up maakt voordat u het bestand bewerkt.
sudo cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.bak
Bewerk vervolgens het bestand met de nano-editor,
nano /etc/postgresql/12/main/pg_hba.conf
Zoek de lokale lijn onder "Alleen Unix-domein socketverbindingen" en wijzig de METHOD
attribuut van peer
naar md5
.
Laad de PostgreSQL-service opnieuw om de nieuwe instellingen toe te passen.
sudo systemctl reload postgresql
Houd er rekening mee dat er twee gebruikers zijn met de naam postgres; de ene is de Linux-gebruiker om verbinding te maken en toegang te krijgen tot de database, en de andere is de databasegebruiker die wordt gebruikt om beheerdersrollen in de database uit te voeren.
Uw PostgreSQL-database configureren
PostgreSQL kan handmatig worden geconfigureerd voor luisteradressen en poorten door de vereiste parameters in het bestand postgresql.conf te wijzigen.
Standaard wordt de PostgreSQL-poort 5432 gebruikt en luistert deze op localhost. Dit kan worden gewijzigd door het configuratiebestand te bewerken.
sudo nano /etc/postgresql/12/main/postgresql.conf
De service wordt opnieuw gestart nadat er wijzigingen zijn aangebracht.
sudo systemctl restart postgresql
Een nieuwe rol creëren in PostgreSQL 12
Authenticatie en autorisatie in PostgreSQL 12 gebeuren via het concept "rol". Rol is hier een flexibele term die zowel naar gebruikers als naar groepen verwijst.
Log in op de postgres-gebruiker met behulp van dit volgende commando:
sudo su postgres
Nieuwe rollen kunnen interactief worden aangemaakt vanaf de commandoregel met het createrole –interactive commando. Hier zal het gebruik van de –interactive vlag een prompt creëren voor de naam van de nieuwe rol, en of deze rol superuser permissies moet krijgen.
Een nieuwe gebruiker kan worden aangemaakt met een nieuwe rol buiten de postgresql-shell van de gebruiker als:
createuser –interactive
De uitvoer van het nieuwe gebruikerscommando zou er ongeveer zo uit moeten zien.
Een database maken en verwijderen in uw PostgreSQL-server
Wanneer in PostgreSQL 12 een nieuwe rol wordt gemaakt, moet er een nieuwe database met dezelfde naam bestaan, aangezien de rol standaard probeert verbinding te maken met de database. Dus net als in de vorige sectie, waar de gebruikersliam wordt gemaakt, kan een database met die naam worden gemaakt met behulp van de volgende opdracht:
createdb liam
Binnen PostgreSQL 12 zijn er meerdere paden voor het maken van databases zoals vereist:
- Indien ingelogd vanaf het postgres-account:
postgres@server:~$ createdb liam
- Gebruik
sudo
,sudo –u postgres created liam
Om de database te verwijderen, kunnen we
. gebruiken
dropdb liam
Een Postgres-prompt openen met de nieuwe rol
Een Linux-gebruiker met dezelfde naam als de Postgres-database en rol kan worden gemaakt om in te loggen met op identiteit gebaseerde authenticatie.
Een Linux-gebruiker kan worden aangemaakt (als die nog niet bestaat) vanaf de opdrachtregel door te typen:
sudo adduser noah
Nadat de gebruiker is aangemaakt, kan deze worden aangemeld met het volgende commando;
sudo -u noah psql
De huidige database en gebruikersinformatie zijn toegankelijk via;
\conninfo
PostgreSQL-beheer
Tabellen maken en verwijderen
Het SQL-commando CREATE TABLE
kan worden gebruikt om elke tabel in een database te maken. Een lijst met kolommen en een gegevenstype voor elke kolom moeten worden gespecificeerd in de opdracht.
CREATE TABLE customers (customer_id int, first_name varchar(80), last_name varchar(80));
Met deze opdracht wordt een tabel met de naam "klanten" gemaakt. De eerste kolom bevat de klant-ID van het type integer. De tweede en derde kolom zijn van het type karakter en bevatten de voor- en achternaam van de klanten met een maximale lengte van 80 tekens.
Deze nieuwe tabel kan worden bekeken door \d
. te typen .
De tabel kan worden verwijderd door te typen:
DROP TABLE customers;
Invoegen, selecteren en verwijderen van gegevens in een tabel
Gegevens worden in de vorm van rijen aan de PostgreSQL-tabellen toegevoegd. Elke rij vertegenwoordigt een afzonderlijke set gegevens. Gegevens kunnen in de rij worden ingevoegd met behulp van de opdracht INSERT INTO. De opdrachtnaam wordt gevolgd door de "tabelnaam" (in het volgende voorbeeld klanten), het trefwoord VALUES, een lijst met waarden gescheiden door een komma.
INSERT INTO customers VALUES (1, 'Owen', 'Buyer');
INSERT INTO customers VALUES (2, 'Luke', 'Seller');
De inhoud van de tabel kan worden bekeken met het SELECT-commando.
SELECT * FROM customers;
Een rij kan worden verwijderd met behulp van de DELETE
opdracht. De WHERE
trefwoord wordt gebruikt om de rijen voorwaardelijk te selecteren.
DELETE FROM customers WHERE last_name = 'Seller';
Typ:
. om alle rijen te verwijderen
SELECT * FROM customers;
Kolommen toevoegen aan en verwijderen uit een tabel
PostgreSQL 12 biedt de mogelijkheid om eenvoudig kolommen toe te voegen aan of te verwijderen uit de bestaande tabellen.
De ALTER TABLE
commando wordt gebruikt samen met de ADD
trefwoord om een kolom aan een bestaande tabel toe te voegen. Dit veld is leeg voor de bestaande rijen in de tabel.
ALTER TABLE customers ADD branch_id int;
Hetzelfde commando wordt gebruikt met de DROP
trefwoord om de opgegeven kolom uit de tabel te verwijderen.
ALTER TABLE customers DROP first_name;
Gegevens in een tabel bijwerken
Afgezien van het toevoegen en verwijderen van records in een tabel, kunnen we ze ook wijzigen. Dit kan gedaan worden met behulp van de UPDATE
opdracht. We moeten de kolommen specificeren die moeten worden bewerkt met de nieuwe waarden.
UPDATE customers SET last_name= 'Buyer' WHERE customer_id = '1';
Overwegingen voor de productieomgeving
PostgreSQL 12 kan veilig worden gebruikt in een productieomgeving. Deze database is zo stabiel dat het geen probleem zou moeten zijn om deze op grote schaal te implementeren. Raadpleeg ons vorige artikel hier voor meer informatie.
Conclusie
Deze tutorial liet je zien hoe je PostgreSQL 12 instelt op een Ubuntu 20.04-server die draait op DigitalOcean. PostgreSQL 12 is een complexe applicatie met veel nieuwe en geavanceerde functies, zoals verbeterd ruimtebeheer van standaard B-tree-indexen en ondersteuning voor het gelijktijdig opnieuw opbouwen van indexen en het maken van indexen. Versie 12 ondersteunt ook inline WITH-query's en door ICU geleverde sorteringen, verbetert de partitionering en biedt een pluggable tabelopslaginterface om verschillende methoden voor tabelopslag te creëren en te gebruiken.
Nu u de basis kent van het opzetten en gebruiken van een PostgreSQL-server, waarom probeert u dan niet een beheerd alternatief? Met een beheerde service als ScaleGrid voltooit u het hele installatie-, installatie- en configuratieproces met één klik op de knop. Begin vandaag nog met uw gratis proefperiode van 30 dagen en ontdek het zelf! Er is geen creditcard vereist en u kunt binnen enkele minuten uw allereerste database opzetten.
We hebben hier de basisprincipes van de installatie behandeld en ook enkele instructies gegeven voor algemeen databasebeheer. We hopen dat je deze handleiding nuttig vond.