System Overview
DBSim is designed for two goals:- providing a testing environment that is as similar as possible to real RDBMS and accurate query cost estimation tools
- providing enough extensibility for users to develop various data science algorithms without modifying the kernel
For the second goal, we design a registry-based extension mechanism to manage the user-created extensions for DBSim.
DBSim organizes the extensions in units called Syntax, where each Syntax includes a specific suite of extension classes and functions, e.g., SpatialSyntax includes implementation of related operations and data types for spatial data processing. A global registry acts as a middleware between the extensions and the kernel to manage the extensions such that they are decoupled from the kernel. The registry provides entry points for users to mount their extensions. Those entry points can be enabled/disabled flexibly, such that different Syntaxes can co-exist seamlessly (as long as they have no conflict in the implementation). The entry points cover all the five components in kernel, allowing users to extend any of the components flexibly.
Interface
The GUI of DBSim mainly has 6 blocks: (1) query input box, (2) query result box, (3) query plan visualization panel, (4) query optimization rule list, (5) history records, and (6) button for managing datasets. Users click the button to upload, update or delete datasets, manipulate the optimization rules through the rule list, type query into the input box, then the results will be displayed in the result box, query plans will be drawn in the visualization panel and a new history record will be appended to the history list.
Please refer to our paper (CIKM 2022) for more details.