PostgreSQL implementation of the LDBC Social Network Benchmark's Interactive workload.
The recommended environment is that the benchmark scripts (Bash) and the LDBC driver (Java 8) run on the host machine, while the PostgreSQL database runs in a Docker container. Therefore, the requirements are as follows:
- Bash
- Java 8
- Docker 19+
libpq5- the
psycopgPython library:scripts/install-dependencies.sh - enough free space in the directory
${POSTGRES_DATA_DIR}(its default value is specified inscripts/vars.sh)
Alternatively, a docker-compose available to start the PostgreSQL container and a container loading the data. This requires docker-compose installed on the host machine. Running Postgres and loading the data can be done by executing:
docker-compose build && docker-compose upThe default environment variables are loaded from .env. Change the POSTGRES_CSV_DIR to point to point to the data set, e.g.
POSTGRES_CSV_DIR=`pwd`/test-data/To persist the data by storing the database outside a Docker volume, uncomment the following lines in the docker-compose.yml file:
- type: bind
source: ${POSTGRES_DATA_DIR}
target: /var/lib/postgresql/dataThe data sets need to be generated before loading it to the database. No preprocessing is required. To generate data sets for Postgres, use the Hadoop-based Datagen's CsvMergeForeign serializer classes:
ldbc.snb.datagen.serializer.dynamicActivitySerializer:ldbc.snb.datagen.serializer.snb.csv.dynamicserializer.activity.CsvMergeForeignDynamicActivitySerializer
ldbc.snb.datagen.serializer.dynamicPersonSerializer:ldbc.snb.datagen.serializer.snb.csv.dynamicserializer.person.CsvMergeForeignDynamicPersonSerializer
ldbc.snb.datagen.serializer.staticSerializer:ldbc.snb.datagen.serializer.snb.csv.staticserializer.CsvMergeForeignStaticSerializerThe default configuration of the database (e.g. database name, user, password) is set in the scripts/vars.sh file.
-
Set the
${POSTGRES_CSV_DIR}environment variable to point to the data set, e.g.:export POSTGRES_CSV_DIR=`pwd`/test-data/
-
To start the DBMS, create a database and load the data, run:
scripts/load-in-one-step.sh
-
To run the scripts of benchmark framework, edit the
driver/{create-validation-parameters,validate,benchmark}.propertiesfiles, then run their script, one of:driver/create-validation-parameters.sh driver/validate.sh driver/benchmark.sh
scripts/backup-database.sh and scripts/restore-database.sh scripts to achieve this.