A year ago, at MariaDB’s annual user conference in New York City, MariaDB Server 10.3 release candidate was launched. The most significant features added to 10.3 were PL/SQL support and system-versioned tables. MariaDB Server 10.3 propelled MariaDB even further into more complex applications, and we’ve been working with our customers to help them get the most out of MariaDB and/or migrate from legacy databases to MariaDB.
This year, we’re continuing on that tradition and are now launching a feature-complete MariaDB Server 10.4 release at MariaDB OpenWorks 2019.
From discussions with and feedback from our customers over the past year, we’ve been witness to the powerful and intense use cases for MariaDB in terms of performance and have identified areas for growth and improvement. Failure is not an option, which has become the driving force behind 10.4. With 10.4, you can now do Instant Operations on live data, including drop columns, change the order of columns or increase the length of a VARCHAR column (even if it’s indexed). Suddenly, operations that used to take a long time are instant!
MariaDB has pluggable storage engines, and provides features such as the parser, optimizer, replication and user control. The storage engines decide how data is written and stored. The most commonly used is InnoDB. MyRocks popularity is also on the rise which was introduced as a mature engine in 10.3. Continuing with the theme of empowering storage engines, 10.4 can push down full queries to the storage engine level and let the storage engine deal with the query. The Spider engine will soon utilize these capabilities also.
In 10.4 we introduce a second SQL standard temporal feature, in addition to system-versioned tables or automatically versioned tables that were delivered in 10.3. With system-versioned tables every change to a row in a table caused the previous version of the row to be stored in history with a system timestamp. Now in 10.4’s Application Time-Versioned Tables, the application developers define the time periods. You define when and what data in the table is valid. For example, you can have a different set of rows for different times of the day. With both System and Application Time-Versioned Tables included in 10.4, MariaDB now supports bitemporal solutions.
High availability can be achieved in many ways, but to ensure that your data and every change applied exists in at least two places, you have to use a technology that guarantees it. This high availability strategy is typically called clustering, and MariaDB Server leverages Galera version 3. And for our 10.4 release, we’ve worked in close partnership with Codership, the creators of Galera, to bring the latest version, Galera 4, into MariaDB Cluster. MariaDB Cluster with Galera 4 introduces streaming replication that can handle transactions of any size, so your transactions no longer need to have a maximum size.
There are a couple of new features for the Optimizer in MariaDB, and optimizer defaults have now been fully updated with improvements that have been implemented over the past few years. Caution is always necessary when changing defaults since it will impact most users. Therefore, Optimizer Trace has been added to detail and show the steps of what the optimizer is actually doing. The Analyze Table feature is a lot faster in 10.4 because collecting column statistics and building histograms is now based on random row samples. 10.4 also supports pushdown optimization by pushing “light” conditions into materialized IN subqueries and HAVING clauses into WHERE clauses of queries with GROUP BY. Finally, in-memory primary key / rowid filters have also been introduced that can benefit join queries with narrow range conditions on joined tables.
As MariaDB Server is being deployed in more mission-critical environments than ever before, security continues to be a key capability. In 10.4, locking user accounts and setting up password expiration policies are now possible! 10.4 also has the capability to combine authentication methods. You can enable secure password-less authentication via local socket for a certain account while still being able to log in with a password, if needed. Our customers have also requested the ability to load SSL certificates dynamically, which we’ve made possible in 10.4.
Lastly, in response to user feedback, we’ve addressed and removed a limitation. MariaDB is now able to guarantee uniqueness of constraints over long columns or column combinations, even blobs.
Go grab MariaDB 10.4.3, give it a go and let us know what you think! Download MariaDB Server 10.4.3.