PostgreSQL

Wikipediasta
Siirry navigaatioon Siirry hakuun
PostgreSQL
PostgreSQL:n logo
PostgreSQL:n logo
Kehittäjä PostgreSQL Global Development Group
Kehityshistoria
Ensijulkaisu 1. toukokuuta 1995
Vakaa versio 16.4 ()[1]
Kehitysversio 17 beta 3 ()[1]
Kehitystilanne aktiivinen
Tiedot
Ohjelmistotyyppi tietokannan hallintajärjestelmä
Ohjelmointikielet C
Lisenssi PostgreSQL License
Aiheesta muualla
Verkkosivusto

PostgreSQLonavoimena lähdekoodinajaettavatietokannan hallintajärjestelmä,joka on lisensoituBSD-lisenssinkaltaisella lisenssillä. PostgreSQL perustuurelaatiomallille,mutta sille on myösspatiaalisialaajennuksia kutenPostGIS.

Se on vaihtoehto muille vapaan lähdekoodin tietokantajärjestelmille, kutenMySQLtaiFirebird,sekä myöskaupallisillejärjestelmille kutenOracle,Sybase,IBM:nDB2taiMicrosoft SQL Server.PostgreSQL ei ole yksittäisen yrityksen tai henkilön kontrolloima, vaan perustuu kansainväliseen ohjelmoijien ja yritysten muodostaman yhteisön tekemään kehitystyöhön, samoin kuin esimerkiksiApachejaBSD-variantit.Tätä kehitystyötä johtaa ydinryhmä, jolla on viime kädessä valta päättää siitä, otetaanko muutokset mukaan koodipuuhun.

KunMySQLon tullut tunnetuksi helppona ja nopeana tietokantana, PostgreSQL on tullut tunnetuksi hieman hitaampana mutta ominaisuuksiltaan parempana ja luotettavampana tietokantana. Toistaiseksi se kattaakin suuremman osan SQL-2003-standardista kuin MySQL, joskin viimeksi mainittu on kuronut välimatkaa umpeen viime aikoina. PostgreSQL tukee kaikkia tyypillisiäACID-ominaisuuksia, kuten muun muassatransaktioitaja viittauseheyden tarkistusta. PostgreSQL:n suuria hienouksia edustaa tyyppien määritteleminen; esimerkiksi datan muuntooliomallistarelaatiomalliin ja takaisin on suuri ohjelmointitekninen ongelma, ja PostgreSQL helpottaa tätä hieman tarjoamalla mahdollisuuden rakentaa uusia monimutkaisia tietotyyppejä. Version 8.0 myötä myös replikointiominaisuuksiin on panostettu suuresti, joten useitapalvelimiakäyttämällä PostgreSQL voi selvitä hyvinkin suuresta käyttökuormasta.

PostgreSQL:n hankalahkon oloinen nimi saattaa aiheuttaa lausumisvaikeuksia, varsinkin jos SQL:n lausuu kuten sanansequel.PostgreSQL:n kehittäjät lausuvat sen "post-gres-Q-L". (lausuntaesimerkki, MP3). On myös yleistä että nimi lyhennetään yksinkertaisesti postgresiksi.

Tuetut käyttöjärjestelmät

[muokkaa|muokkaa wikitekstiä]

PostgreSQL toimii lukuisilla eri käyttöjärjestelmillä, joita ovat muun muassaMicrosoft Windowssekä useimmatUnix-pohjaiset jaUnixin kaltaisetkäyttöjärjestelmät, joita ovat esimerkiksiHP-UX,BSD-variantit,Solaris,Mac OS XjaLinux.

Funktiot mahdollistavat ohjelmakoodin ajon palvelimessa. SQL-kielen lisäksi funktioita voi kirjoittaa useilla eri proseduraalisilla kielillä. Joitain näistä ohjelmointikielistä voidaan käyttää myösherättimissä.PostgreSQL:ään voidaan ohjelmoida funktioita seuraavilla kielillä:

Funktioita voidaan suorittaa kutsujan tai kyseisen funktion luoneen käyttäjän oikeuksilla. Funktioita kutsutaan silloin tällöin myös proseduureiksi tai tallennetuiksi proseduureiksi, vaikkakin näillä termeillä on pieni tekninen eroavaisuus.

PostgreSQL:ssä voidaan käyttää sisäänrakennettujenB-puu- ja R-puu-indeksien lisäksi myös käyttäjän määrittelemiä indeksejä. PostgreSQL:n indeksit tukevat seuraavia ominaisuuksia:

  • Indeksien selaus taaksepäin tarvittaessa, erillistä indeksiä ei tarvita tukemaan ORDER BY SOME_FIELD DESCENDING -lausekkeita.
  • Voidaan luoda lausekeindeksejä; nämä indeksoivat lausekkeen tai funktion tuloksia, pelkän sarakearvon asemasta.
  • Osittaisindeksit,jotka indeksoivat ainoastaan osan taulusta, voidaan luoda lisäämällä WHERE-lausekeCREATE INDEX-lauseen loppuun. Koska indeksi sisältää ainoastaan rivit joita haetaan useasti, indeksi vaatii vähemmän tallennustilaa ja haut ovat nopeampia.
  • Bittikarttaindeksihaut ovat tuettuja. Bittikarttaindeksin luonti vaatii aluksi useamman indeksin lukemisen, joiden avulla luodaan bittikartta näiden indeksien ja ehdot täyttävien monikkojen leikkauskohdista. Tämä antaa käyttäjälle mahdollisuuden koota indeksejä yhteen; tauluun jossa on 20 saraketta voidaan periaatteessa luoda 20 eri indeksiä.

PostgreSQL tukeeherätteitätauluissa, ja versiosta 9.1 alkaen myös INSTEAD OF -herätteitä näkymissä. Jos tapahtuma laukaisee useamman herätteen, ne käynnistetään aakkosjärjestyksessä. Natiivin PL/PgSQL:n lisäksi herätteet voivat myös kutsua PL/Perl tai muilla tuetuilla kielillä kirjoitettuja funktioita.

PostgreSQL hallitsee rinnakkaiset toiminnot käyttäenMulti-Version Concurrency Controliksi(MVCC) nimettyä järjestelmää, joka antaa jokaiselle käyttäjälle käyttöön tilannevedoksen tietokannasta. Tämä mahdollistaa muutosten tekemisen niin, että ne eivät näy muille käyttäjille ennen kuin tapahtuma on valmis ja hyväksytty. Tämä poistaa lukulukkojen tarpeen lähes kokonaan ja varmistaa kannan toiminnan tehokkaastiACID-periaatteiden mukaan.

Säännöt sallivat kantaan tehdyn kyselyn kyselypuun uudelleenkirjoittamisen. Yleinen käyttötarkoitus tälle toiminnalle on päivitettävät näkymät.

Suuri valikoima sisäänrakennettujatietotyyppejämukaan lukien:

Lisäksi käyttäjät voivat määritellä omia tietotyyppejään, joista voidaan yleensä tehdä täysin indeksoitavia.

Käyttäjän määrittelemät oliot

[muokkaa|muokkaa wikitekstiä]

Lähes kaikista tietokannan sisäisistä olioista voidaan luoda uusia tyyppejä, mukaan lukien:

  • Indeksit
  • Operaattorit (ja olemassa olevat voidaankuormittaa)
  • Aggregaatit
  • Arvoalueet
  • Tyyppimuunnokset

Taulut voidaan asettaa perimään ominaisuutensa isältään. Vaikkakin data taulujen välillä ei ole yhteistä, sarakkeen lisääminen isään luo saman sarakkeen myös lapsitauluun. Tämä toiminnallisuus ei ole vielämilloin?täysin tuettu — ennen kaikkea taulujen rajoitteet eivät vielä periydy.

Muut ominaisuudet

[muokkaa|muokkaa wikitekstiä]

Versiossa 12 uutuutena on tuotetut sarakkeet, joiden arvo lasketaan uudelleen automaattisesti näkymän tavoin ilman tarvettatriggerille.[3]Esimerkiksi taulussa voisi olla sarakkeet leveys, korkeus ja pinta-ala, joista viimeksi mainittu lasketaan automaattisesti kahden muun perusteella.[3]Tuotettu arvo säilötään eikä sitä lasketa uudelleen arvoa hakevan kyselyn aikana.[3]

Ulkopuoliset lisäominaisuudet

[muokkaa|muokkaa wikitekstiä]

PostgreSQL:n pitkä evoluutio alkoiIngres-projektistaBerkeleyn yliopistossa.Ingresin kehittäjäMichael Stonebrakerlähti Berkeleystä tekemään Ingresin kaupallista versiota 1982, mutta palasi myöhemmin takaisin akateemiseen maailmaan. Palattuaan Berkeleyhin Stonebraker aloitti Ingresin jälkiprojektin, joka kohdistettiin vastaamaan tuonaikaisten tietokantojen ongelmiin.

Tuloksena ollut projekti, nimeltäänPostgres(post-Ingres), tähtäsi minimimäärään ominaisuuksia, joilla voitiin antaa täysi tuki erilaisille tietotyypeille. Nämä ominaisuudet sisälsivät mahdollisuuden tyyppien luontiin, mutta myös täyden relaatioiden kuvailukyvyn – jo aikaisemmin laajalti käytetyn, mutta pelkästään käyttäjän ylläpitämänä ja määrittelemänä. Postgres:issa tietokanta ymmärsi relaatioita ja kykeni sääntöjen avulla hakemaan informaatiota toisiinsa liittyvistä tauluista luonnollisella tavalla. Postgresin ja Ingresin lähdekoodit olivat jo alusta alkaen täysin erilliset.

Stonebraker ja Lawrence A. Rowe esittelivät Postgresin suunnitelman artikkelissaThe design of Postgres.[4]

Alkaen vuodesta 1986 työryhmä julkaisi useita muistioita, joissa esiteltiin järjestelmän perusominaisuudet ja vuonna 1988 projektilla oli olemassa toimiva prototyyppi. Työryhmä julkaisi version 1 rajoitetulle käyttäjäkunnalle kesäkuussa 1989, jota seurasi versio 2 uusiksi kirjoitetulla sääntöjärjestelmällä kesäkuussa 1990. Vuoden 1991 versiossa 3 oli jälleen uusi sääntöjärjestelmä, mutta myös tuki useille tallennejärjestelmille ja paranneltu kyselyjärjestelmä. Vuoteen 1993 mennessä oli järjestelmälle kertynyt suuri määrä käyttäjiä jotka hukuttivat projektin tuki- ja ominaisuuspyyntöihin. Version 4 jälkeen — joka oli puhtaasti pelkästään olemassa olevan koodin siivous — projekti päättyi.

Stonebraker perusti yhtiön nimeltä Illustra vuonna 1992 Postgresin kaupallisen version kehittämistä varten. Stonebrakerin tietämättä Berkeleystä valmistuneet Andrew Yu ja Jolly Chen alkoivat kehittää vuonna 1994avoimen lähdekoodinversiota, jossa he korvasivat POSTQUEL-kielen SQL-kielellä. Tuloksena syntynyt Postgres95 nimettiin uudelleen PostgreSQL:ksi ja julkaistiin sallivalla lisenssillä.[5]

Ensimmäinen PostgreSQL:n nimellä tapahtunut julkistus oli versio 6.0. Sittemmin joukko tietokantakehittäjiä ja vapaaehtoisia ympäri maailman ovat koordinoidusti ylläpitäneet ohjelmistoaInternetinvälityksellä. Version 6.0 jälkeen on julkaistu useita uusia versioita, samalla jatkaen ohjelmiston parantelua ja kehitystä; 20. syyskuuta 2010 julkaistiin uusin versio, 9.0.

Vaikkakin lisenssi mahdollisti PostgreSQL:n kaupallistamisen, PostgreSQL:n kaupallinen kehitystyö ei ollut yhtä nopeaa kuin Ingresin – joka on sinänsä yllättävää ottaen huomioon PostgreSQL:n edut Ingresiin verrattuna. Ensimmäinen isompi kaupallinen projekti syntyi, kun Paula Hawthorn (alkuperäinen Ingres-työryhmän jäsen, joka siirtyi Ingresistä) ja Michael Stonebraker muodostivat Illustra Information Technologiesin tehdäkseen PostgreSQL:stä kaupallisen version.

Tammikuussa 2005 PostgreSQL sai ensimmäisen tukijansa tietokantatoimittajista.Pervasive Software,parhaiten tunnettu Btrieve:stä, joka oli hyvin suosittuNovellNetwareympäristössä, julkisti kaupallisen tuotetuen ja sitoutumisensa kehitysyhteisöön. Tuon tapahtuman jälkeen,EnterpriseDBon julkistanut vastaavanlaisen sitoutumislupauksen, keskittyen ennen kaikkeaOracleavarten tehtyjen sovellusten siirron helpottamiseen PostgreSQL-ympäristöön.Greenplumon sponsoroinut kehitysprojektejatietovarastointijabusiness intelligence-sovelluksia silmällä pitäen, etenkinBizGres-projektia.

Marraskuussa 2005, John Loiacono,Sun Microsystemsinexecutive vice-president of softwarekommentoi,[6]että "We're not going to OEM Microsoft but we are looking at PostgreSQL right now," vaikkakaan tarkempaa tietoa Sunin kiinnostuksen kohteesta ei ole vielä julkistettu.

Toukokuussa 2023 Stack Overflow -sivustolla tehdyn kyselyn mukaan PostgreSQL on noussut suosituimmaksi tietokantamoottoriksi. Kolme vuotta aiemmin tehdyn tuloksen mukaan MySQL oli suosituin ja PostgreSQL oli toisella sijalla. Kaupallisista tietokonemoottoreista suosituin oli Microsoft’s SQL Server. Kysely on suunnattu ohjelmistokehittäjille eikä siten kerro miten paljon tuotantokäytössä on asennettuna.[7]

  1. abPostgreSQL 16.4, 15.8, 14.13, 13.16, 12.20, and 17 Beta 3 Released!,.Tieto on haettuWikidatasta.
  2. PL/R
  3. abcNew In PostgreSQL 12: Generated Columnspgdash.io.Viitattu 5.10.2019.(englanniksi)
  4. Michael Stonebraker & Lawrence A. Rowe:The design of Postgres(PDF)dsf.berkeley.edu.Viitattu 27.12.2023.(englanniksi)
  5. Lindsay Clark:Open source PostgreSQL named DBMS of the year by DB-Enginestheregister.3.1.2024. Viitattu 4.1.2024.(englanniksi)
  6. http:// computerworld.au/index.php/id;116679278;fp;16;fpid;0
  7. Tim Anderson:PostgreSQL now top developer choice ahead of MySQL, according to massive new surveydevclass.13.6.2023. Viitattu 27.12.2023.(englanniksi)

Aiheesta muualla

[muokkaa|muokkaa wikitekstiä]