PostgreSQL въведе също много други революционни функции във версии от 10 до 11, 12 и 13, които го правят истински конкурент на Oracle, като подобрения в разделянето, паралелни заявки и логическа репликация. В тази публикация в блога ще покажем някои от новите и забележителни функции на PostgreSQL, включени в по-новите версии на PostgreSQL.
Функции за разделяне
Декларативно разделяне
До PostgreSQL версия 9.4 нямаше действително разделяне в PostgreSQL. Това беше постигнато само чрез наследяване на таблици, което предлагаше много ограничена функционалност и ползи от производителността. Голяма част от функционалността се управлява ръчно чрез тригери или SQL команди. Например, трябваше да използваме тригери, за да насочим ред преди INSERT към правилния дял. Трябва да създадем индекси за всеки дял поотделно. PostgreSQL версия 10 роди декларативното разделяне, но все пак трябваше да създадем ограничения и индекси за всеки дял.
PostgreSQL 11 се предлага в комплект с много впечатляващ набор от нови функции за разделяне, които помагат както за подобряване на производителността, така и за да направят разделените таблици по-прозрачни за приложенията.
Логическа репликация на разделени таблици
С PostgreSQL 13 те въведоха поддръжка за логическо репликиране на разделени таблици. Преди това вие бяхте принудени да копирате дялове в стендбай поотделно. Сега обаче можете автоматично да репликирате всичките си дялове едновременно
Методи за разделяне
Понастоящем поддържаните методи за разделяне са диапазон, списък и хеш.
Клавиши и индекси
Пълна поддръжка за външни ключове в разделени таблици беше добавена в PostgreSQL 12. PostgreSQL също така може да се похвали с поддръжка за първични ключове, индекси и тригери в разделени таблици.
Дял по подразбиране
PostgreSQL позволява създаването на дял „по подразбиране“ за съхранение на данни, които не съвпадат с нито един от останалите дялове. Потребителите на Oracle ще харесат тази функция, тъй като не е налична в Oracle Database.
Движение на реда
Изразите UPDATE, които променят колона с ключ на дяла, сега карат засегнатите редове да бъдат преместени в съответните дялове.
Подрязване на дял
Подобрете производителността на SELECT чрез подобрени стратегии за елиминиране на дялове по време на планиране и изпълнение на заявки. Добавен е нов метод за извършване на елиминиране на дялове. Този нов алгоритъм е в състояние да определи съвпадащи дялове, като разгледа клаузата WHERE на заявката. Предишният алгоритъм провери всеки дял на свой ред, за да види дали може да съответства на клаузата WHERE на заявката. Това доведе до допълнително увеличаване на времето за планиране с нарастването на броя на дяловете.
Отрязване на дял по време на изпълнение на заявка
Що се отнася до подготвените оператори, параметрите на заявката не са известни преди изпълнението. Планирането на заявки не може да елиминира дялове по време на фазата на планиране, тъй като параметрите не са известни. И така, изпълнителят извършва съкращаване на дяла по време на изпълнение, за да получи достъп само до дяловете, които съвпадат с параметри.
Нови и развиващи се функции на PostgreSQL Enterprise с скорошни издания Щракнете за туитФункции за индексиране
Покриващ индекс
PostgreSQL вече ви позволява да добавяте неключови колони в индекса на btree. Тъй като заявките обикновено трябва да извличат повече колони, отколкото само тези, в които търсят, PostgreSQL ви позволява да създадете индекс, в който някои колони са просто „полезен товар“ и не са част от ключа за търсене. Помага само при сканиране само с индекс, за да се извлекат необходимите редове.
Преиндексиране едновременно
Стартиране на PostgreSQL 12, е възможно да се изгради повторно индекс с REINDEX ЕДНОЛЕТОВНО, без да се заключва таблицата за четене/записване, точно като командата REBUILD INDEX на Oracle.
Създаване на паралелен индекс
С паралелно създаване на индекс (въведено в PostgreSQL 11, в момента приложимо само за индекси на b-дърво), индексите могат да се създават по-бързо до стойността max_parallel_workers и настройката за поддръжка_work_mem, достатъчно голяма, за да побере няколко копия на данни. Паралелното създаване на индекс може значително да намали времето ви за създаване на индекс.
Отмяна на дублиране на данни в индексите на B-дърво
Понякога ще има дублиращи се записи в индекс. Това означава, че листов възел в индекс на B-дървото с поне два записа на индекса в същия индекс съдържа едни и същи данни за всички колони на индекса. С добавянето на дедупликация в PostgreSQL 13, можете да групирате тези дублиращи се записи на B-Tree индекс и да ги съберете в групов запис. Предимството на това е спестяване на място и намалено натоварване на диска и RAM, тъй като няма да се налага да дублирате данни в колоните. Дублиращи се записи също причиняват нежелано подуване на индекса.
Удостоверяване
SCRAM-SHA-256
В PostgreSQL 11 се появи поддръжка за удостоверяване на парола SCRAM-SHA-256. Този метод предотвратява подслушването на пароли при ненадеждни връзки и ви позволява да съхранявате паролите си в криптографски хеширан вид.
От всички поддържани в момента методи за удостоверяване с парола, този е най-сигурният.
GSSAPI
GSSAPI позволява защитено удостоверяване, както и автоматично еднократно влизане за системи, които го поддържат. Този метод за удостоверяване разчита на GSSAPI-съвместима библиотека за сигурност. Данните, изпратени през връзката към базата данни, ще бъдат некриптирани, освен ако не се използва SSL; обаче самото удостоверяване е сигурно. GSSAPI с удостоверяване на Kerberos е възможен с PostgreSQL според индустриалните стандарти. Когато се използва Kerberos, се използва стандартен принципал във формат „име на услуга/име на хост@реал“. Всеки принципал, включен в раздела с ключове, използван от сървъра, ще бъде приет от PostgreSQL сървъра.
LDAP
Действайки подобно на удостоверяването с парола, този метод за удостоверяване използва LDAP като метод за проверка. Използва се само за валидиране на двойки потребителско име и парола, следователно потребителят трябва да съществува вече в базата данни, за да работи удостоверяването. LDAP удостоверяването работи или в обикновен режим на свързване, или в това, което се нарича търсене+свързване. Търсене+свързване ви позволява да използвате други идентификатори в сравнение с обикновения режим на обвързване, който позволява да се използват само отличителното име, име на домейн или имейл.
Сертификат
Методът за удостоверяване на сертификата използва SSL сертификати за удостоверяване. Следователно, той е достъпен само за SSL връзки. При удостоверяване на сертификат не се изисква парола. Клиентът просто трябва да предостави валиден и доверен сертификат, за да може да се удостовери. Общото име на сертификата ще бъде съпоставено с потребителското име на базата данни и ако бъде намерено съвпадение, клиентът ще влезе в системата.
Други забележителни функции
Паралелен вакуум
С пускането на PostgreSQL 13 бяха внедрени подобрения на командата VACUUM. Въпросното подобрение е добавената опция за параметър PARALLEL. С PARALLEL можете да извършвате фази на вакуумиране на индекс и почистване на индекса на VACUUM. Това ви позволява паралелно да вакуумирате множество индекси, съответстващи на една таблица.
Паралелна заявка
Повечето заявки за отчети, които обикновено сканират много данни, страдат от влошаване на производителността поради необходимост от сканиране или обобщаване на данни от много редове дори при сканиране на индекс. Тези заявки могат да използват само един процесор до 9.4 и да се изпълняват последователно.
С паралелна заявка (която предлага паралелно последователно сканиране, обединяване при сливане, хеш присъединяване, агрегатиране и други функции на план за паралелни заявки) тези заявки могат да се възползват от множество работници и производителността може подобрение от 2x до 10x според документацията.
Разгледайте тази публикация, за да научите кога да използвате паралелни заявки.
Собствена логическа репликация
PostgreSQL въведе собствена логическа репликация във версия 10, за да предостави по-гъвкава опция за репликация, за разлика от стрийминг репликацията и повече като Oracle Streams, за репликиране на конкретни таблици, колони или редове. Това може да се използва за разделяне между множество бази данни или консолидиране от множество бази данни. И също така може да репликира между различни основни версии на PostgreSQL.
Съхранени процедури с вградени транзакции
Още едно допълнение, което прави PostgreSQL съвместим за миграции от база данни на Oracle.
Нямаме контрол върху транзакциите вътре в програмата pgsql (DO блок или функция) във версия 9.4 и трябва да използваме заобикалящо решение като dblink, за да стартираме и извършваме/връщаме транзакции .
Със запомнени процедури, които се появиха премиерно във версия 11, вече можем да внедрим контрол на транзакциите във всяка pgsql структура като while цикъл, цикъл for или оператор if else. Въпреки че съхранените процедури са подобни на функциите, те трябва да бъдат извикани чрез команда CALL и могат да работят като независими програми.
Генерирани колони
Подобно на базата данни на Oracle, генерираните колони в PostgreSQL могат да съхраняват данните, автоматично изчислени от други колони в реда. Това ускорява заявките, като не се налага да се изчислява стойността по време на изпълнение на заявката и вместо това генерираната стойност на колона се изчислява при INSERT или UPDATE към реда.
JIT компилация
Всички PostgreSQL 11, 12 и 13 поддържат компилация Just-in-Time (JIT), която беше добавена през 2018 г. JIT компилацията е процесът на превръщане на интерпретирана програма за оценка в родна програма. С JIT компилацията този процес може да се извърши по време на изпълнение. Предимство на JIT е възможността за генериране на специфични за изрази функции, които процесорът може да изпълнява естествено. От своя страна процесът ви ускорява.
Контролни суми за страници
Контролните суми на страниците са функция, която ви помага да проверите целостта на данните, съхранявани на диска. Преди можехте да активирате контролните суми на страниците само по време на инициализацията на PostgreSQL клъстер. PostgreSQL 12 въведе възможността за активиране или деактивиране на контролни суми на страници в офлайн клъстер чрез командата pg_checksums.
Резюме
Както можете да видите от тази статия, PostgreSQL е непрекъснато развиваща се система от бази данни, която носи много мощни функции на масата. Всяка нова версия добавя нови вълнуващи функции, които я правят истински конкурент на други бази данни като Oracle. Неговите функции за разделяне и индексиране получават много нови актуализации, които добавят към неговата вече обширна кутия с инструменти.
Ако търсите управлявано решение за вашата PostgreSQL база данни, не се колебайте да разгледате нашата услуга ScaleGrid за PostgreSQL. Предоставяме безплатна 30-дневна пробна версия, която ви позволява да използвате всички наши функции за управление без ограничения. Ценообразуването започва от само $10/месец и ви дава достъп до напълно управлявано PostgreSQL хостинг решение от корпоративен клас с поддръжка 24/7.