PostgreSQL estas eble la plej populara malfermfonta datumbazo en la mondo, kaj ĝia pliiĝo dum la pasinta jardeko estis nenio malpli ol rimarkinda. Ĝia ampleksa kaj fidindeco kaptas la atenton de grandaj establitaj organizoj. Aldone, ĝi estas senpaga, malfermfonta datumbaza istradsistemo. Ĉi tio funkcias kiel ĝia ĉefa venda punkto inter malgrandaj entreprenoj funkciigantaj laŭ buĝeto.
Dirite, ĉiuj tiuj avantaĝoj ne venas sen flanka flanko. PostgreSQL, kiel ĉiu alia ĉeftendenco DBMS, havas siajn malavantaĝojn, kiujn ĉiu ellaboranto devas scii anticipe. Ĉi tiu artikolo diskutos la plej oftajn problemojn al kiuj alfrontas programistoj de PostgreSQL kaj la plej bonajn manierojn eviti ilin.
Prezentaj aferoj
Ne ekzistas ununura datumbaza istradsistemo, kiu ne spertas fojajn rendimentajn problemojn. PostgreSQL ne estas inklina al ĉi tiuj problemoj, sed ili okazas foje, kaj estas saĝe por iu sistemistranto scii kiel identigi kaj forigi ilin.
Multaj programistoj kaj sistemaj istrantoj opinias, ke parametra agordo en postgresql.conf estas la nura maniero forigi rendimentajn problemojn. Kvankam agordaj parametroj povas esti utilaj, ili ne ĉiam kondukos vin al la radiko de la problemo. En multaj okazoj, la problemo finfine diferencas de tio, pri kio vi fokusiĝas.
Iuj homoj uzas la vidpagon pg_stat_statements por detekti malrapidajn demandojn rigardante siajn ŝarĝtempojn. Aliaj preferas PostgreSQL Klarigu, kiu estas respektata pro doni pli precizan kaj inkluzivan demandrompon. Kune kun Analizi, la funkcio helpas plifortigi Kliento PostgreSQL agado montrante la ekzekutplanon generitan de la planisto de PostgreSQL kaj montrante la rultempon.
Problemoj pri replikado
Kazoj de reproduktaj malfruaj problemoj estas malmultaj kaj malproksime, sed ilia peza efiko al aplikaĵo-efikeco igas ilin inkluditaj en ĉi tiu listo. Identigi postgreSQL-reproduktajn malfruojn estas sufiĉe facila tasko, sed ekzistas pluraj manieroj rigardi la problemon, kiuj povus determini la plej taŭgan manieron solvi ĝin.
PostgreSQL uzas reproduktadon de fluado - trajto enkondukita en versio 9.0 - kiu devus rapidigi ĝin ĉar ŝanĝoj estas registritaj kiel serio de protokolaj registroj ĝuste kiel la WAL-ricevilo kaptas ilin. Post kiam ĉi tiuj protokolaj registroj estas enmetitaj en la WAL-dosieron, la startprocezo de PostgreSQL reludas tiujn datumojn, kaj la reproduktadprocezo komenciĝas.
Plej multaj malfruoj okazas kiam la WAL-segmento ne troveblas aŭ estas retaj problemoj, agordaj problemoj, malbona aparataro aŭ okupataj kapjesoj. Vi povas uzi la pg_stat_replication ilo por akiri vidon de la fluanta reprodukta stato. ClusterControl ankaŭ pruviĝis helpi kun datumbaza noda monitorado.
Malfunkcio dum aktualigo de la skemo
Ĝisdatigi skemon de PostgreSQL-datumbazo estas facila se vi povas eksterrete dum vi faras ĝin. Vi nur bezonas fermi la programon, krei skeman sekurkopion, plenumi la ĝisdatigajn operaciojn, revizii kaj testi vian laboron, kaj rekomenci vian programon, esperante, ke vi pravas.
Tamen aferoj ne estos tiel facilaj se la naturo de via kandidatiĝo postulas nula malfunkcio. Ĉi tio postulas kompleksan plurfazan proceduron, kiu povas impliki uzi malantaŭan kongruan aliron por ŝanĝi vian datumbazon. La celo de tio estas igi la datumbazon uzebla al via malnova kaj nova aplikaĵa versio.
Por migradoperacioj kiuj ne estas malantaŭen kongruaj, vi povas dividi ilin en pli malgrandajn paŝojn por krei datumbazon, kiun ambaŭ versioj de via aplikaĵo povas uzi. Ofte, tio postulas, ke la uzanto kreu novan tabelon aŭ vidon, aŭ kolumnon, kiun via nova aplika versio uzos.
Sekureco hardante
Unue, estu klare, ke la datumbazo PostgreSQL ofertas iujn el la plej bonaj datumsekureco funkcioj por via servilo kaj datumoj. La problemo aperas kiam estas tempo por identigi kaj disfaldi ilin.
Sekureca malmoliĝo en PostgreSQL povas esti dividita en tri kategoriojn: servila agordo, datuma ĉifrado kaj reto-agordo. Ĉiam estas konsilinde plenumi datuman ĉifradon dumfluge kaj ripoze. Por dumfluga datuma ĉifrado, klienta datumbaza aliro devas esti agordita por uzi SSL. La servilo ankaŭ devus postuli aŭ akcepti sekurajn konektojn.
Ĉe-ripoza ĉifrado povas esti farita ĉe multaj malsamaj fazoj de la stako; kie vi efektivigas ĝin, estos ĉefe determinita de infrastrukturaj kaj aplikaj postuloj. La pgcrypto-modulo estas uzata por ĉifrado kaj malĉifrado ĉe la datumbaza nivelo. La tekniko estas helpema kiel lasta rimedo kiam ne ekzistas alia realigebla ĉifrada metodo, kaj specifaj aroj de datumoj devas esti ĉifritaj.
istrantoj povas ĉiam ĉifri datumojn ĉe la nivelo de nubo aŭ dosiersistemo - aliro pli perfekta kaj malpli efika al rendimento.
La risko de datuma perdo
Kvankam ekzistas multaj manieroj por tranĉi la riskon de perdo de datumoj, vi neniam povas redukti tiun eblecon al nulo. Tiel, ĉiu datumbaza istranto devas havi fortikan rezervan strategion por certigi, ke aplikaĵoj refunkcias kaj funkcias kiel eble plej baldaŭ post a ciberatako, katastrofa evento aŭ problemo pri integreco de datumoj.
Datumaj sekurkopioj devas esti ĉe la centro de iu ajn datumbaza istrada strategio. Por uzantoj de PostgreSQL, ekzistas pluraj manieroj starigi rezervan strategion, depende de preferoj kaj aliaj funkciaj faktoroj. Ekzemple, la enkonstruita pg_dump-funkcio povas esti uzata por konstrui periodajn sekurkopiojn kun instalado de virtuala maŝino aŭ nuda metalo en la foresto de istrita servotavolo. La eligo pg_dump konsistas el teksta dosiero, kiun vi povas stoki en platformo ne ligita al la datumbazo kaj retrovi poste kiam la blatoj malŝaltas. La operacio pri reakira datumo kutime simple disponigas la dosieron al la programo PostgreSQL kiel enigaĵo.
Dum uzi pg_dump estas bonega por rezervitaj planoj de uzanto, nubaj servoj kiel Stratoscale SMD kaj AWS RDS provizas rezervan kaj katastrofan reakiron kiel enkonstruitajn funkciojn, do vi ne devas zorgi pri konstruado de rezerva strategio de nulo.
Finnoto
istrado de datumbazoj estas nur simpla se vi ĝustas la planan fazon kaj konas ĉiutagajn defiojn kaj realigeblajn mildigajn strategiojn. Espereble, la ĉi-supraj konsiletoj helpos vin prepariĝi por ŝanceliĝoj kaj reiri rapide kaj perfekte.