diff --git a/.gitignore b/.gitignore index 7482630..e6eaac1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /iceberg /iceberg-test .env +/benchmark/dbt3/ diff --git a/Makefile b/Makefile index a95bc34..8a0fcaf 100644 --- a/Makefile +++ b/Makefile @@ -24,3 +24,31 @@ lint: outdated: devbox run "cd src && go list -u -m -f '{{if and .Update (not .Indirect)}}{{.}}{{end}}' all" + +pg-init: + devbox run initdb + +pg-up: + devbox services start postgresql + +pg-down: + devbox services stop postgresql + +benchmark-init: + devbox run "cd benchmark && \ + git clone https://github.com/osdldbt/dbt3.git && \ + cd dbt3 && \ + make -f Makefile.cmake release && \ + cd builds/release && \ + sudo cmake --install . --prefix /usr/local && \ + createdb dbt3 && \ + + git clone https://github.com/gregrahn/tpch-kit.git && \ + + +" + +benchmark-uninstall: + devbox run "cd benchmark/dbt3/builds/release && \ + xargs rm < install_manifest.txt && \ + dropdb dbt3" diff --git a/benchmark/README.md b/benchmark/README.md new file mode 100644 index 0000000..db2a524 --- /dev/null +++ b/benchmark/README.md @@ -0,0 +1,27 @@ +# BemiDB Bechmark + +1. Download the TPC-H .zip benchmark file from the [following link](https://www.tpc.org/tpc_documents_current_versions/current_specifications5.asp) (requires to fill a form) +2. Unzip the downloaded file into the `benchmark` directory + +3. Run the following commands: + +```sh +make pg-init +make pg-up +make benchmark-init + +cd benchmark +dbt3-build-dbgen --patch-dir=dbt3/patches --query-dir=dbt3/queries pgsql "TPC-H V3.0.1"/ +``` + +--- + +```sh +make pg-init +make pg-up + +cd benchmark +git clone https://github.com/gregrahn/tpch-kit.git +cd tpch-kit/dbgen +make MACHINE=MACOS DATABASE=POSTGRESQL # Use MACHINE=LINUX for Linux +``` diff --git a/devbox.json b/devbox.json index c3b030a..633806e 100644 --- a/devbox.json +++ b/devbox.json @@ -1,7 +1,9 @@ { "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.13.1/.schema/devbox.schema.json", "packages": [ - "go@latest" + "go@latest", + "postgresql@latest", + "cmake@latest" ], "shell": { "init_hook": [], diff --git a/devbox.lock b/devbox.lock index 845f5a1..7032c05 100644 --- a/devbox.lock +++ b/devbox.lock @@ -1,6 +1,62 @@ { "lockfile_version": "1", "packages": { + "cmake@latest": { + "last_modified": "2024-10-13T23:44:06Z", + "resolved": "github:NixOS/nixpkgs/d4f247e89f6e10120f911e2e2d2254a050d0f732#cmake", + "source": "devbox-search", + "version": "3.29.6", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/a7v65i1rs0jbdjq578pk9h689fif32sd-cmake-3.29.6", + "default": true + } + ], + "store_path": "/nix/store/a7v65i1rs0jbdjq578pk9h689fif32sd-cmake-3.29.6" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/kap109b20fvapdkpk0djrqy5chqc8rgh-cmake-3.29.6", + "default": true + }, + { + "name": "debug", + "path": "/nix/store/k6dxnvzrpjng7f1vv3likb8p8x3a2gwf-cmake-3.29.6-debug" + } + ], + "store_path": "/nix/store/kap109b20fvapdkpk0djrqy5chqc8rgh-cmake-3.29.6" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/s1b6hfmgbib22r5xyrw86v9x6mljxhal-cmake-3.29.6", + "default": true + } + ], + "store_path": "/nix/store/s1b6hfmgbib22r5xyrw86v9x6mljxhal-cmake-3.29.6" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/24gbi6mcw4c6jgzai9aaxx9qi2rxdb09-cmake-3.29.6", + "default": true + }, + { + "name": "debug", + "path": "/nix/store/6jgji8dva0n4d9l3yplabfa29j6hsjwf-cmake-3.29.6-debug" + } + ], + "store_path": "/nix/store/24gbi6mcw4c6jgzai9aaxx9qi2rxdb09-cmake-3.29.6" + } + } + }, "go@latest": { "last_modified": "2024-09-10T15:01:03Z", "resolved": "github:NixOS/nixpkgs/5ed627539ac84809c78b2dd6d26a5cebeb5ae269#go_1_23", @@ -48,6 +104,131 @@ "store_path": "/nix/store/mi0ybwsm6pmxzv9hsm6bcbqaq1pkf8wh-go-1.23.1" } } + }, + "postgresql@latest": { + "last_modified": "2024-10-24T16:50:28Z", + "plugin_version": "0.0.2", + "resolved": "github:NixOS/nixpkgs/63487b2f26fa065cfeeaa47dddb08e2856ba53e8#postgresql", + "source": "devbox-search", + "version": "16.4", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/6dzxj78wph840cpwslh96s4gpm0iwch2-postgresql-16.4", + "default": true + }, + { + "name": "man", + "path": "/nix/store/z1n2vh799a5icpaxbrjfqsasagb276bk-postgresql-16.4-man", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/afjpl8ilq8s6j6zh4qqyy6mxz3v2xbav-postgresql-16.4-dev" + }, + { + "name": "doc", + "path": "/nix/store/ry9d9by692xj92y5b9j6z0aa5y3lh3px-postgresql-16.4-doc" + }, + { + "name": "lib", + "path": "/nix/store/d1im42w02x8gl2y380r4hgj8xgkkkbwc-postgresql-16.4-lib" + } + ], + "store_path": "/nix/store/6dzxj78wph840cpwslh96s4gpm0iwch2-postgresql-16.4" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/37r0vmsb8xd1kv3wjd99kr59q99ja3g0-postgresql-16.4", + "default": true + }, + { + "name": "man", + "path": "/nix/store/mawnv85hv5y64csbmpgrnz88j7r8cby5-postgresql-16.4-man", + "default": true + }, + { + "name": "debug", + "path": "/nix/store/71hz4hv1n6ivymbzd0jm3a61cyj9fwh5-postgresql-16.4-debug" + }, + { + "name": "dev", + "path": "/nix/store/ibhwvhq4gkdibkfrkqg9vmip9mhhrg2q-postgresql-16.4-dev" + }, + { + "name": "doc", + "path": "/nix/store/rmvkab0pxjjjznk350syr3gzpa13dz1k-postgresql-16.4-doc" + }, + { + "name": "lib", + "path": "/nix/store/39mnmp40qhpq2h6r3cj66s23sb5fkzr6-postgresql-16.4-lib" + } + ], + "store_path": "/nix/store/37r0vmsb8xd1kv3wjd99kr59q99ja3g0-postgresql-16.4" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/vlgydd1rakmw9j14i8dgrlhzj4pa82vi-postgresql-16.4", + "default": true + }, + { + "name": "man", + "path": "/nix/store/2wm2caki07a557z97228n2zxrd3a8j4b-postgresql-16.4-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/r03r96a44grl85sflw6hvwwlrzr32rk9-postgresql-16.4-doc" + }, + { + "name": "lib", + "path": "/nix/store/cy3q9y20jwk1vkd6jxf3mnq6xzbb9dn8-postgresql-16.4-lib" + }, + { + "name": "dev", + "path": "/nix/store/96nxx00m06jl2jmvb16916l2rpwb13hk-postgresql-16.4-dev" + } + ], + "store_path": "/nix/store/vlgydd1rakmw9j14i8dgrlhzj4pa82vi-postgresql-16.4" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/mjjfx6yyaaba5hmv6bga20m8fxrca93l-postgresql-16.4", + "default": true + }, + { + "name": "man", + "path": "/nix/store/b8cvsw47h2487y4j805zi0645x3ajh1i-postgresql-16.4-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/apbxfs52v8im9725mn2f1jhgbdfggrpd-postgresql-16.4-doc" + }, + { + "name": "lib", + "path": "/nix/store/32cprs7xwxvb0rw2imfrgy5vcacc27hc-postgresql-16.4-lib" + }, + { + "name": "debug", + "path": "/nix/store/alcnsd7fkkr3iipvcn9gzsyv16kab6m9-postgresql-16.4-debug" + }, + { + "name": "dev", + "path": "/nix/store/pqya8lq5jyplfmbmafrrwsrsi07d5ssn-postgresql-16.4-dev" + } + ], + "store_path": "/nix/store/mjjfx6yyaaba5hmv6bga20m8fxrca93l-postgresql-16.4" + } + } } } }