我想知道是否有一个库抽象了以下DBMS操作:
- 加载数据(一堆CSV文件或SQL插入语句)
- 执行一堆查询
- 获取上述测量值(吞吐量、延迟等)
- 基于上述生成报告(图表等)
我有一堆DDL/DML文件为不同的数据库(例如TPC-H, SSB等),我希望能够加载数据和运行查询到许多DBMS而不必担心特定DBMS的特殊性(MySQL,SQLServer,Oracle等)。
到目前为止我发现的最接近的东西是这些。它们的问题在于,它们是特定于给定工作负载(大多数情况下是TPC)的,因为特定于领域的对象被建模为类(Java或c++)。我要找的是域独立和dbms不可知论。
这可以通过DbUnit和JMeter的组合来完成。
DbUnit是DBMS独立的(尽可能),可以用来加载CSV文件到数据库。
JMeter可以对任何具有JDBC驱动程序的DBMS运行SQL语句,并可用于测量每个语句的性能。
我认为这里最好使用ORM。比如Ruby的ActiveRecord, Perl的Class:DBI或DBIx::Class,甚至java的Hibernate。
Ruby的ActiveRecord已经为MySQL, PostgreSQL, SQLite, Oracle, SQLServer和DB2提供了内置支持,而hibernate似乎可以与更多的db (hibernate支持的数据库)一起工作
使用ORM,您可以使用统一的方式来处理db。当然,查询必须用orm语言(Ruby、Perl、Python、Java等)编写,而不是用SQL。但是通过这种方式,您还可以确定在所有DB引擎中执行相同的操作,并且您只需要为所有DB维护一个'DDL/DML'指令文件。
希望能有所帮助
OLTPBench符合所有规定的要求:
基准测试是非常有用的,但却是无止境的痛苦。这个基准套件是一群博士/博士后/教授聚在一起,结合他们的工作负载/框架/经验/努力的结果。我们希望这将节省其他人的时间,并将提供一个可扩展的平台,可以以开源的方式发展。
OLTPBenchmark是一个多线程负载生成器。该框架被设计为能够针对任何启用jdbc的关系数据库生成可变速率、可变混合负载。该框架还提供数据收集功能,例如,每个事务类型的延迟和吞吐量日志。
与框架一起,我们提供以下OLTP/Web基准测试:
- tpc - c
维基百科- 合成资源压力源
Twitter- Epinions.com
- TATP
- AuctionMark
- YCSB
- JPAB (Hibernate)
- CH-benCHmark
- 选民(日语"《美国偶像》")
- SIBench(快照隔离)
- SmallBank
- LinkBench
- CH-benCHmark
这个框架是为了方便扩展而设计的,我们提供了存根代码,贡献者可以使用它来包含一个新的基准测试,利用所有的系统特性(日志记录、速度控制、混合控制等)