sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL er verdens bedste database

Titlen er ikke clickbait eller hyperbole. Jeg har til hensigt at bevise, at PostgreSQL i kraft af både design og implementering objektivt og målbart er en bedre database end noget andet tilgængeligt i øjeblikket, med eller uden pengeovervejelser.

Hvordan i alverden kan jeg hævde og retfærdiggøre sådan en ophøjet udtalelse? Læs videre, blide nørd. Jeg lover, at din tid ikke vil blive spildt.

Transparent sikkerhed

PostgreSQL har en sikkerhedsmailingliste. PostgreSQL-projektet lærer om indtrængningsvektorerne på samme tid, som alle andre gør. Intet er skjult, og alt, hvad der findes, arbejdes med i en hastighed, der får de kommercielle leverandørers hoveder til at snurre. Lad dig ikke narre af kortere fejllister udgivet af den samme leverandør, som leverer softwaren under kontrol.

Det betyder, at alle kendte angrebsvektorer håndteres, så snart de er offentliggjort. Denne form for sikkerhedsfølsomhed kan ikke engang tænkes på det kommercielle marked. For kommercielle leverandører er hemmeligholdelse, indtil problemet kan løses, afgørende for afhjælpningen. PostgreSQL får ingen sådan lettelse, og det er fantastisk for dig.

Multi-version Concurrency Control er godt for dig

PostgreSQL vælger en metode til samtidighedskontrol, der fungerer bedst til høje INSERT- og SELECT-arbejdsbelastninger.

Det er meget nemt at designe til PostgreSQL, idet man holder begrænsningerne i tankerne for sporingsoverhead for

OPDATERING og SLET. For det meste, hvis du respekterer dine data, bør du lære at elske den datasikkerhed, som PostgreSQL giver dig.

DDL deltager i transaktioner ved hjælp af PostgreSQL. Migrationer virker hele vejen eller ingen af ​​vejen (den værste form for ikke at fungere er næsten at arbejde). Testseler er meget nemme at bygge. Har du brug for at nulstille testselen? Bare RUL TILBAGE.

PostgreSQL understøtter standard-kompatible former for transaktionsisolering, herunder serialisering, læst committet og gentagelig læsning. Disse metoder giver fuldstændig ACID-overensstemmelse.

PostgreSQL gør alt

Så du vil have NoSQL, Riak, REACT, Redis, Mongo osv.? PostgreSQL gør alt det. Ganske vist ikke med alle de originale produkters klokker og fløjter. For eksempel opretter PostgreSQL ikke nye shards til dig for nogen af ​​disse. Det er stadig en manuel proces. Men så igen, der er altid pg_partman. . .

Vil du have et kolonnedatalager? Hvad med hstore? Vil du ikke omskole dine medarbejdere? Tilslut det sprog, du vælger, og fortsæt med at køre. Vil du have delvis replikation? Streaming Logisk replikering er noget for dig.

Jeg ville have svært ved at tænke på en funktion, som jeg vil have, som PostgreSQL ikke har, eller som der ikke er en velkendt udvidelse at levere.

Vil du udtrække data fra andre systemer? PostgreSQL har den mest levende samling af føderationsobjekter i enhver database. De kalder dem udenlandske dataindpakninger, og du kan tilslutte PostgreSQL til en alligator med gaffatape og lynlås. Behandl alt, som om det er dine data.

Høj den til et kort

PostGIS-fællesskabet kan uden tvivl være større end PostgreSQL-fællesskabet selv. Kortlægningsmulighederne i PostgreSQL sætter det i en klasse for sig selv, selv sammenlignet med meget dyre alternativer.

PostGIS-projektet valgte PostgreSQL som en platform på grund af den nemme udvidelsesmulighed og de omfattende databerigelsesmuligheder. Disse muligheder er direkte eksponeret for ethvert andet projekt at drage fordel af. De er også ubesvarede af nogen anden leverandør, kommerciel eller open source.

I sidste ende kan du tilslutte den til hvad som helst.

PostgreSQL vokser og fører an inden for open source

PostgreSQL-projektet er en af ​​de mest synlige organisationer inden for open source-software. Med et enormt fællesskab og vækst i en astronomisk hastighed, vil eventuelle mangler, som det har nu, uden tvivl blive besejret inden for en tidsramme, som andre leverandører kun kan drømme om.

Yderligere funktioner i virksomhedskvalitet annonceres bogstaveligt talt hver dag, og personalet til at vedligeholde disse funktioner er selvvalgt fra en pulje af genier, som enhver virksomhed håber at ansætte, og der er bare ikke nok at gå rundt.

PostgreSQL bygger løsninger, der er stabile for evigt

PostgreSQL har logisk replikering indbygget i kernen. Dette giver mulighed for migrering på tværs af versioner. Læs det igen. Du er ikke låst til en bestemt hardware- eller softwareversion. Løsningen kan opgraderes på ubestemt tid.

PostgreSQL understøttes også på mange platforme, inklusive de superstabile versioner af Linux. Har du brug for en løsning, der overlever den typiske 3~5 års ROI? PostgreSQL holder dig for evigt, selvom du aldrig opgraderer hardwaren overhovedet. Og gebyrerne for det er nemme at beregne. $0.

Deklarativ er bedre end imperativ

Databasesprog er generelt deklarative. Det vil sige, at du skriver en forespørgsel i det indbyggede sprog efter eget valg og beskriver de resultater, du gerne vil se. Databasen forsøger at afkode dine hensigter og give de passende resultater. Dette er grundlaget for alle deklarative programmeringsmodeller. I PostgreSQL kommer dette ned til en kortlægning af funktioner til nøgleord i SQL-sproget, nogle gange med flere algoritmiske valg for præcis, hvordan hver erklæring skal implementeres.

I det ældgamle argument om imperativ vs. deklarativ5 programmeringsmodeller, falder det mig ind, at deklarativ programmering bare er imperativ programmering i en tynd forklædning. Hvert deklarativt token i et databaseforespørgselssprog knytter sig i sidste ende til en eller flere algoritmer, som anvender deklarationen i imperitive termer. Således er impedansmismatchet defineret af Henrietta i sidste ende i udviklerens sind. Det vil sige, at hvis udvikleren ville tænke præcis, som databasefunktionsprogrammøren tænker, så ville der ikke være nogen mismatch.

Så hvordan kunne en deklarativ model i sidste ende være bedre end en imperativ model, i betragtning af at den ene blot er et kaldende træk ved den anden? Glad for du spurgte, for det bringer mig til mit punkt.

PostgreSQL-udviklerne er klogere end dig. Jeg mener det ikke for at være facetagtig eller genert. Bogstaveligt talt tusindvis af bidragydere har givet millioner af bidrag til PostgreSQL-projektet, mange af dem som forbedringer af andres bidrag. Chancerne for, at hvad end du har tænkt dig på toppen af ​​dit hoved, er bedre end det, der allerede er blevet implementeret, er meget lille. Og selvom dine tanker var bedre, bør du bidrage med dem til PostgreSQL-projektet til gavn for alle og dermed hæve barren for alle andre.

Så hvad gør PostgreSQL så vidunderlig? Verdensomspændende mindshare uden virksomhedsovervejelser. Tusindvis af udviklere arbejder hundredtusindvis af timer for at træffe bedre algoritmiske valg. Så din software bliver bedre for hver udgivelse, som regel uden at skulle gøre noget særligt fra din side.

Er det ikke karakteren af ​​software generelt, siger du? Altså ja. Men ikke i nærheden af ​​det omfang, det er, når hele verden er involveret i dit projekt. PostgreSQL har en meget fremtrædende plads i open source-fællesskabet. Kommercielle leverandører vil aldrig være i stand til at følge med den forandringshastighed, som et open source-projekt kan give på dette niveau. Migrationerne til open source (og især PostgreSQL) er her for at bevise det.

Funktionerne bliver ved med at rulle ind. Der er meget få ting tilbage, som kommercielle leverandører kan pege på som en klar fordel. Blandt disse ting er SMP-understøttelse, bi-direktionel replikering og eksterne værktøjer. Gæt, hvad fællesskabet arbejder på nu, og som højst sandsynligt vil udgive i de næste par år?

Udvid PostgreSQL som du vil

PostgreSQL har et pulserende fællesskab af forfattere, der skriver tilhørende software. Dette inkluderer at tilslutte ethvert sprog, du kan lide, og bruge det til at udvide PostgreSQL på enhver måde, der virker nyttig. Kan du tilfældigvis lide perl string håndtering? Ok, så brug det. Hvad med Python-kortstøtte? Ja, bare tilslut python og gå til byen. Vil du skrive webtjenester ved hjælp af en PostgreSQL-backend? Det er fantastisk, og PostgreSQL vil hjælpe. JSON? Okay. XML? Det kan du tro. PostgreSQL har direkte support til alt det og uendeligt meget mere. Hvis du kan komme i tanke om et sprog, der gør det godt, så tilslut det til PostgreSQL, og du kan have det på serversiden.

Du kan oprette dine egne funktioner, datatyper, operatorer, aggregater, vinduesfunktioner eller stort set alt andet. Kan du ikke se en funktion, du kan lide? Plagier og tilpas det fra kildekoden. Du er fri til at gøre det på grund af licensen.

PostgreSQL giver også nogle hook-funktioner, der giver dig mulighed for at udvide databasen uden at skulle gå til ekstreme programmering.

Denne evne til at assimilere enhver funktion i ethvert andet sprog er unik for PostgreSQL. Du kan levere enhver funktion ved at bruge et hvilket som helst standardiseret bibliotek, der findes. Du kan følge standarderne, følge med i ændringer, stadig opdatere PostgreSQL, mens den er i live, og du kan gøre det hele gratis.

Gå stor og bred

PostgreSQL har flere funktioner til at få mest muligt ud af den hardwareplatform, den har fået. Partitionering, parallel eksekvering, partielle indekser, tablespaces, cacheing og parallelle ikke-blokerende vedligeholdelsesrutiner (næsten alt i PostgreSQL spirer søgeordet CONCURRENTLY på det seneste).

Når det ikke er nok for dig, så vil fysisk streaming-replikering gøre en masse læsestandby for dig til en billig penge. Sharding, memcache, kødannelse, belastningsbalancering og forbindelsespooling fungerer alt sammen med PostgreSQL. Stadig ikke nok? Hvad med logisk streaming-replikering? Du vil geosharde databasen over hele verden, siger du? Nå, velkommen til bi-direktionel replikering.

Og prisskiltet er stadig på $0.

Indeksér alt det

PostgreSQL understøtter en så enorm liste af indekser, at det forvirrer sindet at finde ud af, hvordan man bruger dem alle. GiST, SP-Gist, KNN Gist, GIN, BRIN og Btree er alle tilgængelige. Og der er flere at hente gennem udvidelsessystemet, som Bloom-filtre og andre.

PostgreSQL kan bruge disse med funktionsdrevne indekser, partielle indekser, dækkende indekser og fuldtekstsøgning. Og disse udvidede funktioner udelukker ikke hinanden. Du kan bruge dem alle på samme tid.

Rul den ind, rul den ud

Flere af de allerede nævnte teknologier gør PostgreSQL til en fantastisk dataintegrations- og distributionsplatform. Flere former for replikering kombineret med flere former for føderation giver både push- og pull-teknologier til næsten enhver form for datasystemer.

Disse kan kombineres i uendelige konfigurationer for at bygge bro over databaselagringsløsninger. Alt dette uden at kræve nogen ETL/ELT-behandlingspakke. PostgreSQL gør det bare. Den hurtigste enkeltkilde til sandhedsdatabase på planeten gør det ved slet ikke at flytte dataene ud af kildesystemet. Det betyder, at data altid er aktuelle, og svartiderne kan styres.

Hvis du ikke kan tåle kildesystemets upålidelighed eller gerne vil have en smule bedre ydeevne på forespørgselssiden, kan du også stadig cache dataene med jævne mellemrum med materialiserede visninger, som kan opdateres, mens der stadig forespørges.

Licensen er åben

PostgreSQL har sin egen licens, der i vid udstrækning er baseret på BSD-licensen. Dette giver mulighed for endnu større frihed til brug og distribution.

Licensen gælder for hele koden for hovedprojektet, større bidragsudvidelser, klientbiblioteker, forbindelsesadministratorer og de fleste af de tilknyttede værktøjer.

Den er meget eftergivende, skrevet på almindeligt engelsk og kan ikke købes.

Fantastisk dokumentation

PostgreSQL-projektet kræver, at enhver udvikler, der indsender kode, vil levere dokumentation for forslaget. Dette forslag bruges til at skabe dokumentationen for funktionen, der er tilgængelig i flere formater. Denne dokumentation bruges også i evalueringen af ​​selve funktionen og som reference til at udvikle fremtidige funktioner.

Alt i alt betyder det, at PostgreSQL lever af dokumentation. Der er mange udviklere til PostgreSQL, der har lært at kode i C, hvordan databaser fungerer, og hvordan projekter styres ved at arbejde med PostgreSQL-projektet. Denne dokumentation er uden sidestykke.

Testdrevet udvikling

PostgreSQL er grundigt testet. Nej, det siger det ikke stærkt nok. PostgreSQL er udtømmende testet. Hver fejl bliver mødt med en test for at bekræfte dens eksistens, og kode er skrevet for at tilfredsstille testen. Nye funktioner skrives ved oprettelse af test (og dokumentation) først og derefter kodet, indtil funktionen vises.

Disse tests er integreret i build-farmen til regression, så fejl (gen) dukker ikke op i fremtidige versioner af PostgreSQL. Det betyder, at hver test (der stadig er aktuel) køres for hver version af PostgreSQL for hver byggecyklus. Det er en masse test, og det sikrer, at PostgreSQL forbliver den mest stabile database, der er tilgængelig.

PostgreSQL frigives kun, når ALLE regressionstestene består. Dette giver mulighed for "0 kendte fejl"-udgivelser.

Internationalisering og lokalisering

Udviklerne af PostgreSQL kommer fra hele verden. De har arbejdet på mange modersmål siden starten af ​​PostgreSQL som et universitetsprojekt. Internationalisering og lokalisering er blevet indbygget i PostgreSQL som en standardpraksis, ikke en bolt på, da PostgreSQL begyndte at tiltrække et kommercielt globalt marked.

Mens PostgreSQL uddelegerer noget af internationaliseringen til operativsystemet af kompatibilitetsgrunde, er meget af oversættelsen indlejret i systemet, hvilket giver en problemfri sprogovergangsoplevelse.

Skydrift

PostgreSQL arbejder i cloud-arkitekturer ved hjælp af ansible, kubernetes og proprietære værktøjer fra flere cloud-leverandører. Der er flere native cloud-implementeringer at vælge imellem for at matche din arkitektur.

Hvis du vil behandle servere som kvæg, ikke kæledyr, har PostgreSQL dig også dækket af skyen.

Overholdelse af standarder

PostgreSQL har været standardfokuseret i projektets levetid. Siden PostgreSQL opstod i et universitetsgraduate-program, er det blevet brugt som referenceimplementering for mange SQL-standarder.

PostgreSQL implementerer SQL/Med og ANSI SQL.

Ifølge den fantastiske dokumentation understøtter PostgreSQL de fleste af de vigtigste funktioner i SQL:2016. Ud af 179 obligatoriske funktioner, der kræves til fuld Core-overensstemmelse, overholder PostgreSQL mindst 160." Dette er mere end næsten nogen anden databasemotor.

Sprogfunktioner

PostgreSQL implementerer almindelige tabeludtryk (CTE), sprogkontrolstrukturer (hvis, for, sag osv.), struktureret fejlhåndtering og alle de godbidder, du ville forvente af et modent proceduresprog.

Er du overbevist endnu?

Jeg kunne stadig tale om det fantastiske fællesskab af brugergrupper, IRC-kanaler, hjemmesider med løsninger, blogartikler og mentorer. Jeg kunne blive filosofisk over den måde, databasen er på tværs af platforme, på tværs af arkitektur og på tværs af kultur. Der er timevis af præsentationer, videoer og foredrag.

Eller du kan bare downloade det og se, om det er større end din fantasi. Jeg tror, ​​du vil blive meget positivt overrasket.


  1. Løsninger til, hvordan du læser SQL Server-transaktionslogfil uden fejl

  2. Den nemme måde at implementere en MySQL Galera Cluster på AWS

  3. Sådan viser du tabel fremmednøgler

  4. SYSDATETIMEOFFSET() Eksempler i SQL Server (T-SQL)