Моят личен и професионален живот

2018-05-28

MariaDB 10.3 добавя още повече възможности за разработка от MySQL 8.0

Миналия петък (25-ти Май) MariaDB 10.3.7 беше пусната като стабилна (General Availability). Най-накрая успях да проверя бележките към версията и (не неочаквано) открих някои възможности, които все още ни липсват в MySQL (дори и в пуснатата преди малко повече от месец 8.0.11 GA за която писах). Искам да подчертая следващите забележителни промени свързани с разработка (от което се интересувам най-много):
  • System-versioned tables (също познато като AS OF);
  • Aggregate stored functions (CREATE AGGREGATE FUNCTION и FETCH GROUP NEXT ROW в цикли);
  • FOR loop (FOR ... DO ... END FOR израз и FOR ... LOOP ... END LOOP израз в sql_mode=ORACLE, виж MDEV-10581 и MDEV-12098);
  • Sequences (като алтернатива на AUTO INCREMENT за "повече контрол на това как се създават числата за идентификатори");
  • INTERSECT и EXCEPT операции за множества;
  • ROW тип данни (за променливи представляващи група от полета - т.е. редове или записи - в съхранени програми);
  • TYPE OF и ROW TYPE OF обвързани типове данни (за променливи представляващи колони или редове в съхранени програми);
  • DELETE и UPDATE изрази базирани на подзаявки по същата таблица;
  • Stored packages (с подобни на Oracle CREATE PACKAGE и CREATE PACKAGE BODY изрази в sql_mode=ORACLE).
Уау. Работили са здраво, това е сигурно. Ще трябва тепърва да пробвам всички тези нови възможности собственоръчно, но съм доста развълнуван да ги видя достъпни в "един от най-популярните сървъри за бази данни". За съжаление, нито една от тези не е достъпна в MySQL. Отдолу е моя списък на това което все още липсва в MySQL (и MariaDB):
Функционалност MariaDB MySQL Стандарт
SQL Модифициране на данни в таблица базирано на подзаявка по същата таблица 10.3.2 (2017-11-09) n/a
EXCEPT или MINUS и INTERSECT оператори за множества 10.3.0 (2017-04-16) n/a SQL:2003
Времеви заявки (AS OF) 10.3.4 (2018-01-18) n/a SQL:2011
DDL CHECK ограничения 10.2.1 (2016-07-04) n/a SQL:1999
Подялба на таблици с външни ключове n/a n/a
Времеви таблици (WITH SYSTEM VERSIONING) 10.3.4 (2018-01-18) n/a SQL:2011
CREATE OR REPLACE за таблици, тригери и съхранени програми 10.0.8 (2014-02-10), 10.1.4 (2015-04-13) и 10.1.3 (2015-03-02) n/a
Разрешаване/забраняване за тригери n/a n/a
Последователности 10.3.0 (2017-04-16) n/a SQL:2003
Работещо преименуване на схеми (RENAME {DATABASE | SCHEMA} израз) n/a n/a
Изгледи Съхраняване на точния израз на изгледа на сървъра n/a n/a n/a
Напълно обновими изгледи с INSTEAD OF тригери n/a n/a SQL:2008
Материализирани изгледи n/a n/a
Съхранени програми Аргументи с подразбираща се стойност n/a n/a
FOR цикъл 10.3.3 (2017-12-23) n/a
Анонимни блокове код (или съставни изрази извън програми) 10.1.1 (2014-10-17) n/a
Записи, типове данни свързани с колона или ред 10.3.0 (2017-04-16) n/a
Съхранени модули или пакети 10.3.5 (2018-02-26) n/a
Тригери на ниво израз или схема n/a n/a
Съоръжения за дебъгване n/a n/a n/a
Външни програми на JavaScript, Perl, PHP, и т.н. n/a n/a

Съвсем ясно е от горната таблица, че MySQL има повече сиви петна от MariaDB. Добавил съм също и съответния SQL стандарт където е приложимо, така че в тази връзка MariaDB има по-широка поддръжка на стандарта. Изглежда ми, че в последната стабилна версия на MariaDB са реализирани повече "подобни на Oracle" възможности, отколкото в MySQL който се разработва от Oracle.
Така че, заслужава ли си да се сменя базата? Вярвам, че ще продължа да ползвам както MySQL така и MariaDB (която е база по подразбиране във всички Linux дистрибуции) и причината за това е, че двете бази стават все по-различни с времето. Има възможности за разработка в MySQL (напр. JSON типа данни, Склада за документи), които не съществуват в MariaDB и обратното. Все още съм доста свикнал с ползването на MySQL Workbench за ежедневна работа с MySQL бази данни, но поддръжката за MariaDB в него чезне и освен ако MySQL не добави същите възможности, се съмнявам, че новите функционалности за разработка ще бъдат използваеми в Workbench, което засяга работата и производителността ми.

Няма коментари: