PostgreSQL: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
 
(24 intermediate revisions by 2 users not shown)
Line 2: Line 2:


'''PostgreSQL''', tihti lihtsalt '''Postgres''', on objekt-relatsiooniline andmebaasi juhtimissüsteem.
'''PostgreSQL''', tihti lihtsalt '''Postgres''', on objekt-relatsiooniline andmebaasi juhtimissüsteem.
PostgreSQL on tasuta ja avatud lähtekoodiga tarkvara. Võrreldes paljude teiste avatud lähtekoodiga programmidega, PostgreSQL ei kontrolli mitte ükski ettevõtte, vaid on globaalne kogukond arendajad ja firmad selle arendamiseks. <br />
PostgreSQL on tasuta ja avatud lähtekoodiga tarkvara. Võrreldes paljude teiste avatud lähtekoodiga programmidega, ei kontrolli PostgreSQL-i ühegi konkreetse ettevõtte kontrolli all. Programmi arendusega tegeleb globaalne kogukond, mis koosneb erinevatest arendajatest ja firmadest. <br />
PostgreSQL oli üks esimesi andmebaase, mis pakkus MVCC’d (Multi-Version Concurrency Control, multiversioon-konkurentsjuhtimine on meetod ühiskasutusega andmebaaside jõudluse tõstmiseks), et võiks loobuda realukustusest ja tabelilukustusest ja loomulikult see parandab süsteemi efektiivsust kasutades andmebaasi. PostgreSQL realiseerib ANSI SQL laiendatud alamklassi. Ta töötab paljudel platvormidel. PostrgeSQL AB'sis on olemas erinevad liidesed paljude erinevate programmikeelte ja AB protokollide jaoks. Näiteks: ODBC ja [[JDBC|JDBC]].
PostgreSQL oli üks esimesi andmebaase, mille funktsionaalsuse hulka kuulus multiversioon-konkurentsjuhtimine (MVCC, Multi-Version Concurrency Control) - meetod ühiskasutusega andmebaaside jõudluse tõstmiseks, et loobuda rea- ja tabelilukustusest süsteemi efektiivsuse parandamise eesmärgil.<br />
PostgreSQL realiseerib ANSI SQL laiendatud alamklassi ning toimib paljudel erinevatel platvormidel. PostgreSQL andmebaas sisaldab liideseid erinevate programmeerimiskeelte ja andmebaasi protokollide tarbeks (nt. ODBC ja JDBC).


==Omadused==
==Omadused==


Praegu (versioon 8.4.0), PostgreSQL's on järgmised piirangud:
PostgreSQL piirangud (versioon 8.4.0):


{| class="standard"
{| class="standard" border="1"
|-
|-
|Maksimaalne andmebaasi suurus|| Piiranguid ei ole
|Maksimaalne andmebaasi suurus||Piiranguid ei ole
|-
|-
|Maksimaalne tabeli suurus|| 32 Tbaiti
|Maksimaalne tabeli suurus||32 TB
|-
|-
|Maksimaalne kirjapaneku suurus|| 1,6 Tbaiti
|Maksimaalne kirje suurus||1,6 TB
|-
|-
|Maksimaalne veergude suurus|| 1 Gbaiti
|Maksimaalne veergu suurus||1 GB
|-
|-
|Maksimaalne kirjapanekuid tabelis|| Piiranguid ei ole
|Maksimaalne kirjapanekute maht tabelis||Piiranguid ei ole
|-
|-
|Maksimaalne veergude arv tabelis|| 250—1600, sõltuvalt veergude tüübidest
|Maksimaalne veergude arv tabelis||250—1600, sõltuvalt veergude tüübidest
|-
|-
|Maksimaalne indekstite arv tabelis|| Piiranguid ei ole
|Maksimaalne indekstite arv tabelis||Piiranguid ei ole
|}
|}


PostgreSQL'i tugevad küljed on: <br />
PostgreSQL'i tugevad küljed on: <br />
*Toetus praktiliselt andmebaasi piiramatu suurusi; <br />
*Toetab praktiliselt piiramatut andmebaasi suurust; <br />
*Võimsad ja usaldusväärsed tehingute ja replikatsiooni mehhanismid; <br />
*Võimsad ja usaldusväärsed tehingute ja replikatsiooni mehhanismid; <br />
*Pärandamine; <br />
*Pärimine; <br />
*Lihtne tugi. <br />
*Lihtne tugi. <br />


==Usaldusväärsus==
==Usaldusväärsus==


Pärast erinevate automatiseeritude uuringute on teada, et PostgreSQL lähtekoodis leiti 20 probleemset kohti 775000 rida lähtekoodi (keskmiselt üks viga 39 000 rida koodi kohta). Võrdluseks: MySQL - 97 probleeme, üks viga 4000 rida koodi kohta; FreeBSD (terve) - 306 probleeme, üks viga 4000 rida koodi kohta; Linux (kernel ainult) - 950 probleeme, üks viga 10 000 rida koodi kohta.
Erinevate automatiseeritud uuringute põhjal on teada, et PostgreSQL lähtekoodis on keskmiselt üks viga 39 000 koodirea kohta (775000 lähtekoodi rida, leiti 20 probleemset kohta)
 
Võrdlus:  
*MySQL - 97 probleemi, üks viga 4000 koodirea  kohta; <br />
*FreeBSD - 306 probleemi, üks viga 4000 koodirea kohta; <br />
*Linux (kernel) - 950 probleemi, üks viga 10 000 koodirea kohta. <br />


== PostgreSQL installeerimine ja konfigureerimine (Ubuntu-server)==
== PostgreSQL installeerimine ja konfigureerimine (Ubuntu-server)==


Logi sisse juurkasutaja õigustega:
Sisselogimine juurkasutaja õigustes:
<pre>sudo -i</pre>
<pre>sudo -i</pre>


===Installeerimine===
===Installeerimine===
Tegelikult, paigaldada võib ühe käsuga:
PostgreSQL paigaldamiseks tuleb käivitada käsk:
<pre>sudo apt-get install postgresql postgresql-contrib postgresql-client -y</pre>
<pre>sudo apt-get install postgresql postgresql-contrib postgresql-client -y</pre>
Kõik, DBMS PostgreSQL paigaldatud ja töökorras. <br />
Tulemusena on PostgreSQL'i DBMS (Database Management System, Andmebaasi haldussüsteem) paigaldatud ja töökorras. <br />


===Konfigureerimine===
===Konfigureerimine===
Kuid, tegelikult andmebaasiga töötamiseks, tuleb teha veel mõned asjad: <br />
Andmebaasi kasutamiseks on tarvis teha veel mõned seadistused. <br />
Tuleb määrata postgres root parooli: <br />
 
Nüüd on vaja saada postgres'i kasutajaks: <br />
PostgreSQL juurkasutaja parooli määramine ja kasutajakonto loomine: <br />
<pre>sudo su postgres</pre>
<pre>sudo su postgres</pre>


Käivitame terminaali meie andmebaasile:  
Andmebaasi käivitamine:  
<pre>psql</pre>
<pre>psql</pre>


Line 61: Line 67:
<pre>alter user postgres with password '&932j(_dskoGhdDG'</pre>
<pre>alter user postgres with password '&932j(_dskoGhdDG'</pre>


Importeerime skripti, mis sisaldab täiustatud "logeerimise" ja "monitooringu" funktsioone pgAdmin'le
Skripti import, mille tulemusena seadistatakse täiustatud logimise ja monitooringu funktsioonid:
 
<pre>\i /usr/share/postgresql/8.3/contrib/adminpack.sql</pre>
<pre>\i /usr/share/postgresql/8.3/contrib/adminpack.sql</pre>


Sulgeme terminaali ja väljume postgre sessioonist:
Sulgeme terminali ja väljume postgre sessioonist:
<pre>\q  
<pre>\q  
exit</pre>
exit</pre>


Lubame ligipääsu meie andmebaasile teistest masinatest. Selleks meil on vaja redigeerida kaks faili. <br />
Lubame ligipääsu andmebaasile teistest seadmetest. Selleks on vaja redigeerida kaks faili: postgresql.conf ja pg_hba.conf <br />
 
Fail '''/etc/postgresql/8.3/main/postgresql.conf'''. <br />
Fail '''/etc/postgresql/8.3/main/postgresql.conf'''. <br />
Avame faili tekstiredaktoriga nano: <br />
Avame faili tekstiredaktoriga nano: <br />
<pre>nano /etc/postgresql/8.3/main/postgresql.conf</pre>
<pre>nano /etc/postgresql/8.3/main/postgresql.conf</pre>
Selleks otsime sektsiooni '''CONNECTIONS AND AUTHENTICATION''' ja muudame rida <br />
Selleks on vaja leida sektsioonist '''CONNECTIONS AND AUTHENTICATION''' vastav rida: <br />
<pre>#listen_addresses = 'localhost'</pre>
<pre>#listen_addresses = 'localhost'</pre>
niimodi: <br />
Rea muutmine: <br />
<pre>listen_addresses = '*'</pre>
<pre>listen_addresses = '*'</pre>


Fail '''/etc/postgresql/8.3/main/pg_hba.conf'''. <br />
Fail '''/etc/postgresql/8.3/main/pg_hba.conf'''. <br />
Läheme faili lõppu ja  otsime ridad: <br />
 
Läheme faili lõppu ja  otsime read: <br />
<pre># IPv4 local connections:
<pre># IPv4 local connections:
host all all 127.0.0.1/32 md5</pre>
host all all 127.0.0.1/32 md5</pre>
127.0.0.1/32 see on lubatud võrgu mask, asendame vastavalt meie võrgu maskiga, näiteks: <br />
127.0.0.1/32 on lubatud võrgu mask, asendame vastavalt vajaliku võrgu maskiga, näiteks: <br />
<pre>host all all 192.168.1.0/24 md5</pre>
<pre>host all all 192.168.1.0/24 md5</pre>
s.t. see võimaldab kõiki ühendusi aadressist 192.168.1.1 kuni 192.168.1.254. <br />
Tulemusena on lubatud ühendused IP aadresside vahemikust 192.168.1.1 kuni 192.168.1.254. <br />
Võime lisada konkreetse masinat, kui on vaja tagada turvalisust, nt.: <br />  
 
Vajadusel võib turvalisuse tagamiseks lisada ka konkreetse ühenduse, näiteks: <br />
 
<pre>host all all 192.168.1.3/32 md5</pre>
<pre>host all all 192.168.1.3/32 md5</pre>


Teeme restart: <br />
PostgreSQL teenuse taaskäivitamine: <br />
<pre>/etc/init.d/postgresql-8.3 restart</pre>
<pre>/etc/init.d/postgresql-8.3 restart</pre>


==Varukoopia salvestamine ja taastamine==
==Varukoopia salvestamine ja taastamine==
Varukoopiad tegemine on väga tähtis osa. Teeme seda, kasutades pg_dump käsu. pg_dump on PostgreSQL utiliit andmebaasi varundamiseks. Ta puistab ainult ühte andmebaasi korraga. Üldine süntaks: '''pg_dump databasename > outputfile'''. Kasutame andmebaasi nimega "payroll". <br />
Andmebaasi varundamine on väga tähtis osa, mille läbiviimiseks on kasutada pg_dump utiliit. Üheaegselt on võimalik varundada vaid ühte andmebaasi. <br />
Üldine süntaks: '''pg_dump andmebaas > väljundfail'''. Näitena kasutame andmebaasi nimega "payroll". <br />
 
<pre>pg_dump payroll > payroll.dump.out</pre>
<pre>pg_dump payroll > payroll.dump.out</pre>


Taastada andmebaasi saab käsuga: <br />
Andmebaasi taastamine: <br />
<pre>psql -d payroll -f payroll.dump.out</pre>
<pre>psql -d payroll -f payroll.dump.out</pre>


==Huvitavad fakte==
==Huvitavad fakte==
*Skype kasutab PostgreSQL'i nagu peamise andmebaasina enamiku äri vajadustele. <br />
*Skype kasutab PostgreSQL'i peamise andmebaasina. <br />
*Yahoo ütleb, et ta suutis võita maailmarekord, luues suurim ja kõige koormatud andmebaasi kogu maailmas! Eelmisel aastal andmebaasi maht saavutas 2 Petabaiti. Aga nüüd kõige huvitavam. Selle monstri haldab modifitseeritud PostgreSQL. :) <br />
*Yahoo sõnul suudeti võita maailma suurima ja koormatuima andmebaasi rekord, kasutades modifitseeritud PostgreSQL andmebaasi. Andmebaasi maht ületab 2 petabaiti. <br />


==Autor==
==Autor==

Latest revision as of 10:16, 11 June 2010

PostgreSQL logo. Pilt võetud en.wikist [[1]]

PostgreSQL, tihti lihtsalt Postgres, on objekt-relatsiooniline andmebaasi juhtimissüsteem. PostgreSQL on tasuta ja avatud lähtekoodiga tarkvara. Võrreldes paljude teiste avatud lähtekoodiga programmidega, ei kontrolli PostgreSQL-i ühegi konkreetse ettevõtte kontrolli all. Programmi arendusega tegeleb globaalne kogukond, mis koosneb erinevatest arendajatest ja firmadest.
PostgreSQL oli üks esimesi andmebaase, mille funktsionaalsuse hulka kuulus multiversioon-konkurentsjuhtimine (MVCC, Multi-Version Concurrency Control) - meetod ühiskasutusega andmebaaside jõudluse tõstmiseks, et loobuda rea- ja tabelilukustusest süsteemi efektiivsuse parandamise eesmärgil.
PostgreSQL realiseerib ANSI SQL laiendatud alamklassi ning toimib paljudel erinevatel platvormidel. PostgreSQL andmebaas sisaldab liideseid erinevate programmeerimiskeelte ja andmebaasi protokollide tarbeks (nt. ODBC ja JDBC).

Omadused

PostgreSQL piirangud (versioon 8.4.0):

Maksimaalne andmebaasi suurus Piiranguid ei ole
Maksimaalne tabeli suurus 32 TB
Maksimaalne kirje suurus 1,6 TB
Maksimaalne veergu suurus 1 GB
Maksimaalne kirjapanekute maht tabelis Piiranguid ei ole
Maksimaalne veergude arv tabelis 250—1600, sõltuvalt veergude tüübidest
Maksimaalne indekstite arv tabelis Piiranguid ei ole

PostgreSQL'i tugevad küljed on:

  • Toetab praktiliselt piiramatut andmebaasi suurust;
  • Võimsad ja usaldusväärsed tehingute ja replikatsiooni mehhanismid;
  • Pärimine;
  • Lihtne tugi.

Usaldusväärsus

Erinevate automatiseeritud uuringute põhjal on teada, et PostgreSQL lähtekoodis on keskmiselt üks viga 39 000 koodirea kohta (775000 lähtekoodi rida, leiti 20 probleemset kohta)

Võrdlus:

  • MySQL - 97 probleemi, üks viga 4000 koodirea kohta;
  • FreeBSD - 306 probleemi, üks viga 4000 koodirea kohta;
  • Linux (kernel) - 950 probleemi, üks viga 10 000 koodirea kohta.

PostgreSQL installeerimine ja konfigureerimine (Ubuntu-server)

Sisselogimine juurkasutaja õigustes:

sudo -i

Installeerimine

PostgreSQL paigaldamiseks tuleb käivitada käsk:

sudo apt-get install postgresql postgresql-contrib postgresql-client -y

Tulemusena on PostgreSQL'i DBMS (Database Management System, Andmebaasi haldussüsteem) paigaldatud ja töökorras.

Konfigureerimine

Andmebaasi kasutamiseks on tarvis teha veel mõned seadistused.

PostgreSQL juurkasutaja parooli määramine ja kasutajakonto loomine:

sudo su postgres

Andmebaasi käivitamine:

psql

Muudame kasutaja parooli:

alter user postgres with password 'uus parool'

Näiteks:

alter user postgres with password '&932j(_dskoGhdDG'

Skripti import, mille tulemusena seadistatakse täiustatud logimise ja monitooringu funktsioonid:

\i /usr/share/postgresql/8.3/contrib/adminpack.sql

Sulgeme terminali ja väljume postgre sessioonist:

\q 
exit

Lubame ligipääsu andmebaasile teistest seadmetest. Selleks on vaja redigeerida kaks faili: postgresql.conf ja pg_hba.conf

Fail /etc/postgresql/8.3/main/postgresql.conf.
Avame faili tekstiredaktoriga nano:

nano /etc/postgresql/8.3/main/postgresql.conf

Selleks on vaja leida sektsioonist CONNECTIONS AND AUTHENTICATION vastav rida:

#listen_addresses = 'localhost'

Rea muutmine:

listen_addresses = '*'

Fail /etc/postgresql/8.3/main/pg_hba.conf.

Läheme faili lõppu ja otsime read:

# IPv4 local connections:
host all all 127.0.0.1/32 md5

127.0.0.1/32 on lubatud võrgu mask, asendame vastavalt vajaliku võrgu maskiga, näiteks:

host all all 192.168.1.0/24 md5

Tulemusena on lubatud ühendused IP aadresside vahemikust 192.168.1.1 kuni 192.168.1.254.

Vajadusel võib turvalisuse tagamiseks lisada ka konkreetse ühenduse, näiteks:

host all all 192.168.1.3/32 md5

PostgreSQL teenuse taaskäivitamine:

/etc/init.d/postgresql-8.3 restart

Varukoopia salvestamine ja taastamine

Andmebaasi varundamine on väga tähtis osa, mille läbiviimiseks on kasutada pg_dump utiliit. Üheaegselt on võimalik varundada vaid ühte andmebaasi.
Üldine süntaks: pg_dump andmebaas > väljundfail. Näitena kasutame andmebaasi nimega "payroll".

pg_dump payroll > payroll.dump.out

Andmebaasi taastamine:

psql -d payroll -f payroll.dump.out

Huvitavad fakte

  • Skype kasutab PostgreSQL'i peamise andmebaasina.
  • Yahoo sõnul suudeti võita maailma suurima ja koormatuima andmebaasi rekord, kasutades modifitseeritud PostgreSQL andmebaasi. Andmebaasi maht ületab 2 petabaiti.

Autor

Sergei Barol A21
sbarol@itcollege.ee

Allikad

http://www.postgresql.org/about/
http://en.wikipedia.org/wiki/Postgresql
http://www.cyberciti.biz/tips/howto-backup-postgresql-databases.html
http://www.thegeekstuff.com/2009/01/how-to-backup-and-restore-postgres-database-using-pg_dump-and-psql