PostgreSQL er måske den mest populære open source-database i verden, og dens stigning i det seneste årti har været intet mindre end bemærkelsesværdig. Dens omfang og pålidelighed fanger store, etablerede organisationers opmærksomhed. Derudover er det et gratis, open source-databasestyringssystem. Dette fungerer som dets vigtigste salgsargument blandt små virksomheder, der opererer på et budget.
Når det er sagt, kommer alle disse fordele ikke uden omvendt. PostgreSQL, som enhver anden mainstream DBMS, har sine ulemper, som enhver udvikler skal vide om på forhånd. Denne artikel vil diskutere de mest almindelige problemer, som PostgreSQL-udviklere står over for, og de bedste måder at omgå dem på.
Problemer med ydeevne
Der er ikke et enkelt databasestyringssystem, der ikke oplever lejlighedsvise præstationsproblemer. PostgreSQL er ikke tilbøjelig til disse problemer, men de sker lejlighedsvis, og det er klogt for enhver system at vide, hvordan man identificerer og slipper af med dem.
Mange udviklere og systemer mener, at parameterjustering i postgresql.conf er den eneste måde at eliminere ydeevneproblemer på. Selvom konfigurationsparametre kan være gavnlige, vil de ikke altid tage dig til roden af problemet. I mange tilfælde vil problemet i sidste ende afvige fra det, du foker på.
Nogle mennesker bruger visningen pg_stat_statements til at registrere langsomme forespørgsler ved at se på deres indlæsningstider. Andre foretrækker det PostgreSQL Forklar, som er æret for at give en mere nøjagtig og inkluderende forespørgselsopdeling. Sammen med Analyse hjælper funktionen med at booste PostgreSQL klient ydeevne ved at vise udførelsesplanen genereret af PostgreSQL's planner og vise køretiden.
Replikationsforsinkelsesproblemer
Tilfælde af replikationsforsinkelsesproblemer er få og langt imellem, men deres store indvirkning på applikationsydelsen gør dem værd at inkludere på denne liste. At identificere PostgreSQL-replikeringsforsinkelser er en rimelig nem opgave, men der er flere måder at se på problemet på, som kan bestemme den bedst egnede måde at løse det på.
PostgreSQL bruger streaming-replikering – en funktion introduceret i version 9.0 – hvilket burde gøre det hurtigt, da ændringer logges som en række logposter, præcis som WAL-modtageren opsnapper dem. Når disse logposter er lagt på WAL-filen, afspiller PostgreSQL-startprocessen disse data, og streaming-replikeringsprocessen begynder.
De fleste forsinkelser opstår, når WAL-segment kan ikke findes, eller der er netværksproblemer, konfigurationsproblemer, dårlig hardware eller travle nik. Du kan bruge pg_stat_replication-værktøjet til at få et overblik over streaming-replikeringsstatus. ClusterControl har også vist sig at hjælpe med databasenodeovervågning.
Nedetid ved opdatering af skemaet
Opdatering af et PostgreSQL-databaseskema er let, hvis du kan gå offline, mens du gør det. Du skal bare lukke applikationen, oprette en skema-sikkerhedskopi, udføre opdateringshandlinger, gennemgå og teste dit arbejde og genstarte din applikation i håb om at du har alt rigtigt.
Ting vil dog ikke være så lette, hvis karakteren af din ansøgning kræver det nul nedetid. Dette kræver en kompleks, flerfaseprocedure, der kan omfatte brug af en bagudkompatibel tilgang til at ændre din database. Pointen med dette er at gøre databasen anvendelig til både dine gamle og nye applikationsversioner.
For migreringsoperationer, der ikke er bagudkompatible, kan du opdele dem i mindre trin for at oprette en database, som begge versioner af din applikation kan bruge. Det kræver ofte, at brugeren opretter en ny tabel eller visning eller kolonne, som din nye applikationsversion vil bruge.
Sikkerhedshærdning
Lad det først og fremmest være klart, at PostgreSQL-databasen tilbyder nogle af de bedste datasikkerhed funktioner til din server og data. Problemet kommer ind, når det er tid til at identificere og implementere dem.
Sikkerhedshærdning i PostgreSQL kan opdeles i tre kategorier: serverkonfiguration, datakryptering og netværkskonfiguration. Det er altid tilrådeligt at udføre datakryptering under flyvning og i hvile. For datakryptering under flyvningen skal klientdatabaseadgang indstilles til at bruge SSL. Serveren bør også kræve eller acceptere sikre forbindelser.
Kryptering i hvile kan udføres i mange forskellige faser af stakken; hvor du implementerer det, vil primært være bestemt af infrastruktur og applikationskrav. pgcrypto-modulet bruges til kryptering og dekrypteringsformål på databaseniveau. Teknikken er nyttig som en sidste udvej, når der ikke er nogen anden holdbar krypteringsmetode, og specifikke datasæt skal krypteres.
er kan altid kryptere data på sky- eller filsystemniveauer - en tilgang, der er mere problemfri og mindre påvirkende for ydeevnen.
Risikoen for datatab
Selvom der er mange måder at reducere risikoen for tab af data, kan du aldrig reducere denne mulighed til nul. Derfor skal enhver database have en robust sikkerhedskopieringsstrategi for at sikre, at applikationer sikkerhedskopieres og kører så hurtigt som muligt efter en Cyber angreb, en katastrofal begivenhed eller et dataintegritetsproblem.
Datasikkerhedskopier skal være i centrum for enhver databasestyringsstrategi. For PostgreSQL-brugere er der flere måder at oprette en backup-strategi på, afhængigt af præferencer og andre funktionelle faktorer. For eksempel kan den indbyggede pg_dump-funktion bruges til at oprette periodiske sikkerhedskopier med installation af virtuel maskine eller bare metal i mangel af et istreret servicelag. Pg_dump-output består af en tekstfil, som du kan gemme på en platform, der ikke er knyttet til databasen, og hente senere, når chips er nede. Datagendannelsesoperationen handler normalt kun om at gøre filen tilgængelig for PostgreSQL-programmet som input.
Mens brug af pg_dump er fantastisk til brugerformulerede backup-planer, cloud-tjenester såsom Stratoscale SMD og AWS RDS giver backup og disaster recovery som indbyggede funktioner, så du ikke behøver at bekymre dig om at bygge en backup-strategi fra bunden.
slutnote
Databasestyring er kun enkel, hvis du får planlægningsfasen rigtigt og er bekendt med hverdagens udfordringer og levedygtige afbødningsstrategier. Forhåbentlig vil ovenstående tips hjælpe dig med at klare snavs og komme hurtigt og problemfrit op igen.