问题描述
一种常用的(?)DBMS基准称为SSB,。要运行它,您需要生成自己的架构,即其中包含数据的表。好吧,有一个生成器程序可以在各种各样的地方找到(在github上):
One of the commonly (?) used DBMS benchmarks is called SSB, the Star-Schema Benchmark. To run it, you need to generate your schema, i.e. your tables with the data in them. Well, there's a generator program you can find in all sorts of places (on github):
- (然后接受测试) / ssb / dbgen或其他内容)
- https://github.com/rxin/ssb-dbgen
- https://code.google.com/p/gpudb/source/checkout (then under tests/ssb/dbgen or something)
- https://github.com/electrum/ssb-dbgen/
以及其他位置。我不确定它们的代码是否完全相同,但是我似乎在遇到同样的问题。我使用的是Linux 64位系统(如果有帮助,请使用Kubuntu 14.04);并且正在尝试从该软件包中构建并运行`dbgen'程序。
and possibly elsewhere. I'm not sure those all have exactly the same code, but I seem to be experiencing the same problem with them. I'm using a Linux 64-bit system (Kubuntu 14.04 if that helps); and am trying to build and run the `dbgen' program from that package.
构建时,我会收到与类型/大小相关的警告:
When building, I get type/size-related warnings:
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表,并遇到一个奇怪的失败:
Then, I make sure all the right files are in place, try to generate my tables, and only get two of them! I try to explicitly generate the LINEORDER table, and get a strange failure:
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. ...
Now, if I switch to a 32-bit Linux system, I don't get any of these warnings (although there two warnings about pointer-to-non-pointer conversion); but running the generation again produces only two tables. Now, other individual tables can be produced - but they don't correspond to one another at all, I would think...
有人遇到过类似的问题吗?难道我做错了什么?我是否以某种方式使用了错误的来源?
Has anyone encountered a similar problem? Am I doing something wrong? Am I using the wrong sources somehow?
推荐答案
所以,最终,我结束了在GitHub上调查ssb-dbgen的所有版本,并创建统一的存储库:
So, eventually, I ended up surveying all versions of ssb-dbgen on GitHub, and creating a unified repository:
此存储库:
- 并入,以及其他一些版本。特别是,由于Linux和Windows(用于64位计算机)上的
int
大小不同,格式不匹配为。 - 将构建切换为使用CMake,而不需要手动编辑
Makefile
s。具体来说,支持在Windows和MacOS上构建。在理论上支持在更多奇特的系统上构建。 - 已对提交进行CI生成测试,以确保至少该建筑物不会损坏。
- incorporates fixes for all bugs fixed in any of those versions, and a few others. In particular, the format mismatch due to different
int
sizes on Linux and Windows for 64-bit machines is resolved. - Switches the build to using CMake, rather than needing to manually edit
Makefile
s. Specifically, building on Windows and MacOS is supported. Building on more exotic systems is theoretically supported. - has CI build testing of commits to make sure that at least the building doesn't break.
这篇关于无法使Star-Schema DBMS基准数据生成器正常运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!