PostgreSQL
| PostgreSQL programvare | |
|---|---|
| Sjanger | Databasestyringssystem |
| Utvikler | PostgreSQL Global Development Group |
| Dato for første versjon | 1996 |
| Siste versjon | 14.4 (16. juni 2022 ) |
| Siste beta | 15 Beta 2 (30. juni 2022) |
| Operativsystem | Multiplattform |
| Språk | C. |
| Tillatelse | BSD -lisens ( gratis lisens ) |
| Nettsted | www.postgresql.org |
PostgreSQL ( engelsk uttale [poʊstɡrɛs ˌkjuːˈɛl] Uttale , 5,6 kB MP3) er en komplett objektorientert DBMS utgitt under en gratis lisens ( BSD - lisensstil ). Ofte forkortet som " Postgres ", selv om dette er et gammelt navn på det samme prosjektet, er det et reelt alternativ både til andre gratisprodukter som MySQL , Firebird SQL og MaxDB og til lukkede kode som Oracle , IBM Informix eller DB2 og tilbyr funksjoner unik i sitt slag som plasserer den på noen måter i forkant av databasesektoren .
Historie
Opprinnelig ble DBMS kalt INGRES og var et prosjekt fra University of Berkeley . I 1982 forlot prosjektlederen, Michael Stonebraker , Berkeley for å markedsføre produktet, men vendte senere tilbake til den akademiske konteksten. I 1985 forlot han universitetet igjen for å gi liv til et post-Ingres-prosjekt (som tok navnet Postgres ) som overvant de åpenbare begrensningene til datidens konkurrerende produkter. Basene til Ingres- og Postgres-fjærene var, og har holdt seg over tid, ganske distinkte.
Det nye prosjektet hadde som mål å gi fullstendig støtte for datatyper, spesielt muligheten til å definere nye datatyper, UDF (User Defined Function), User Defined Types. Det var også mulighet for å beskrive forholdet mellom enheter (tabeller), som inntil da var overlatt helt til brukeren. Dermed bevarte Postgres ikke bare dataintegriteten, men den var i stand til å lese informasjon fra relaterte tabeller på en naturlig måte, etter brukerdefinerte regler.
I 1986 ga utviklerne ut et stort antall artikler som beskrev det nye systemet, og i 1988 ble en første fungerende prototype utgitt. Versjon 1 ble utgitt i juni 1989 for et begrenset antall brukere. En versjon 2 fulgte i juni 1990 , der regelsystemet ble fullstendig omskrevet. I versjon 3, av 1991 , ble dette systemet skrevet om igjen, men støtte for flere datalagringsadministratorer og en forbedret søkemotor ble også lagt til. I 1993 var det allerede et betydelig antall brukere som oversvømmet utviklingsteamet med forespørsler om støtte og nye funksjoner. Etter å ha gitt ut versjon 4, som først og fremst var en kodeopprydding, ble prosjektet avsluttet.
Selv om Postgres-prosjektet offisielt ble forlatt, tillot BSD-lisensen Open Source -utviklere å få tak i en kopi av programvaren og deretter forbedre den etter eget skjønn. I 1994 la to Berkeley-studenter, Andrew Yu og Jolly Chen, til en SQL -tolk til Postgres for å erstatte den gamle QUEL fra Ingres' dag. Den nye programvaren ble deretter utgitt på nettet under navnet Postgres95 . I 1996 skiftet det navn igjen: for å markere støtte for SQL-språket ble det kalt PostgreSQL .
Den første utgivelsen av PostgreSQL var versjon 6. Siden den gang har et fellesskap av frivillige utviklere fra hele verden som koordinerer gjennom Internett vært ansvarlig for prosjektet. Versjon 6 ble fulgt av andre, som hver brakte nye forbedringer. I januar 2005 ble 8, den første innfødte for Windows, utgitt.
Selv om lisensen lar programvaren kommersialiseres, ble ikke Postgres-koden utviklet kommersielt like raskt som Ingres. På et tidspunkt dannet imidlertid Paula Hawthorn (opprinnelig medlem av Ingres' team) og Michael Stonebraker et selskap kalt Illustra Information Technologies for å markedsføre det.
Beskrivelse
En rask gjennomgang av PostgreSQL kan tyde på at den ligner på andre databaser. PostgreSQL bruker SQL-språket til å spørre etter data. Disse lagres som en serie tabeller med fremmednøkler som tjener til å koble sammen relaterte data. Programmerbarheten til PostgreSQL er dens viktigste styrke og den største fordelen i forhold til konkurrentene: PostgreSQL gjør det enklere å bygge applikasjoner for den virkelige verden, ved å bruke data hentet fra databasen.
SQL-databaser lagrer enkle data i " flate tabeller ", som krever at brukeren henter og grupperer relatert informasjon ved hjelp av spørringer. Dette står i kontrast til måten både applikasjoner og brukere bruker data på: for eksempel i et høynivåspråk med komplekse datatyper der alle relaterte data fungerer som komplette elementer, vanligvis referert til som objekter eller poster (avhengig av språket).
Konverteringen av informasjon fra SQL-verdenen til objektorientert programmering byr på vanskeligheter hovedsakelig på grunn av det faktum at de to verdenene bruker forskjellige modeller for dataorganisering. Bransjen kaller dette problemet " impedansmismatch ": kartlegging av data fra en modell til en annen kan ta opptil 40 % av et prosjekts utviklingstid. En rekke kartløsninger, ofte referert til som " objektrelasjonell kartlegging ", kan løse problemet, men de har en tendens til å være dyre og har sine egne problemer, forårsaker dårlig ytelse eller tvinger all datatilgang til å skje gjennom språket som støtter selve kartleggingen.
PostgreSQL kan løse mange av disse problemene direkte i databasen. PostgreSQL lar brukere definere nye typer basert på vanlige SQL-datatyper, slik at databasen selv kan forstå komplekse data. Du kan for eksempel definere en adresse som et sett med forskjellige tekststrenger for å representere husnummer, by osv. Herfra kan du enkelt lage tabeller som inneholder alle feltene som er nødvendige for å lagre en adresse med en enkelt kodelinje.
PostgreSQL tillater også typearv, et av hovedkonseptene for objektorientert programmering . Du kan for eksempel definere en postnummertype, og deretter opprette en cap (postnummer) type eller en us_zip_code type basert på den. Adressene i databasen kunne derfor godta begge typer, og spesifikke regler kunne validere dataene i begge tilfeller. I tidlige versjoner av PostgreSQL krevde implementering av nye typer skriveutvidelser i C og kompilering av dem på databaseserveren. Siden versjon 7.4 har det blitt mye enklere å lage og bruke egendefinerte typer gjennom kommandoen "CREATE DOMAIN".
Programmering av selve databasen kan få store fordeler ved å bruke funksjoner. De fleste SQL-systemer lar brukere skrive en prosedyre, en blokk med SQL-kode som andre SQL-setninger kan påkalle. SQL i seg selv forblir imidlertid uegnet som programmeringsspråk, slik at brukere kan oppleve store problemer med å bygge kompleks logikk. Enda verre, SQL i seg selv støtter ikke mange av de viktigste grunnleggende operatørene av programmeringsspråk, for eksempel loop og betingede kontrollstrukturer . Derfor har hver leverandør skrevet sine egne SQL -språkutvidelser for å legge til disse funksjonene, og derfor fungerer ikke disse utvidelsene nødvendigvis på forskjellige databaseplattformer .
I PostgreSQL kan programmerere implementere logikk i ett av de mange støttede språkene.
- Et morsmål kalt PL / pgSQL som ligner på Oracles PL / SQL prosedyrespråk , som gir spesielle fordeler i spørringsintensive prosedyrer.
- Wrappers for populære skriptspråk som Perl , Python , Tcl og Ruby som lar deg bruke kraften deres i strengmanipulering og kobling til omfattende eksterne funksjonsbiblioteker.
- Prosedyrer som krever høyere ytelse og kompleks programmeringslogikk kan bruke C og C++ .
- Videre er et grensesnitt til R -språket også tilgjengelig , rikt på statistiske funksjoner og for matriseberegning .
Programmereren kan plassere koden på serveren som funksjoner , som gjør koden gjenbrukbar som en lagret prosedyre , slik at SQL-koden kan påkalle funksjoner skrevet på andre språk (som C eller Perl).
Styrker ved PostgreSQL-programmerbarhet:
- Ytelsesøkning, ettersom logikken brukes direkte fra databaseserveren samtidig, noe som reduserer informasjonsflyten mellom klienten og serveren.
- Økt pålitelighet, på grunn av sentralisering av kontrollkoden på serveren, slipper å administrere synkroniseringen av logikken mellom flere klienter og dataene som er lagret på serveren.
- Ved å plassere dataabstraksjonslag direkte på serveren, kan klientkoden bli slankere og enklere.
Disse fordelene gjør PostgreSQL til det mest avanserte databasesystemet fra et programmerbarhetssynspunkt, noe som bidrar til å forklare suksessen. Bruk av PostgreSQL kan redusere den totale programmeringstiden for mange prosjekter, med de nevnte fordelene som vokser med kompleksiteten til selve prosjektet, åpenbart hvis det brukes av erfarne brukere i bruken.
Indekser
Støtter GiST og GIN ( Inverted Generalized Index ) indekser bruker B + -tree , hash. Du kan lage indekser av uttrykk med en indeks av resultatet av et uttrykk eller funksjon i stedet for den enkle verdien av en kolonne, delindekser der du indekserer en del av en tabell med SQL-uttrykket: CREATE INDEX. Den er også i stand til å bruke flere indekser sammen for å utføre komplekse spørringer.
Opplegg
I PostgreSQL er alle objekter (med unntak av roller og tabellplasser ) plassert i et skjema. Det fungerer effektivt som et navneområde , og lar objekter med samme navn eksistere side om side i den samme databasen. Skjemaer er analoge med mapper i filsystemet , bortsett fra at de ikke kan være inne i hverandre, og det er ikke mulig å lage symbolske lenker som peker til et annet skjema eller objekt.
Databaser opprettes som standard med det "offentlige" (felles) skjemaet, men alle andre tilleggsskjemaer kan legges til og offentlig er ikke nødvendig.
En "søkebane" bestemmer rekkefølgen som ukvalifiserte skjemaobjekter (de uten et forhåndsbestemt skjema) kontrolleres og kan konfigureres på databasen eller på rollenivå. "Søkebanen" inneholder som standard det spesielle skjemanavnet til "$-bruker" som først søker etter et skjema med navnet på brukeren koblet til databasen. Hvis den ikke blir funnet, ser den etter neste mønster.
Datatyper
Et stort utvalg av datatyper er naturlig inkludert:
- boolere
- tall med vilkårlig presisjon
- Tegn (tekst, varchar, char)
- Spor
- Dato / tid (tidsstempel / tid med / uten tidssoner, dato, intervall)
- Penger
- Enum
- Bitstrenger
- Tekstsøketype
- Sammensatte
- Arrays (variabel lengde og alle typer data, inkludert tekst og sammensatte typer) opptil 1 GB.
- Geometriske primitiver
- IPv4- og IPv6- adresser
- CIDR- blokker og MAC-adresser
- XML som støtter XPath- spørringer (siden 8.3)
- UUID (siden 8.3)
- JSON (siden 9.2)
MVCC
PostgreSQL administrerer samtidighet gjennom et system kjent som multiversion concurrency control (MVCC) som gir hver transaksjon et "bilde" av databasen, slik at endringer ikke er synlige for andre transaksjoner før de er utført. Dette eliminerer nesten alltid behovet for å bruke leselåser og sikrer vedlikehold av ACID-prinsipper effektivt.
Programmer for administrasjon av grafisk grensesnitt
- phpPgAdmin - er et gratis PHP -program som lar deg administrere på en forenklet måte, med et nettbasert grafisk grensesnitt, PostgreSQL-database
- pgAdmin - er en multiplattformapplikasjon, skrevet i C ++ , som gjør det mulig å administrere på en forenklet måte, med et grafisk grensesnitt, PostgreSQL-database.
Andre prosjekter
Wikimedia Commons inneholder bilder eller andre filer på PostgreSQL
Eksterne lenker
- ( NO ) Offisiell side , på postgresql.org .
- ( EN ) Arbeider angående PostgreSQL , på Open Library , Internet Archive .
- PostgreSQL , på packages.debian.org .
- PostgreSQL kildelager , på git.postgresql.org .
- ( NO ) PostgreSQL , på Free Software Directory .
- ( IT ) PostgreSQL på gratis datanotater
- ( EN ) * ( IT ) PostgreSQL på OpenERP