Add capabilities to distinguish between ACID compliant and non-compliant databases/benchmarks
Since I am currently working on improving/adding MySQL and MariaDB benchmarks to TFB, @roji and I came across capabilities differences and usage scenarios of database systems, which may give the wrong impression on a quick glance.
The main issue seems to be connected to ACID compliance, which (especially due to the durability part) usually leads to significantly worse performance of database systems that do comply, in contrast to database systems that don't.
For example, MySQL and MariaDB are really just hosts of different storage engines. Until MySQL 5.5, MyISAM was the default engine for MySQL, before it was decided to make InnoDB the default. However, multiple engines coexist in MySQL/MariaDB to this day and are being actively maintained and improved.
Those storage engines are used for different scenarios:
- InnoDB is an ACID compliant storage engine. It is either used because of that, or because of its referential integrity support.
- MyISAM is optimized for applications, that mainly do read/SELECT operations, and only occasional write operations. It is not ACID compliant. In practice, it is a good match for most websites, that mainly read from the database.
- There are others...
They are basically different database systems that use a very similar syntax.
What TFB currently understands as "MySQL", is actually InnoDB. Since using MyISAM is common for MySQL/MariaDB users, I have planned to add benchmarks for it to TFB as well.
To not give users a false impression of a benchmark, they should be able to distinguish between ACID compliance and non-compliance.
I propose to mark all databases as ACID compliant by default and let databases and benchmarks override this flag, so that existing databases and benchmarks would not need to change (assuming they are all compliant). (Personally, I don't care much about it, because whoever is interested in a particular database system, should inquire information about its capabilities.)
I would be fine with just adding the MySQL/MariaDB storage engine to the benchmark name (or only where it diverges from the default storage engine), but it might be easier to just add them as different databases to TFB (e.g. "MySQL" would become "MySQL-InnoDB").
MariaDb and Mysql have different performance too. Perhaps will be good to add both to the toolset, and that the frameworks tests or choose the database to use.
And for the rest, completely agree with @lauxjpn.