-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquack_vs_postgres.yaml
More file actions
63 lines (60 loc) · 1.8 KB
/
Copy pathquack_vs_postgres.yaml
File metadata and controls
63 lines (60 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
meta:
name: "Quack vs Postgres: Client-Server Head-to-Head"
description: >
The apples-to-apples question the execution-modes experiment (capsule
3e2fe152) deliberately avoided: if you want CLIENT-SERVER analytics,
is DuckDB-over-Quack (beta, pushdown mode) already competitive with
the incumbent client-server database? Three engines, identical data
and SQL (analytical_wall), stock defaults, cold cache per query:
duckdb in-process (reference floor), quack_pushdown (DuckDB
client-server), postgres (the incumbent).
Caveat for cross-engine fairness, disclosed up front: on macOS,
Postgres runs inside Docker's VM and pays filesystem-virtualization
tax that the native engines do not. Treat Postgres numbers here as
macOS-Docker numbers; a Linux run is the clean comparison.
dataset:
source: sql_benchmarks.plugins.data_sources.declarative_gen
tables:
analytical_data:
rows: rows
columns:
- name: id
provider: sequence
primary_key: true
- name: region
provider: choice
options: ["North", "South", "East", "West"]
- name: category
provider: choice
options: ["A", "B", "C"]
- name: price
provider: random_float
min_value: 10.0
max_value: 500.0
- name: quantity
provider: random_int
min_value: 1
max_value: 100
- name: discount
provider: random_float
min_value: 0.0
max_value: 0.30
definitions:
rows:
tiny: 1_000
small: 100_000
medium: 1_000_000
large: 10_000_000
execution:
test_suite: analytical_wall
engines:
- duckdb
- quack_pushdown
- postgres
replication: 5
matrix:
rows:
- tiny
- small
- medium
- large