Для популярной СУБД с открытым кодом MySQL, ставшей стандартным элементом многих стеков веб-приложений, выпущен первый вариант Release Candidate версии 8.0.

В MySQL 8.0 появятся следующие возможности:

  • поддержка Unicode 9.0 без необходимости установки каких-либо дополнительных компонентов;
  • функции Windows и рекурсивный синтаксис SQL для тех запросов, для которых ранее это считалось невозможным или реализовывалось с большим трудом;
  • расширенная поддержка нативных данных JSON и функций хранения документов.

В версии 8.0 MySQL последовательная нумерация нарушена (предыдущая версия имела номер 5.5), поскольку от 6.0 решено было отказаться, а 7.0 была зарезервирована для кластерной версии MySQL.

Переход на кодировку Unicode по умолчанию — одно из наиболее серьезных изменений из числа запланированных. Проблемы с Unicode у MySQL наблюдаются уже давно, и разработка MySQL 8.0 призвана устранить как можно больше существующих нестыковок.

Кодировка latin1 больше не будет использоваться в MySQL по умолчанию, что должно избавить новых пользователей от унаследованных проблем. Рекомендованной кодировкой по умолчанию для MySQL 8.0 сегодня является utf8mb4, обещающая увеличить производительность по сравнению с устаревшим ныне набором символов utf8mb3 и обеспечить более гибкую сортировку и чувствительность к регистру.

Улучшенный вариант Unicode будет поддерживать не только западные наборы символов, но и все прочие, включая набирающий популярность набор emoji.

Оконные функции

Во многих других реализациях языка SQL поддерживаются оконные функции, позволяющие выполнять агрегированные вычисления над множеством строк, сохраняя при этом в результатах запроса доступ к каждой отдельно взятой строке. Конечно, в MySQL такую задачу можно решить и без поддержки оконных функций, но это будет медленно и неудобно. Разработчики добавили в MySQL 8.0 оконные функции, реализованные с помощью стандартной конструкции SQL OVER. Аналогичным образом эти функции представлены и в конкурирующих продуктах, в том числе в PostgreSQL.

Еще одним новшеством стали рекурсивные выражения, позволяющие выполнять рекурсивные операции как часть запроса, не прибегая к курсорам и другим способам, которые приводят к снижению производительности.

Улучшение работы с документами и JSON

Поддержка JSON появилась в версии MySQL 5.7, сделав MySQL конкурентоспособной в соперничестве с СУБД NoSQL, которые работали с JSON изначально. В MySQL 8.0 поддержка JSON была расширена: производительность выросла, появились функции, позволяющие извлекать из запроса JSON диапазоны (как это сделано в запросе типа top N), а также новые агрегированные функции, объединяющие в запросе структурированные данные MySQL и полуструктурированные JSON.

С поддержкой JSON связаны и новые возможности хранения документов. Операции чтения и записи в хранилище документов MySQL согласованы в рамках транзакции, что позволяет «откатить» операции и отменить изменения в данных JSON. Данные о местоположении, хранившиеся в открытом формате GeoJSON, можно индексировать, благодаря чему поиск осуществляется в том числе и по критерию близости расположения.