无法设法让Star-Schema DBMS基准数据生成器正常运行

时间:2015-04-04 21:35:15

标签: linux benchmarking compiler-warnings rdbms

常用(?)使用的DBMS基准测试之一称为SSB,即Star-Schema Benchmark。要运行它,您需要生成模式,即包含数据的表。好吧,你可以在各种各样的地方找到一个发电机程序(在github上):

可能在其他地方。我不确定那些都有完全相同的代码,但我似乎遇到了同样的问题。我正在使用Linux 64位系统(Kubuntu 14.04,如果这有帮助);我正在尝试从该软件包构建和运行`dbgen'程序。

构建时,我会收到与类型/大小相关的警告:

me@myhost:~/src/ssb-dbgen$ make
... etc. etc. ...
gcc -O -DDBNAME=\"dss\" -DLINUX -DDB2 -DSSBM   -c -o varsub.o varsub.c
rnd.c: In function גrow_stopג:
rnd.c:60:6: warning: format ג%dג expects argument of type גintג, but argument 4 has type גlong intג [-Wformat=]
      i, Seed[i].usage);
      ^
driver.c: In function גpartialג:
driver.c:606:4: warning: format ג%dג expects argument of type גintג, but argument 4 has type גlong intג [-Wformat=]
... etc. etc. ...

然后,我确保所有正确的文件都到位,尝试生成我的表,并且只获得其中的两个!我尝试显式生成LINEORDER表,并得到一个奇怪的失败:

eyal@vivaldi:~/src/ssb-dbgen$ ls
bcd2.c      build.c    driver.c    HISTORY         makefile_win   print.c  rnd.c                      speed_seed.o      varsub.c
bcd2.h      build.o    driver.o    history.html    mkf.macos      print.o  rnd.h                      ssb-dbgen-master  varsub.o
bcd2.o      CHANGES    dss.ddl     load_stub.c     permute.c      qgen     rnd.o                      text.c
bm_utils.c  config.h   dss.h       load_stub.o     permute.h      qgen.c   rxin-ssb-dbgen-master.zip  text.o
bm_utils.o  dbgen      dss.ri      Makefile        permute.o      qgen.o   shared.h                   tpcd.h
BUGS        dists.dss  dsstypes.h  makefile.suite  PORTING.NOTES  README   speed_seed.c               TPCH_README
me@myhost:~/src/ssb-dbgen$ ./dbgen -vfF -s 1
SSBM (Star Schema Benchmark) Population Generator (Version 1.0.0)
Copyright Transaction Processing Performance Council 1994 - 2000
Generating data for suppliers table [pid: 32303]done.
Generating data for customers table [pid: 32303]done.
Generating data for (null) [pid: 32303]done.
Generating data for (null) [pid: 32303]done.
Generating data for (null) [pid: 32303]done.
Generating data for (null) [pid: 32303]done.
me@myhost:~/src/ssb-dbgen$ ls *.tbl
customer.tbl  supplier.tbl
me@myhost:~/src/ssb-dbgen$ ./dbgen -vfF -s 1 -T l
SSBM (Star Schema Benchmark) Population Generator (Version 1.0.0)
Copyright Transaction Processing Performance Council 1994 - 2000
Generating data for lineorder table [pid: 32305]*** buffer overflow detected ***: ./dbgen terminated
======= Backtrace: =========
... etc. etc. ...
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fcea1b79ec5]
./dbgen[0x401219]
======= Memory map: ========
... etc. etc. ...

现在,如果我切换到32位Linux系统,我不会收到任何这些警告(尽管有两个关于指针到非指针转换的警告);但是再次运行该代只生成两个表。现在,可以制作其他单独的表 - 但它们根本不相互对应,我想......

有没有人遇到过类似的问题?难道我做错了什么?我是否以某种方式使用了错误的来源?

(这几乎是一个骗局 SSB dbgen Linux - Segmentation Fault ......但是当他们遇到其他问题而不是我的问题时,我不能“接管”别人的问题。此外,那个没有答案......)

3 个答案:

答案 0 :(得分:3)

如果有人仍然鼓励这个问题,我在这里找到了一个解决方案:https://github.com/electrum/ssb-dbgen/pull/1 具体而言,您必须修改两个文件shared.hconfig.h

问候。

编辑:更改:

#ifdef SSBM
#define  MAXAGG_LEN    10    /* max component length for a agg str */

为:

#ifdef SSBM
#define  MAXAGG_LEN    20    /* max component length for a agg str */

答案 1 :(得分:1)

我找到了解决方法但你需要Windows系统。

下载并解压缩此软件包: https://github.com/LucidDB/thirdparty/blob/master/ssb.tar.bz2

在bin目录中是dbgen.exe。从Windows控制台运行它,如f.g。:

...\bin\dbgen.exe -s 1 -T a 

之后只需将创建的文件复制到Linux系统。不是最好的方法,但有效:)

答案 2 :(得分:0)

因此,最终,我最终在GitHub上对ssb-dbgen的所有版本进行了调查,并创建了一个统一的存储库:

https://github.com/eyalroz/ssb-dbgen/

此存储库:

  1. 并入了其中任何一个版本中固定的fixes for all bugs以及其他一些版本。特别是,由于Linux和Windows(用于64位计算机)上的int大小不同,格式不匹配为resolved
  2. 将构建版本切换为使用CMake,而不需要手动编辑Makefile。具体来说,支持在Windows和MacOS上构建。理论上支持在更多奇特的系统上进行构建。
  3. 进行了CI提交测试,以确保至少建筑物不会损坏。