寻找用于 SQL 脚本执行的通用库(又名 RDBMS 基准测试库)

发布于 2024-10-31 02:43:48 字数 456 浏览 1 评论 0 原文

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

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

我有一堆针对不同数据库(例如 TPC-H、SSB 等)的 DDL/DML 文件,我希望能够加载数据并对许多 DBMS 运行查询,而不必担心特定 DBMS 的特殊性(MySQL、SQLServer、Oracle 等)。

到目前为止我发现的最接近的东西是这些。它们的问题在于,它们特定于给定的工作负载(大多数情况下是 TPC),因为域特定对象被建模为类(Java 或 C++)。我正在寻找的是独立于域且与 DBMS 无关的。

I wonder if there's a library that abstracts the following DBMS operations:

  1. Load data (a bunch of CSV files or SQL insert statements)
  2. Execute a bunch of queries
  3. Get measurements for the above (throughput, latency, etc)
  4. Report generation (graphs, etc.) based on the above.

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哭了丶谁疼 2024-11-07 02:43:48

这可以通过 DbUnit 和 JMeter 的组合来完成。

DbUnit 是独立于 DBMS 的(尽可能),可用于将 CSV 文件加载到数据库中。

JMeter 可以针对任何具有 JDBC 驱动程序的 DBMS 运行 SQL 语句,并可用于测量每个语句的性能。

This could be done with the combination of DbUnit and JMeter.

DbUnit is DBMS independent (as far as possible) and can be used to load CSV files into the database.

JMeter can run SQL Statements against any DBMS that has a JDBC driver and can be used to measure the performance of each statement.

老街孤人 2024-11-07 02:43:48

我认为这里最好使用 ORM。类似于 Ruby 的 ActiveRecord、Perl 的 Class:DBI 或 DBIx::Class 甚至 java 的 Hibernate 。

Ruby 的 ActiveRecord 已经为使用 MySQL、PostgreSQL、SQLite、Oracle、SQLServer 和 DB2 提供了内置支持,而 hibernate 似乎可以使用更多的数据库(Hibernate 支持的数据库

使用 ORM,您可以采用统一的方式来处理数据库。当然,查询必须用 ORM 语言(Ruby、Perl、Python、Java 等)编写,而不是 SQL。但通过这种方式,您还可以获得在所有数据库引擎中执行等效操作的确定性,并且您只需为所有数据库维护一个“DDL/DML”指令文件。

希望这有帮助

I think here it would be best to use an ORM. Something like Ruby's ActiveRecord, Perl's Class:DBI or DBIx::Class or even java's Hibernate .

Ruby's ActiveRecord already offers builtin support for working with MySQL, PostgreSQL, SQLite, Oracle, SQLServer, and DB2, while hibernate seems to work with much more DBs (Hibernate Supported Databases )

Working with an ORM, you have a unified way of working with the DBs. Of course, the queries will have to be written in ORMs language (Ruby, Perl, Python, Java, etc) and not in SQL. But in this way, you also obtain the certainty that equivalent operations are executed in all DB engines and you only have to maintain one file of 'DDL/DML' instructions, for all DBs.

Hope this helps

平定天下 2024-11-07 02:43:48

OLTPBench 符合所有规定的要求:

基准测试非常有用,但也带来无尽的痛苦。该基准套件是一群博士/博士后/教授聚集在一起并结合他们的工作量/框架/经验/努力的结果。我们希望这将节省其他人的时间,并提供一个可以以开源方式发展的可扩展平台。

OLTPBenchmark 是一个多线程负载生成器。该框架旨在能够针对任何支持 JDBC 的关系数据库生成可变速率、可变混合负载。该框架还提供数据收集功能,例如每个事务类型的延迟和吞吐量日志。

与该框架一起,我们提供以下 OLTP/Web 基准测试:

  • TPC-C
  • 维基百科
  • 综合资源压力源
  • 推特
  • Epinions.com
  • TATP
  • 拍卖标记
  • 座位
  • YCSB
  • JPAB(休眠)
  • CH-benCHmark
  • 选民(日本“美国偶像”)
  • SIBench(快照隔离)
  • 小银行
  • LinkBench
  • CH-benCHmark

该框架的设计允许轻松扩展,我们提供存根代码,贡献者可以使用它来包含新的基准,利用所有系统功能(日志记录、受控速度、受控混合等)

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
  • Twitter
  • 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.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文