Не удается заставить генератор данных теста производительности СУБД Star-Schema работать должным образом

Один из обычно (?) Используемых тестов СУБД называется SSB, Star-Schema Benchmark. Чтобы запустить его, вам нужно сгенерировать вашу схему, то есть ваши таблицы с данными в них. Ну, есть программа-генератор, которую вы можете найти в самых разных местах (на github):

и, возможно, в другом месте. Я не уверен, что все они имеют один и тот же код, но, похоже, у меня с ними одна и та же проблема. Я использую 64-битную систему Linux (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 - Ошибка сегментации .. . но я не могу "взять на себя" чей-то вопрос, когда они могли столкнуться с другими проблемами, кроме моей. Кроме того, у этого вопроса нет ответов ...)


person einpoklum    schedule 04.04.2015    source источник


Ответы (3)


Если кто-то все еще поддерживает эту проблему, я нашел решение здесь: https://github.com/electrum/ssb-dbgen/pull/1, вам нужно изменить два файла shared.h и config.h

С Уважением.

Изменить: изменить:

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

to:

#ifdef SSBM
#define  MAXAGG_LEN    20    /* max component length for a agg str */
person Amine Roukh    schedule 22.10.2015
comment
Когда-нибудь внешняя ссылка может стать недействительной. Скопируйте сюда основное содержимое (как изменить два файла). - person qxg; 22.10.2015
comment
А как насчет генерации запросов? Я ищу способ сделать это - person Islacine; 03.12.2019

Я нашел обходной путь, но вам нужна система Windows.

Загрузите и распакуйте этот пакет: https://github.com/LucidDB/thirdparty/blob/master/ssb.tar.bz2

В каталоге bin находится dbgen.exe. Запустите его из консоли Windows, например:

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

После этого просто скопируйте созданные файлы в вашу систему Linux. Не лучший способ, но действенный :)

person pakapi    schedule 16.05.2015
comment
Ну, это работает в Windows ... но нельзя ли как-то исправить код? - person einpoklum; 17.05.2015

Итак, в конце концов я изучил все версии ssb-dbgen на GitHub и создал единый репозиторий:

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

этот репозиторий:

  1. включает исправления для всех ошибок исправлено в любой из этих версий и некоторых других. В частности, несоответствие формата из-за разных int размеров в Linux и Windows для 64-битных машин: решено.
  2. Переключает сборку на использование CMake вместо того, чтобы вручную редактировать Makefiles. В частности, поддерживается сборка в Windows и MacOS. Теоретически поддерживается создание более экзотических систем.
  3. имеет CI-тестирование сборки коммитов, чтобы убедиться, что, по крайней мере, здание не сломается.
person einpoklum    schedule 02.12.2019