Archive for the ‘pt-table-checksum’ tag
In the MySQL ecosphere there is an ecosystem of tools. Like real-world ecosystems, the “creatures” in the MySQL tools ecosystem can be classified and organized by a taxonomy. There are already multiple taxonomies of software bugs (e.g. A Taxonomy of Bugs), but as far as I know this is the first Taxonomy of Database Tools. A taxonomy of database tools serves useful purposes, as discussed in the previously linked page. For me, the most useful purpose is the high-level ecosystem view which I use to compare MySQL tools to Drizzle tools. In so doing, one sees clearly how the MySQL tools ecosystem is thriving whereas the Drizzle tools ecosystem is just budding, so to speak. For other people, I imagine two overarching interests in a taxonomy of database tools.
First, by laying out the ecosphere in a simple, organized, and comprehensible fashion, a taxonomy of database tools can permit a user (DBA, sysadmin, etc.) to see how well they are “tooled”. For example, when I gave a presentation on pt-table-checksum at PLMCE 2012, I was surprised to learn how many people never used a tool to verify replication data integrity. I did not bother to ask why, but I suspect it is because they were not aware that such tools existed. By looking at this taxonomy of database tools, some users might discover a new type of tool of which there are already many examples.
Second, a taxonomy of database tools is interesting for developers because it reveals where a database server has missing capabilities that users compensate for with tools. Point in case: pt-table-checksum is used to verifying replication data integrity because until MySQL 5.6 this capability did not exist in the database server. It is debatable whether all types of tools could be implemented natively in a database server; in theory, they probably could. This debate becomes a practical concern for modularly-designed database servers like Drizzle because in my humble opinion it is far easier to write plugins and thus tools-as-plugins for Drizzle than for MySQL.
This Taxonomy of Database Tools is still a work in progress. A lot of the descriptions need to be expanded, traits refined, and more examples added. If you do not agree with its organization, you can suggest a change, or develop your own taxonomy. In any case, I will continue to refine this Taxonomy of Database Tools to see where it leads and what it reveals.