MariaDB Platform X5 will be based on MariaDB Enterprise Server 10.5. This release includes Xpand, a fully distributed storage engine for scaling out, as well as many new features and improvements for DBAs and developers alike, including enhancements to temporal tables, additional JSON functions, a new performance schema, non-blocking schema changes with clustering and a Hashicorp Vault plugin for key management.
In this session, we’ll walk through all of the new features and enhancements available in MariaDB Enterprise Server 10.5. In addition, we will highlight those being backported to maintenance releases of MariaDB Enterprise Server 10.2, 10.3 and 10.4.
9. MariaDB Enterprise Server
9
● Yearly cadence for new versions
● Features:
○ Maintenance releases on predictable schedule
○ Focus on robustness, stability and predictability
○ Enterprise specific features
○ Joint efforts with key customers
11. Adaptability
● ColumnStore 1.5 as a Storage Engine
○ Columnar distributed storage
○ Improved compatibility features
○ Improved management
● Xpand, a new storage Engine
○ Built in HA
○ Read & write scaling
○ Automatic sharding & elasticity
● Binaries now using MariaDB as the name
12. Xpand Architecture
12
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB
Connector /
Application
Xpand node Xpand node Xpand node
Server nodeServer node Server node
A minimum of three Xpand
nodes is needed for HA
13. Xpand Architecture
13
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB
Connector /
Application
Xpand node Xpand node Xpand node
Server nodeServer node Server node
Each Xpand table will be divided
into slices that are split across
the Xpand nodes
14. Xpand Architecture
14
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB
Connector /
Application
Xpand node Xpand node Xpand node
Server nodeServer node Server node
Each Xpand table will be divided
into slices that are split across
the Xpand nodes
15. Xpand Architecture
15
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB
Connector /
Application
Xpand node Xpand node Xpand node
Server nodeServer node Server node
Each Xpand table will be divided
into slices that are split across
the Xpand nodes
16. Xpand Architecture
16
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB
Connector /
Application
Xpand node Xpand node Xpand node
Server nodeServer node Server node
Each Xpand table will be divided
into slices that are split across
the Xpand nodes
17. Xpand Architecture
17
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB
Connector /
Application
Xpand node Xpand node Xpand node
Server nodeServer node Server node
Each Xpand table will be divided
into slices that are split across
the Xpand nodes
The slices are then “replicated”
across the different nodes using
internal methods
18. Xpand Architecture
18
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB instance with
Xpand engine
MariaDB
Connector /
Application
Xpand node Xpand node Xpand node
Server nodeServer node Server node
19. Enhanced SQL
● INSERT and REPLACE support the extension RETURNING
○ Resultset of any expression based on the added value
○ Resultset Specified SELECT expression.
● EXCEPT ALL and INTERSECT ALL
○ Duplicates delivered with the result set.
● COMMENT for CREATE and ALTER DATABASE
● Aggregate functions JSON_ARRAYAGG and JSON_OBJECTAGG
● RENAME INDEX and ALTER TABLE … RENAME COLUMN
● CYCLE has been added to recursive Common Table Expressions (CTE)
● Full support of REFERENCES constraint in column definition
● ALTER … TABLE IF EXISTS / IF NOT EXISTS
20. The Data Type Plugin API
● New Plugin API to create custom data types via plugins
● New Data type as example implementation
○ INET/4, INET6
● More data types can be added later based on customer feedback
21. Enhancements to Temporal Tables
● WITHOUT OVERLAP for application-time period tables
● Configurable start date/time for interval partitioned history of system versioned
tables
○ PARTITION BY SYSTEM_TIME INTERVAL 1 YEAR STARTS '2018-10-01 00:00:00'
● Automatic creation of history partitions when partitions are defined
○ CREATE … WITH SYSTEM VERSIONING PARTITION BY SYSTEM_TIME
PARTITIONS 2;
22. Security
● New privileges as subset of the SUPER privilege
○ Currently the SUPER privilege is used in many cases were only a subset is needed
● The new privileges are:
○ BINLOG ADMIN (administration of the Binary Log)
○ CONNECTION ADMIN (administering connection resource limit options)
○ FEDERATED ADMIN (CREATE SERVER, ALTER SERVER, and DROP SERVER)
○ READ_ONLY ADMIN (set read_only system variable; allow user to perform writes)
○ REPLICATION MASTER ADMIN (statements like SHOW SLAVE HOSTS)
○ REPLICATION SLAVE ADMIN (administering Replica Servers)
○ SET USER (setting DEFINER when creating Triggers, Views, Functions)
● SUPER still acts as an alias for all of the above where needed
23. Security
● New system variable “require_secure_transport”
○ Server forces TLS encrypted connections from clients
● Via the performance schema threads table it can be determined which
connections are using SSL/TLS
○ Threads table includes column CONNECTION_TYPE
● Encryption Plugin for HashiCorp Vault
○ HashiCorp Vault used as KMS
○ Remote key store for MariaDB Enterprise Server Data-at-Rest
24. InnoDB Refactoring
The Storage Engine InnoDB has undergone a huge refactoring and cleanup.
● Optimized tablespace handling
● New InnoDB thread pool for background tasks
○ Online change of the number of innodb purge threads
● Redo log changed to a more efficient format
○ Online resizing of the redo log
● InnoDB internal foreign key parser removed
○ Preparation for foreign key handling by the server
● Deprecated InnoDB system and status variables removed
25. InnoDB Refactoring
● Cleanup of InnoDB Data Scrubbing code
○ Related status variables have been removed
● Several variables from SHOW ENGINE INNODB STATUS added to SHOW
GLOBAL STATUS
○ This simplifies monitoring of these parameters
26. Replication and Binary Log
● SQL statements for controlling the replication now allow the use of the term
REPLICA instead of SLAVE.
● Default mode for parallel replication changed from “conservative” to “optimistic”
○ The optimistic mode of in-order parallel replication is replaying transactions in
parallel,
○ Preserving exact transaction semantics
○ Replica applier handles conflicts
■ The latter transaction is rolled back and applied again, keeping the transaction order
● Replica aware server shutdown
○ Primary only shuts down when replication transactions have been processed
○ New system variable to control default behavior
27. System Information and Tracing
● Information schema
○ Includes internals from the generic thread pool
○ New column GLOBAL_VALUE_PATH in table SYSTEM_VARIABLES
■ Path to the file that the value of the variable was read from
● ANALYZE for statements shows the time spent for checking the WHERE
clause
● Performance Schema has been refactored
○ New tables for memory, stored routines, prepared statements, transactions,
connections, and more
28. MariaDB Cluster (Galera)
● Enforcement to allow DDL for engines supported by Galera
○ wsrep_strict_ddl=ON;
● Cluster now has full MariaDB GTID support
● Inconsistency voting protocol
○ An inconsistency occurrence can be solved by removing a node instead of shutting
down the whole cluster
● New Non-blocking DDL replication mode
○ Avoids full cluster lock and aborted transactions
● “Galera Black Box” for troubleshooting
● gcache size default configuration increased to 1 GB
29. S3 & Aria
● Increase Aria and S3 index length limit from 1000 to 2000 bytes
● Replication Support for S3 tables
○ Shared S3 storage
○ S3 storage per Node
● Improved partitioning support for S3 tables
29
30. Others
● Spider
○ ODBC data source support for Spider (gamma maturity)
● Information about pre-10.0 temporal data types
○ always displayed with a /* mariadb-5.3 */ comment in:
■ SHOW CREATE TABLE
■ DESCRIBE
■ INFORMATION_SCHEMA.COLUMNS.COLUMN_TYPE
32. MariaDB Enterprise Server Backports
MariaDB ES 10.4
32
● Encryption Plugin for
HashiCorp Vault
● Replication aware server
shutdown
● Increase Aria and S3 index
length limit from 1000 to
2000 bytes
● S3 replication and
partitioning enhancements
● Encryption Plugin for
HashiCorp Vault
● Replication aware server
shutdown
● Increase Aria and S3 index
length limit from 1000 to
2000 bytes
MariaDB ES 10.3
● Encryption Plugin for
HashiCorp Vault
MariaDB ES 10.2