If deploying an HTAP databases, allow MaxScale handle all aspects of row+columnar storage. Specifically, this assumes a new attribute in services to specify whether or not the workload is HTAP.
If the workload is HTAP, and a create table statement is received with the InnoDB engine, MaxScale should duplicate the statement and change the engine so there are two create table statements. One to create the InnoDB table, and one to create the ColumnStore table.
If MaxScale sees CREATE TABLE tbl_customers... engine=innodb
It should send this to the primary:
CREATE TABLE tbl_customers... engine=innodb
CREATE TABLE tbl_customers_hist... engine=columnstore
The goal is to abstract away the specific of using multiple storage engines in an HTAP configuration, both for developers (so they only ever need to know about tbl_customers) and for DBAs so they don't have to worry about creating the ColumnStore table.
When combined with
MXS-3287, HTAP should be completely transparent to applications and developers, and require little overhead from DBAs.
The "_hist" could be a parameter in MaxScale, allowing DBAs to use the convention of their choice.