PostgreSQL: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Sbarol (talk | contribs)
Mkont (talk | contribs)
 
(82 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''PostgreSQL''', often simply '''Postgres''', is an object-relational database management system (ORDBMS).
[[Image:Pg_logo.png|thumb|PostgreSQL logo. Pilt võetud en.wikist [[http://en.wikipedia.org/wiki/PostgreSQL]]]]
[[Image:Postgresql_elephant.svg|thumb]]
 
'''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. <br />
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==
 
PostgreSQL piirangud (versioon 8.4.0):
 
{| class="standard" border="1"
|-
|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: <br />
*Toetab praktiliselt piiramatut andmebaasi suurust; <br />
*Võimsad ja usaldusväärsed tehingute ja replikatsiooni mehhanismid; <br />
*Pärimine; <br />
*Lihtne tugi. <br />
 
==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; <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 26: 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 DB'le 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 />
Selleks otsime sektsiooni '''CONNECTIONS AND AUTHENTICATION''' ja muudame rida <br />
Avame faili tekstiredaktoriga nano: <br />
<pre>nano /etc/postgresql/8.3/main/postgresql.conf</pre>
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==
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>
Andmebaasi taastamine: <br />
<pre>psql -d payroll -f payroll.dump.out</pre>
==Huvitavad fakte==
*Skype kasutab PostgreSQL'i peamise andmebaasina. <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==
Line 59: Line 120:
==Allikad==
==Allikad==
http://www.postgresql.org/about/ <br />
http://www.postgresql.org/about/ <br />
http://en.wikipedia.org/wiki/Postgresql
http://en.wikipedia.org/wiki/Postgresql <br />
<br />
http://www.cyberciti.biz/tips/howto-backup-postgresql-databases.html <br />
http://www.thegeekstuff.com/2009/01/how-to-backup-and-restore-postgres-database-using-pg_dump-and-psql <br />


[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]

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