- PVSM.RU - https://www.pvsm.ru -

В июле 2017 GitLab предупредил, что прекратит поддержку MySQL [1]. Так вот, с выпуском 12.1 период подготовки к этому завершится, и больше мы MySQL поддерживать не будем [2]. Решение непростое, и мы хотели бы поделиться доводами.
Есть немало удачных внедрений MySQL, однако в нашем случае он не совсем подходил. По сравнению с PostgreSQL MySQL имеет ряд ограничений [3], что приводило к проблемам с postgresql при попытках приспособить MySQL. Вот небольшой список ограничений:
TEXT, если не задать параметр lengthДля обхода "больных" мест мы написали специфичный [8] код для MySQL [9], что по факту вылилось в поддержание еще одной подсистемы баз данных, а по факту — удвоенная сложность при слияниях кодовой базы [10]. Поддержка такого кода также приводила к накладным расходам, что в результате привело к замедлению скорости выпусков.
Отдельно стоит упомянуть нашу систему CI, которая прогоняла тесты дважды, таким образом прекратив поддержку MySQL мы сократим время тестирования и расходы на инфраструктуру. Расходы, надо сказать, значительные [11], не окупаются малым числом пользователей на MySQL.
Поддерживая обе серверные части (PostgreSQL и MySQL), мы не могли в полной мере воспользоваться ни одной из них. Там где хотелось бы использовать особенности производительности и надежности какой-либо из них, приходилось сводить все к наименьшему общему знаменателю. Пример (не единственный [12]): мы хотели использовать LATERAL JOIN PostgreSQL для оптимизации событий на панели управления, но у нас не получилось потому, что мы использовали MySQL [13].
Ориентируясь на данные Usage Ping [14], мы четко увидели, что подавляющее большинство клиентов уже перешли на PostgreSQL. Тренд достаточно устойчивый, к примеру в последнее время на 1200 установок с mysql было порядка 110000 установок на PostgerSQL.
Мы уверены, что наши пользователи, которые применяют MySQL, могут достаточно просто сменить базу данных переходя на PostgreSQL при обновлении до gitlab 12.1 и новее.
К слову, сами мы не работаем с MySQL, а это значит, что мы не сталкивались с проблемами ДО наших пользователей.
Если вы из числа таких пользователей, то для руководства по переходу с MySQL на PostgreSQL ознакомьтесь, пожалуйста, с документами по миграции [15].
Автор: nAbdullin
Источник [16]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mysql/323208
Ссылки в тексте:
[1] предупредил, что прекратит поддержку MySQL: https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests/1756
[2] больше мы MySQL поддерживать не будем: https://gitlab.com/gitlab-org/gitlab-ce/issues/52442
[3] MySQL имеет ряд ограничений: https://gitlab.com/gitlab-org/gitlab-ce/issues/51173#issues
[4] не получалось эффективно поддерживать вложенные группы: https://gitlab.com/gitlab-org/gitlab-ce/issues/30472#note_27747600
[5] не сохранить данные: https://gitlab.com/gitlab-org/gitlab-ce/issues/49583
[6] не добавит: https://gitlab.com/gitlab-org/gitlab-ce/issues/40168
[7] поддерживает частичные индексы: https://dba.stackexchange.com/questions/106589/to-have-postgresql-like-partial-index-in-mysql-5-5
[8] специфичный: https://gitlab.com/gitlab-org/gitlab-ee/blob/7ef7c604729c2627914bcc0ece3355786a9a3413/db/migrate/prometheus_metrics_limits_to_mysql.rb
[9] MySQL: https://gitlab.com/gitlab-org/gitlab-ee/blob/7ef7c604729c2627914bcc0ece3355786a9a3413/ee/db/migrate/20180831134049_allow_many_prometheus_alerts.rb#L30
[10] удвоенная сложность при слияниях кодовой базы: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16793
[11] значительные: https://about.gitlab.com/company/team/structure/working-groups/gitlab-com-cost/
[12] не единственный: https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/24987#note_186506464
[13] у нас не получилось потому, что мы использовали MySQL: https://gitlab.com/gitlab-org/gitlab-ce/issues/31806#note_32117488
[14] Usage Ping: https://docs.gitlab.com/ee/user/admin_area/settings/usage_statistics.html#usage-ping-core-only
[15] документами по миграции: https://docs.gitlab.com/ee/update/mysql_to_postgresql.html
[16] Источник: https://habr.com/ru/post/459182/?utm_source=habrahabr&utm_medium=rss&utm_campaign=459182
Нажмите здесь для печати.