Êîìïàíèÿ Postgres Professional âûïóñòèëà íîâîå ïîêîëåíèå ÑÓÁÄ Postgres Pro Enterprise 18, îáúåäèíèâøåå âîçìîæíîñòè íîâåéøåãî ÿäðà PostgreSQL 18 è ñîáñòâåííûå ðàçðàáîòêè äëÿ ýêñïëóàòàöèè â êðóïíûõ êîðïîðàòèâíûõ è ãîñóäàðñòâåííûõ ÈÒ-ñèñòåìàõ. Íîâûé ðåëèç ïîâûøàåò ïðîèçâîäèòåëüíîñòü, ìàñøòàáèðóåìîñòü è îòêàçîóñòîé÷èâîñòü ïðè ðàáîòå ñ âûñîêèìè íàãðóçêàìè è áîëüøèìè îáúåìàìè äàííûõ. Ïåðåõîä íà ÿäðî PostgreSQL 18 îáåñïå÷èâàåò ïîëüçîâàòåëÿì ïðèðîñò ïðîèçâîäèòåëüíîñòè è áîëåå óäîáíóþ ýêñïëóàòàöèþ.  Postgres Pro Enterprise 18 äîñòóïíû âñå êëþ÷åâûå íîâîââåäåíèÿ âàíèëüíîé âåðñèè PostgreSQL 18. Îá ýòîì CNews ñîîáùèëè ïðåäñòàâèòåëè Postgres Professional.
«Postgres Pro Enterprise 18 — ýòî ðåçóëüòàò ñèñòåìíîé ðàáîòû ñ ðåàëüíûìè òðåáîâàíèÿìè çàêàç÷èêîâ. Ìû ïîñòîÿííî àíàëèçèðóåì, êàêèå çàäà÷è ñåãîäíÿ íàèáîëåå êðèòè÷íû äëÿ êðóïíûõ èíôîðìàöèîííûõ ñèñòåì: ïðîèçâîäèòåëüíîñòü ïîä âûñîêîé íàãðóçêîé, ïðåäñêàçóåìîå ìàñøòàáèðîâàíèå, îòêàçîóñòîé÷èâîñòü è áåçîïàñíîñòü ýêñïëóàòàöèè. Òîëüêî çà ïîñëåäíèé ãîä íàøà êîìàíäà ó÷àñòâîâàëà â ñîòíÿõ êðóïíåéøèõ ïðîåêòîâ â ôåäåðàëüíûõ âåäîìñòâàõ, ôèíàíñîâîì ñåêòîðå, ïðîìûøëåííîñòè è èíôðàñòðóêòóðíûõ êîìïàíèÿõ. Ýòîò ïðàêòè÷åñêèé îïûò íàïðÿìóþ ïîâëèÿë íà ïðèîðèòåòû ðåëèçà», – ñêàçàë ãåíåðàëüíûé äèðåêòîð Postgres Professional Èâàí Ïàí÷åíêî.
Ìàñøòàáèðóåìîñòü è îòêàçîóñòîé÷èâîñòü (BiHA)
Êëàñòåðíîå ðåøåíèå BiHA ïîëó÷èëî âàæíûå îáíîâëåíèÿ äëÿ Enterprise-ýêñïëóàòàöèè è ãåîðàñïðåäåëåííûõ ñèñòåì. Ðàñøèðåíû âîçìîæíîñòè äëÿ óïðàâëåíèÿ êëàñòåðîì, äîáàâëåí ñåðâèñíûé ðåæèì äëÿ âûïîëíåíèÿ òåõíè÷åñêèõ ðàáîò íà ñåðâåðàõ, watchdog, óëó÷øåíû ôóíêöèè óòèëèòû bihactl.
Êàñêàäíàÿ ðåïëèêàöèÿ ðåøàåò ïðîáëåìó èçáûòî÷íîé íàãðóçêè íà ñåòü è îñíîâíîé ñåðâåð â êëàñòåðàõ ñ áîëüøèì êîëè÷åñòâîì óçëîâ è ðàñïðåäåëåíèåì ïî íåñêîëüêèì ÖÎÄàì. Ðåïëèêè ìîãóò ïîëó÷àòü äàííûå òðàíçèòîì ÷åðåç äðóãèå óçëû, ÷òî ñíèæàåò ìåæöåíòðîâûé òðàôèê è îñâîáîæäàåò ðåñóðñû ëèäåðà. Ìåõàíèçì ïîëíîñòüþ àâòîìàòèçèðîâàí è ïîääåðæèâàåò ïåðåñòðîåíèå öåïî÷êè ðåïëèêàöèè ïðè ñáîÿõ.
Òàêæå ðåàëèçîâàíà ïðîöåäóðà ìàæîðíîãî îáíîâëåíèÿ êëàñòåðà BiHA ñ âåðñèè 17 íà 18 ñ ìèíèìàëüíûì ïðîñòîåì, ãàðàíòèåé îòñóòñòâèÿ ïîòåðè äàííûõ è âîçìîæíîñòüþ îòêàòà íà ïðåäûäóùóþ âåðñèþ.
Load Balancer: áàëàíñèðîâêà íàãðóçêè
 ðàñøèðåíèè proxima ïîÿâèëñÿ âñòðîåííûé áàëàíñèðîâùèê íàãðóçêè, óïðîùàþùèé ìàðøðóòèçàöèþ çàïðîñîâ. ÑÓÁÄ ïðåäîñòàâëÿåò ñïåöèàëèçèðîâàííûå ïîðòû P2L (Proxy-to-Leader) — äëÿ ïèøóùåé íàãðóçêè (RW) è P2F (Proxy-to-Follower) — äëÿ ðàñïðåäåëåíèÿ ÷èòàþùåé íàãðóçêè (RO) ìåæäó ðåïëèêàìè.
×èòàþùàÿ íàãðóçêà ìîæåò ðàñïðåäåëÿòüñÿ ìåæäó ðåïëèêàìè ïî ðàçíûì àëãîðèòìàì â çàâèñèìîñòè îò òðåáîâàíèé êëèåíòà — round-robin: íàãðóçêà ðàñïðåäåëÿåòñÿ ìåæäó ðåïëèêàìè ïî î÷åðåäè; weighted-round-robin: íàãðóçêà ðàñïðåäåëÿåòñÿ ìåæäó ðåïëèêàìè ïî î÷åðåäè ïðîïîðöèîíàëüíî èõ íàñòðîåííûì âåñàì; least-connections: íàãðóçêà ðàñïðåäåëÿåòñÿ íà ðåïëèêó ñ ñàìûì íèçêèì ÷èñëîì àêòèâíûõ ïîäêëþ÷åíèé; random: íàãðóçêà ðàñïðåäåëÿåòñÿ ìåæäó ðåïëèêàìè â ñëó÷àéíîì ïîðÿäêå. Ýòî ïîçâîëÿåò ðàçãðóçèòü äðàéâåðà è ïðèëîæåíèÿ, ñíÿâ ñ íèõ ëîãèêó áàëàíñèðîâêè.
KVik — óñêîðåíèå äîñòóïà ê äàííûì è ñíèæåíèå íàãðóçêè íà ÑÓÁÄ
Äëÿ ñèñòåì ñ âûñîêîé äîëåé îïåðàöèé ÷òåíèÿ â ðàñøèðåíèå proxima äîáàâëåíà ýêñïåðèìåíòàëüíàÿ âåðñèÿ ìîäóëÿ KVik, ðåàëèçóþùàÿ êåøèðîâàíèå äàííûõ ÑÓÁÄ â îïåðàòèâíîé ïàìÿòè ñ äîñòóïîì ÷åðåç RESP-ïðîòîêîë. Ïî ñóòè, KVik ïîçâîëÿåò õðàíèòü íàèáîëåå âîñòðåáîâàííûå äàííûå ìàêñèìàëüíî áëèçêî ê ïðèëîæåíèþ è ïîëó÷àòü èõ áåç îáðàùåíèÿ ê äèñêîâîé ïîäñèñòåìå.
Äëÿ ïîëüçîâàòåëåé ýòî îçíà÷àåò áîëåå áûñòðûé îòêëèê ñåðâèñîâ, ñòàáèëüíóþ ðàáîòó ïîä ïèêîâûìè íàãðóçêàìè è ñíèæåíèå íàãðóçêè íà îñíîâíóþ ÑÓÁÄ. Îñîáåííî çàìåòåí ýôôåêò â ñöåíàðèÿõ ñ áîëüøèì êîëè÷åñòâîì ïîâòîðÿþùèõñÿ çàïðîñîâ — íàïðèìåð, â âåá-ïðèëîæåíèÿõ, âèòðèíàõ äàííûõ è ñåðâèñàõ ñ èíòåíñèâíûì ÷òåíèåì.
Óëó÷øåííàÿ àäàïòèâíàÿ îïòèìèçàöèÿ çàïðîñîâ (AQO 4.0)
Ìîäóëü AQO (Adaptive Query Optimizer) 4.0 èñïîëüçóåò ìàøèííîå îáó÷åíèå äëÿ àâòîìàòè÷åñêîãî èñïðàâëåíèÿ îøèáîê â ïëàíàõ âûïîëíåíèÿ çàïðîñîâ, âîçíèêàþùèõ â ñòàíäàðòíîì ïëàíèðîâùèêå PostgreSQL.
Êëþ÷åâîå îòëè÷èå âåðñèè 4.0 — óñòðàíåíèå íàêëàäíûõ ðàñõîäîâ íà ýòàïå ïëàíèðîâàíèÿ, êîòîðûå ðàíåå îãðàíè÷èâàëè ïðèìåíåíèå ìîäóëÿ. Áëàãîäàðÿ ýòîìó AQO òåïåðü ðåêîìåíäîâàí äëÿ ëþáûõ òèïîâ ðàáî÷èõ íàãðóçîê, à íå òîëüêî äëÿ îòäåëüíûõ ñöåíàðèåâ. Äîïîëíèòåëüíî â âåðñèè 4.0: ïîëüçîâàòåëè îòìå÷àþò ñíèæåíèå íàãðóçêè íà äèñêîâóþ ïîäñèñòåìó íà äåñÿòêè ïðîöåíòîâ çà ñ÷¸ò ïîñòðîåíèÿ áîëåå ýôôåêòèâíûõ ïëàíîâ çàïðîñîâ.
Îïòèìèçàöèÿ çàïèñè è ðàáîòû ñ áîëüøèìè äàííûìè
Äëÿ ñöåíàðèåâ ETL è ìàññîâîé çàãðóçêè äàííûõ â Postgres Pro Enterprise 18 ðåàëèçîâàíû íîâûå èíñòðóìåíòû, â òîì ÷èñëå: Append Optimized Table — òàáëè÷íàÿ îïöèÿ append_optimized = true, ïðè êîòîðîé äàííûå áóôåðèçèðóþòñÿ ïàêåòàìè, ÷òî ñíèæàåò êîëè÷åñòâî îïåðàöèé çàïèñè â WAL è ïîèñêîâ ñâîáîäíûõ áóôåðîâ; îòëîæåííîå ñæàòèå (CFS) — âîçìîæíîñòü âûïîëíÿòü âñòàâêó äàííûõ áåç êîìïðåññèè ñ ïîñëåäóþùèì ôîíîâûì ñæàòèåì, ÷òî ñóùåñòâåííî óñêîðÿåò çàãðóçêó äàííûõ â îãðàíè÷åííûå âðåìåííûå îêíà.
Ñåêöèîíèðîâàíèå ïî ññûëêå (Reference Partitioning)
Ðåàëèçîâàíî àâòîìàòè÷åñêîå ñîçäàíèå ñåêöèé â äî÷åðíèõ òàáëèöàõ íà îñíîâå âíåøíåãî êëþ÷à ê ðîäèòåëüñêîé òàáëèöå. Ïðè ñîçäàíèè íîâîé ïàðòèöèè â îñíîâíîé òàáëèöå ñîîòâåòñòâóþùàÿ ïàðòèöèÿ â ñâÿçàííîé òàáëèöå ïîÿâëÿåòñÿ àâòîìàòè÷åñêè, ÷òî óïðîùàåò óïðàâëåíèå ñëîæíûìè èåðàðõèÿìè äàííûõ.
Êåøèðîâàíèå ðåçóëüòàòîâ çàïðîñîâ
Äëÿ ñöåíàðèåâ ñ òÿæåëûìè ïîâòîðÿþùèìèñÿ âûáîðêàìè â ìîäóëü pgpro_result_cache äîáàâëåíû àâòîìàòè÷åñêàÿ èíâàëèäàöèÿ ïî èçìåíåíèþ äàííûõ è ïîääåðæêà îòñòóïîâ è ëèìèòîâ. Äîñòàòî÷íî óêàçàòü õèíò result_cache â SQL-çàïðîñå, è ðåçóëüòàò áóäåò ñîõðàíåí â ïàìÿòè äëÿ ñëåäóþùèõ âûïîëíåíèé.


