2011-04-09 40 views
4

通用庫我不知道是否有抽象以下DBMS操作的庫:尋找SQL腳本的執行(又名RDBMS基準庫)

  1. 加載數據(一堆CSV文件或SQL INSERT語句)
  2. 執行一堆查詢
  3. 獲取上述(吞吐量,延遲,等等)基於上述
  4. 生成報告(圖表等)的測量。

我有一堆用於不同數據庫(例如TPC-H,SSB等)的DDL/DML文件,我希望能夠將數據加載到許多DBMS而不必擔心特定DBMS(MySQL,SQLServer,Oracle等)的特性。

到目前爲止我發現的關閉事物是these。與特定領域相關的對象被建模爲類(Java或C++)的意義上來說,他們的問題在於它們針對特定的工作負載(大多數情況下是TPC)。我在尋找的是獨立於域和DBMS的不可知論者。

+1

+1一個有趣的問題。我不確定它可以獨立於域 - 我認爲數據庫模型的操作特性*是由應用於它的操作定義的。在一種情況下選擇爲真正快速查詢設計的模型,或者在另一種情況下選擇非常低延遲的更新,就像選擇樹與鏈接列表一樣。 – 2011-04-09 18:25:28

+0

我同意你的意見。我應該說「我正在尋找一個允許用戶使用域獨立模型和域特定模型(通過圖書館的實現語言)數據集的庫」。我想到的是某種插件架構,其中每個工作負載都是插件。 – ivotron 2011-04-12 23:07:00

回答

0

OLTPBench符合該法案的所有規定要求:

基準是非常有用的,但無休止的痛苦。這個基準測試套件是一組博士/博士後/教授聚在一起並結合他們的工作量/框架/經驗/努力的結果。我們希望這會節省其他人的時間,並且會提供一個可擴展的平臺,可以以開源的方式發展。

OLTPBenchmark是一個多線程負載生成器。該框架旨在能夠針對任何啓用JDBC的關係數據庫生成可變比率,可變混合負載。該框架還提供數據收集功能,例如每事務類型的延遲和吞吐量日誌。

  • TPC-C
  • 維基百科
  • 綜合資源Stresser
  • Twitter的
  • Epinions.com
  • TATP:

    與我們提供以下OLTP /網絡基準框架

    一起

  • AuctionMark
  • 席位
  • YCSB
  • JPAB(休眠)
  • CH-標杆
  • 選民(日本的 「美國偶像」)
  • SIBench(快照隔離)
  • SmallBank
  • LinkBench
  • CH-標杆

該框架是設計以允許容易地擴展,我們提供存根代碼的貢獻者可以使用包括一個新的基準,利用所有的系統功能(日誌,受控的速度,來控制混合物等)

0

我認爲這裏最好使用ORM。像Ruby的ActiveRecord,Perl的Class:DBI或DBIx :: Class甚至Java的Hibernate。

Ruby的ActiveRecord的已經提供了與MySQL和PostgreSQL,SQLite的,了Oracle,SQLServer和DB2工作內置支持,而休眠似乎有更多的DB(Hibernate Supported Databases

與ORM工作的工作,你有一個與數據庫一起工作的統一方式。當然,查詢必須用ORMs語言(Ruby,Perl,Python,Java等)編寫,而不是SQL。但是通過這種方式,您還可以獲得在所有數據庫引擎中執行等效操作的確定性,並且您只需爲所有數據庫維護一個「DDL/DML」指令文件。

希望這有助於

1

這可以用DbUnit和JMeter的組合來完成。

DbUnit獨立於DBMS(儘可能),可用於將CSV文件加載到數據庫中。

JMeter可以針對任何具有JDBC驅動程序的DBMS運行SQL語句,並可用於測量每個語句的性能。