I wonder if there's a library that abstracts the following DBMS operations:
I have a bunch of DDL/DML files for different databases (for example TPC-H, SSB, etc) and I want to be able to load the data and run queries to many DBMSs without having to worry about the particularities of the specific DBMS (MySQL,SQLServer,Oracle, etc).
The closes thing I've found so far are these. The problem with them is that they’re specific for a given workload (TPC in most of the cases) in the sense that the domain specific objects are modeled as classes (Java or C++). What I'm looking for is domain-independent and DBMS-agnostic.
OLTPBench fits the bill for all stated requirements:
Benchmarking is incredibly useful, yet endlessly painful. This benchmark suite is the result of a group of Phd/post-docs/professors getting together and combining their workloads/frameworks/experiences/efforts. We hope this will save other people's time, and will provide an extensible platform, that can be grown in an open-source fashion.
OLTPBenchmark is a multi-threaded load generator. The framework is designed to be able to produce variable rate, variable mixture load against any JDBC-enabled relational database. The framework also provides data collection features, e.g., per-transaction-type latency and throughput logs.
Together with the framework we provide the following OLTP/Web benchmarks:
- TPC-C
- Wikipedia
- Synthetic Resource Stresser
- Epinions.com
- TATP
- AuctionMark
- SEATS
- YCSB
- JPAB (Hibernate)
- CH-benCHmark
- Voter (Japanese "American Idol")
- SIBench (Snapshot Isolation)
- SmallBank
- LinkBench
- CH-benCHmark
This framework is design to allow easy extension, we provide stub code that a contributor can use to include a new benchmark, leveraging all the system features (logging, controlled speed, controlled mixture, etc.)