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, което засяга работата и производителността ми.
Няма коментари:
Публикуване на коментар