После полутора лет разработки увидел свет первый стабильный выпуск новой ветки СУБД MariaDB 10.0, в рамках которой развивается ответвление от MySQL, сохраняющее обратную совместимость и отличающееся интеграцией дополнительных движков хранения и расширенных возможностей. Развитие MariaDB курирует независимая организация MariaDB Foundation в соответствии с полностью открытым и прозрачным процессом разработки, не зависящим от отдельных вендоров. MariaDB уже поставляется вместо MySQL в таких дистрибутивах, как RHEL 7, Fedora, openSUSE, Slackware и Arch Linux. Состоятельность проекта и способность обеспечить соответствующую корпоративным стандартам техническую поддержку подтверждены миграцией на MariaDB таких крупных проектов, как Wikipedia (http://www.opennet.dev/opennews/art.shtml?num=36759), Google Cloud SQL (http://www.opennet.dev/opennews/art.shtml?num=37905) и Nimbuzz (http://www.opennet.dev/opennews/art.shtml?num=36506).
Выпуск MariaDB 10.0 продолжает развитие кодовой базы MariaDB 5.5 (http://www.opennet.dev/opennews/art.shtml?num=33589) и содержит ряд возможностей, бэкпортированных из ветки MySQL 5.6 (http://www.opennet.dev/opennews/art.shtml?num=36031). Прошлые ветки MariaDB нумеровались синхронно с ветками MySQL, на которых они были основаны, но начиная с представленного выпуска MariaDB уже не является просто набором патчей, применённых поверх MySQL, а содержит достаточно большой набор дополнительных функций и возможностей, реализованных иначе, чем в MySQL (например, пул тредов, поддержка микросекунд и аннотированные запросы). Изменился также и метод синхронизации с кодовой базой MySQL, отныне первичным в разработке является код MariaDB, в который бэкпортируются новшества MySQL. В связи с этим, чтобы более явно обозначить независимость разработки от MySQL было решено присвоить очередному релизу MariaDB номер 10.
Ключевые улучшения MariaDB 10.0:
- Новое хранилище Connect (https://kb.askmonty.org/en/connect/), позволяющее организовать доступ к произвольным локальным или удалённым данным, в виде, как если бы они были сохранены в таблице. Например можно ассоциировать содержимое виртуальной таблицы с данными из файла в определённом формате;
- Новое хранилище Cassandra Storage Engine (https://kb.askmonty.org/en/cassandra-storage-engine/) (SE), добавляющее в MariaDB и MySQL поддержку средств для доступа к данным, хранимым в распределённой БД Apache Cassandra (http://www.opennet.dev/opennews/art.shtml?num=33676). Используя Cassandra SE разработчики получают возможность обращаться к данным и добавлять данные в БД Cassandra при помощи обычных SQL-запросов. При этом используемая в Cassandra модель хранения данных в виде семейства столбцов (ColumnFamily) отображается в форме свойственных для MariaDB/MySQL таблиц, для которых можно применять стандартные SQL-директивы SELECT, INSERT, DELETE и UPDATE, а также выполнять операции объединения (JOIN) с другими таблицами.
- Интеграция хранилища SPIDER с реализацией системы шардинга, позволяющей разносить большие таблицы на несколько серверов. С точки зрения формирования запросов такие таблицы не отличаются от обычных локальных таблиц, но фактически при использовании SPIDER разные порции данных, составляющих одну таблицу, хранятся на разных серверах. Для обеспечения высокой доступности таблиц, распределённых по серверам при помощи SPIDER, могут применяться новые средства репликации.
- Улучшенная реализация динамических столбцов (https://kb.askmonty.org/en/dynamic-columns/), позволяющих получить различный набор "виртуальных столбцов" для каждой строки в таблице. Добавлена поддержка запросов в формате JSON и возможность интеграции с БД Cassandra;
- Многочисленные оптимизации производительности, позволяющие в MariaDB 10 добиться многократного ускорения некоторых операций по сравнению с MySQL и прошлыми ветками MariaDB. Среди ключевых оптимизаций отмечается поддержка параллельной репликации и развитие системы групповых коммитов.
- Улучшены средства репликации. Обеспечена защита работы реплицируемых slave-серверов от проблем в случае краха. Добавлена поддержка репликации данных от нескольких master-серверов, что может применяется для агрегирования данных из нескольких источников, например, для анализа обобщённого представления данных.
- Поддержка (https://mariadb.atlassian.net/browse/MDEV-26) глобальных идентификаторов транзакций;
- Возможность использования проверки IF (NOT) EXIST для выражений ALTER TABLE;
- Дополнительные оптимизации выполнения вложенных запросов, например преобразование выражений "NOT EXISTS" в блоки "IN";
- Хранилище Sequence (https://kb.askmonty.org/en/sequence/) для формирования виртуальных таблиц, заполненных возрастающими или убывающими последовательностями (например, seq_1_to_5 или seq_5_to_1_step_2).
- Улучшенный вывод сообщений об ошибках. Все числовые номера ошибок теперь сопровождаются пояснительными текстами.
- Поддержка выражения "SHOW EXPLAIN FOR thread_id (https://kb.askmonty.org/en/show-explain/)" для анализа запроса, выполняемого в заданной нити. Так как "SHOW EXPLAIN" учитывает план выполнения оптимизатором реального запроса, он позволяет получить более близкие к реальности показатели, чем выполнение запроса внутри "EXPLAIN";
- Поддержка multi-source репликации (https://kb.askmonty.org/en/multi-source-replication/), позволяющей одному серверу реплицировать изменения от нескольких master-серверов. Из примеров использования multi-source репликации упоминается решение задачи сбора в одном месте данных, разнесённых на разные машины, с целью выполнения аналитических запросов или для создания резервной копии;
- В InnoDB добавлены дополнительные оптимизации, позволяющие зметно ускорить выполнения транзакций, не выполняющих операции записи и изменения данных. Для выполнения транзакций в режиме чтения добавлена новая команда "TRANSACTION READ ONLY";
- Оптимизировано выполнение конструкции "LIMIT ... ORDER BY";
- Из MySQL 5.6.5 перенесён обновлённый вариант хранилища InnoDB;
- Из MySQL 5.6.5 портирована поддержка движка PERFORMANCE_SCHEMA (http://dev.mysql.com/doc/refman/5.6/en/performance-schema.html) и связанной с ним базы performance_schema, предоставляющей низкоуровневые средства для мониторинга за выполнением запросов и различными событиями при работе СУБД;
- Из пока не до конца реализованных возможностей, но гарантированно попадающих в финальный релиз, отмечаются: поддержка автоматического обновления времени (timestamp) в DATETIME; хранимые в памяти таблицы с эффективной поддержкой типов VARCHAR и BLOB; новое хранилище Cassandra (http://www.opennet.dev/opennews/art.shtml?num=34980); выполнение "ALTER TABLE" на лету.
- Универсальная система накопления статистики (https://kb.askmonty.org/en/engine-independent-table-statistics/) об активности и наполнении таблиц для использования оптимизатором запросов, реализованная без привязки к конкретным движкам хранения;
- Поддержка (https://mariadb.atlassian.net/browse/MDEV-4011) анализа потребления памяти в привязке к отдельной нити;
- Значительное ускорение работы конструкций ALTER TABLE для хранилищ Aria и MyISAM при наличии проверки уникальных ключей;
- Переработанная поддержка автоматического назначения и обновления времени для timestamp и datetime.
Ранее реализованные улучшения (http://kb.askmonty.org/v/mariadb-versus-mysql), отличающие MariaDB от MySQL:
- Дополнительные движки хранилищ:
- Aria (http://www.opennet.dev/opennews/art.shtml?num=13934) (ранее Maria) - основанное на MyISAM высоконадежное хранилище, отличающееся повышенной устойчивостью и сохранению целостности данных после краха, при полной совместимости с MyISAM. Благодаря ведению лога операций, в случае краха производится откат результатов выполнения текущей операции. Также поддерживается возможность восстановления состояния из любой точки в логе операций (включая поддержку CREATE/DROP/RENAME/TRUNCATE).
...
URL: https://blog.mariadb.org/the-mariadb-foundation-announces-ge.../
Новость: http://www.opennet.dev/opennews/art.shtml?num=39444