寻找SQL脚本执行的通用库(即RDBMS基准库)



我想知道是否有一个库抽象了以下DBMS操作:

  1. 加载数据(一堆CSV文件或SQL插入语句)
  2. 执行一堆查询
  3. 获取上述测量值(吞吐量、延迟等)
  4. 基于上述生成报告(图表等)

我有一堆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

这个框架是为了方便扩展而设计的,我们提供了存根代码,贡献者可以使用它来包含一个新的基准测试,利用所有的系统特性(日志记录、速度控制、混合控制等)

相关内容

  • 没有找到相关文章

最新更新