ΠΠΎΡΡΠ±Π½ΠΈΠΊ Π· PostgreSQL
PostgreSQL – ΡΠ΅ ΠΏΠΎΡΡΠΆΠ½Π° ΡΠ΅Π»ΡΡΡΠΉΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»ΡΠ½Π½Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ (Π‘ΠΠΠ) Π· Π²ΡΠ΄ΠΊΡΠΈΡΠΈΠΌ Π²ΠΈΡ ΡΠ΄Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π²ΡΠ΄ΠΎΠΌΠ° ΡΠ²ΠΎΡΡ ΡΡΠ°Π±ΡΠ»ΡΠ½ΡΡΡΡ, Π½Π°Π΄ΡΠΉΠ½ΡΡΡΡ ΡΠ° ΡΠΎΠ·ΡΠΈΡΠ΅Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎΡΡΡΠΌΠΈ. ΠΠΎΠ½Π° ΡΠΈΡΠΎΠΊΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ½Π½Ρ Π²Π΅Π»ΠΈΠΊΠΈΠΌΠΈ ΠΎΠ±ΡΡΠ³Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ Ρ ΠΏΡΠ΄ΡΡΠΈΠΌΡΡ ΡΡΠ·Π½Ρ ΡΠΈΠΏΠΈ Π΄Π°Π½ΠΈΡ Ρ ΠΌΠΎΠ²ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠ²Π°Π½Π½Ρ. Π£ ΡΡΠΉ ΡΡΠ°ΡΡΡ Π²ΠΈ ΠΎΡΡΠΈΠΌΠ°ΡΡΠ΅ ΠΎΠ³Π»ΡΠ΄ PostgreSQL, ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎΡΡΠ΅ΠΉ, ΡΠ½ΡΡΠ°Π»ΡΡΡΡ ΡΠ° Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ
1. Π ΠΎΠ·ΡΠΌΡΠ½Π½Ρ PostgreSQL
PostgreSQL – ΡΠ΅ ΠΎΠ±’ΡΠΊΡΠ½ΠΎ-ΡΠ΅Π»ΡΡΡΠΉΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»ΡΠ½Π½Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ (Π‘ΠΠΠ), ΡΠΊΠ° ΡΠΎΠ·ΡΠΈΡΡΡ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎΡΡΡ ΡΡΠ°Π΄ΠΈΡΡΠΉΠ½ΠΈΡ ΡΠ΅Π»ΡΡΡΠΉΠ½ΠΈΡ Π±Π°Π· Π΄Π°Π½ΠΈΡ Π·Π° ΡΠ°Ρ ΡΠ½ΠΎΠΊ Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²ΠΈΡ ΡΡΠ½ΠΊΡΡΠΉ, ΡΠ°ΠΊΠΈΡ ΡΠΊ ΠΏΡΠ΄ΡΡΠΈΠΌΠΊΠ° JSON, ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΡΠΊΠΈΡ ΡΠΈΠΏΡΠ² Π΄Π°Π½ΠΈΡ Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΈΡ ΠΌΠΎΠ². ΠΠΎΠ½Π° Π²ΡΠ΄ΠΎΠΌΠ° ΡΠ²ΠΎΡΡ Π½Π°Π΄ΡΠΉΠ½ΡΡΡΡ Ρ ΠΌΠΎΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΡΠΎΠ±Π»ΡΡΠΈ ΡΠΊΠ»Π°Π΄Π½Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΡΡ
2. ΠΠ»ΡΡΠΎΠ²Ρ ΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡΡ PostgreSQL
2.1. Π ΠΎΠ·ΡΠΈΡΠ΅Π½Ρ ΡΠΈΠΏΠΈ Π΄Π°Π½ΠΈΡ
- ΠΡΠ΄ΡΡΠΈΠΌΠΊΠ° Π΄Π΅ΠΊΡΠ»ΡΠΊΠΎΡ ΡΠΈΠΏΡΠ² Π΄Π°Π½ΠΈΡ .
- ΠΠΎΠ²Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΠΉ ΠΏΠΎΡΡΠΊ.
2.2. Π ΠΎΠ·ΡΠΈΡΡΠ²Π°Π½ΡΡΡΡ
- ΠΠΎΡΠΈΡΡΡΠ²Π°ΡΡΠΊΡ ΡΡΠ½ΠΊΡΡΡ ΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ: PostgreSQL Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ°ΠΌ ΡΡΠ²ΠΎΡΡΠ²Π°ΡΠΈ Π²Π»Π°ΡΠ½Ρ ΡΡΠ½ΠΊΡΡΡ ΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ, Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΠΈ Π΄Π΅ΠΊΡΠ»ΡΠΊΠ° ΠΌΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠ²Π°Π½Π½Ρ (PL/pgSQL, PL/Perl, PL/Python ΡΠΎΡΠΎ).
- Π ΠΎΠ·ΡΠΈΡΠ΅Π½Π½Ρ.
2.3. ΠΠΎΡΡΠΆΠ½Π° ΠΏΡΠ΄ΡΡΠΈΠΌΠΊΠ° ΡΠΏΡΠ²ΠΏΡΠ°ΡΡ
- MVCC (Multi-Version Concurrency Control).
- ΠΠΎΠ½ΡΡΠΎΠ»Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΡΠΉ: ΠΡΠ΄ΡΡΠΈΠΌΡΡ Π²Π»Π°ΡΡΠΈΠ²ΠΎΡΡΡ ACID (Π°ΡΠΎΠΌΠ°ΡΠ½ΡΡΡΡ, ΡΠ·Π³ΠΎΠ΄ΠΆΠ΅Π½ΡΡΡΡ, ΡΠ·ΠΎΠ»ΡΡΡΡ, Π΄ΠΎΠ²Π³ΠΎΠ²ΡΡΠ½ΡΡΡΡ), ΡΠΊΡ Π·Π°Π±Π΅Π·ΠΏΠ΅ΡΡΡΡΡ Π½Π°Π΄ΡΠΉΠ½Ρ ΠΎΠ±ΡΠΎΠ±ΠΊΡ ΡΡΠ°Π½Π·Π°ΠΊΡΡΠΉ.
3. ΠΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ PostgreSQL
Π©ΠΎΠ± ΠΏΠΎΡΠ°ΡΠΈ ΡΠΎΠ±ΠΎΡΡ Π· PostgreSQL, Π²Π°ΠΌ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π²ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠΈ ΡΡ Ρ Π²Π°ΡΡΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π¦Π΅ΠΉ ΠΏΠΎΡΡΠ±Π½ΠΈΠΊ ΠΎΠΏΠΈΡΡΡ ΠΏΡΠΎΡΠ΅Ρ Π²ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ Π½Π° Ubuntu
ΠΡΠΎΠΊ 1: ΠΠ½ΠΎΠ²Π»Π΅Π½Π½Ρ ΡΠ½Π΄Π΅ΠΊΡΡ ΠΏΠ°ΠΊΡΠ½ΠΊΡΠ²
ΠΡΠ΄ΠΊΡΠΈΠΉΡΠ΅ Π²Π°Ρ ΡΠ΅ΡΠΌΡΠ½Π°Π» Ρ ΠΎΠ½ΠΎΠ²ΡΡΡ ΡΠ½Π΄Π΅ΠΊΡ ΠΏΠ°ΠΊΡΠ½ΠΊΡΠ²
sudo apt updateΠΡΠΎΠΊ 2: ΠΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ PostgreSQL
ΠΡΡΠ°Π½ΠΎΠ²ΡΡΡ PostgreSQL, Π²ΠΈΠΊΠΎΠ½Π°Π²ΡΠΈ Π½Π°ΡΡΡΠΏΠ½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
sudo apt install postgresql postgresql-contribΠΡΠΎΠΊ 3: ΠΠ°ΠΏΡΡΠΊ ΡΠ° Π°ΠΊΡΠΈΠ²Π°ΡΡΡ PostgreSQL
ΠΡΡΠ»Ρ Π²ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ Π·Π°ΠΏΡΡΡΡΡΡ ΡΠ»ΡΠΆΠ±Ρ PostgreSQL ΡΠ° ΡΠ²ΡΠΌΠΊΠ½ΡΡΡ ΡΡ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈ Π·Π°Π²Π°Π½ΡΠ°ΠΆΠ΅Π½Π½Ρ
sudo systemctl start postgresql sudo systemctl enable postgresqlΠΡΠΎΠΊ 4: ΠΠ΅ΡΠ΅Π²ΡΡΠΊΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
Π©ΠΎΠ± ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ½Π°ΡΠΈΡΡ, ΡΠΎ PostgreSQL Π·Π°ΠΏΡΡΠ΅Π½ΠΎ, ΡΠΊΠΎΡΠΈΡΡΠ°ΠΉΡΠ΅ΡΡ Π½Π°ΡΡΡΠΏΠ½ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΡ
sudo systemctl status postgresql4. ΠΠ°Π·ΠΎΠ²Π΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ PostgreSQL
ΠΡΠΎΠΊ 1: ΠΠΎΡΡΡΠΏ Π΄ΠΎ PostgreSQL
ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠΈΠΌΠ°ΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²ΡΠΊΠ½Π° PostgreSQL Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ Π½Π°ΡΡΡΠΏΠ½ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
sudo -i -u postgresΠΠΎΡΡΠΌ Π·Π°ΠΏΡΡΡΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΠ½ΠΊΡ PostgreSQL
psqlΠΡΠΎΠΊ 2: Π‘ΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ
Π©ΠΎΠ± ΡΡΠ²ΠΎΡΠΈΡΠΈ Π½ΠΎΠ²Ρ Π±Π°Π·Ρ Π΄Π°Π½ΠΈΡ , Π²ΠΈΠΊΠΎΠ½Π°ΠΉΡΠ΅ Π½Π°ΡΡΡΠΏΠ½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΎΠ±ΠΎΠ»ΠΎΠ½ΡΡ PostgreSQL
CREATE DATABASE mydatabase;ΠΡΠΎΠΊ 3: Π‘ΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ°
ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ Π½Π°ΡΡΡΠΏΠ½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΎΠ± ΡΡΠ²ΠΎΡΠΈΡΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ° Ρ ΠΏΡΠΈΠ·Π½Π°ΡΠΈΡΠΈ ΠΉΠΎΠΌΡ ΠΏΠ°ΡΠΎΠ»Ρ
CREATE USER myuser WITH PASSWORD 'mypassword';ΠΡΠΎΠΊ 4: ΠΠ°Π΄Π°Π½Π½Ρ ΠΏΡΠΈΠ²ΡΠ»Π΅ΡΠ²
Π©ΠΎΠ± Π½Π°Π΄Π°ΡΠΈ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ΅Π²Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ , Π²ΠΈΠΊΠΎΠ½Π°ΠΉΡΠ΅ Π½Π°ΡΡΡΠΏΠ½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
Grant all permissions of the mydatabase database to myuser;ΠΡΠΎΠΊ 5: ΠΡΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½Ρ Π΄ΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ
Π©ΠΎΠ± ΠΏΡΠ΄ΠΊΠ»ΡΡΠΈΡΠΈΡΡ Π΄ΠΎ Π½ΠΎΠ²ΠΎΡΡΠ²ΠΎΡΠ΅Π½ΠΎΡ Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ , Π²ΠΈΠΉΠ΄ΡΡΡ Π· ΠΎΠ±ΠΎΠ»ΠΎΠ½ΠΊΠΈ PostgreSQL (Π²Π²Π΅Π΄ΡΡΡ q), Π° ΠΏΠΎΡΡΠΌ Π·Π½ΠΎΠ²Ρ ΡΠ²ΡΠΉΠ΄ΡΡΡ ΠΏΡΠ΄ ΡΠΈΠΌ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ΅ΠΌ
psql -U myuser -d mydatabase5. ΠΠΈΡΠ½ΠΎΠ²ΠΎΠΊ
PostgreSQL – ΡΠ΅ ΠΏΠΎΡΡΠΆΠ½Π° Ρ Π³Π½ΡΡΠΊΠ° Π‘Π£ΠΠ, ΡΠΊΠ° Π½Π°Π΄Π°Ρ ΡΠΎΠ·ΡΠΈΡΠ΅Π½Ρ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ½Π½Ρ ΡΠΊΠ»Π°Π΄Π½ΠΈΠΌΠΈ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ Π΄Π°Π½ΠΈΡ . ΠΠΎΡΡΠΈΠΌΡΡΡΠΈΡΡ ΠΊΡΠΎΠΊΡΠ², ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Ρ ΡΡΠΉ ΡΡΠ°ΡΡΡ, Π²ΠΈ Π·ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠΈ Ρ ΠΏΠΎΡΠ°ΡΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ PostgreSQL. Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎ Π²ΡΠ΄ΡΡΠ΅ΠΆΡΠΉΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΡΡΡΡ Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ Ρ Π²ΠΏΡΠΎΠ²Π°Π΄ΠΆΡΠΉΡΠ΅ Π½Π°ΠΉΠΊΡΠ°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΡΡΠ²Π°Π½Π½Ρ ΡΠ° Π±Π΅Π·ΠΏΠ΅ΠΊΠΈ, ΡΠΎΠ± Π·Π°Π±Π΅Π·ΠΏΠ΅ΡΠΈΡΠΈ Π½Π°Π΄ΡΠΉΠ½ΡΡΡΡ Π²Π°ΡΠΈΡ ΡΡΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ½Π½Ρ Π΄Π°Π½ΠΈΠΌΠΈ.
