MariaDB Storage Engines
When any engine other than InnoDB is the right choice, and the operational cost of mixing engines in one server.
MariaDB ships several storage engines. In practice InnoDB is the answer for transactional data, and the others are narrow tools.
InnoDB
The default and correct choice for application data: row-level locking, MVCC, crash recovery and foreign keys. Everything in InnoDB Architecture applies.
Aria
MariaDB's crash-safe successor to MyISAM. It is used internally for temporary tables and system tables. It is not transactional, so it is not suitable for application data that must be consistent after a crash mid-write.
MyRocks
An LSM-tree engine built on RocksDB. Compared with InnoDB it typically writes less data per logical write and stores data more compactly, at the cost of read amplification and different tuning. It suits sustained write-heavy workloads where storage cost dominates. See RocksDB for the underlying behaviour.
ColumnStore
A columnar engine for analytics inside MariaDB. It removes the need for a separate analytical system in modest deployments, but its operational model, resource profile and query characteristics are quite different from InnoDB's. Evaluate it against a dedicated column store such as ClickHouse before adopting it for a large workload.
Spider
Shards tables across remote MariaDB servers, presenting them as one table. It moves the sharding problem into the database layer, but all the constraints in Sharding still apply — cross-shard joins, transactions and uniqueness remain hard.
Mixing engines
A transaction spanning an InnoDB table and a non-transactional table is not atomic: the InnoDB part rolls back, the other does not. Galera additionally replicates only InnoDB reliably. Keep application data on one transactional engine and treat exceptions as deliberate, documented decisions.