Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions keyten-parquet/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
myenv/
__pycache__/
hits.parquet
hits.k10dir/
server.pid
server.log
result.csv
10 changes: 10 additions & 0 deletions keyten-parquet/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Keyten over Parquet

Runs the same dataframe expressions as `../keyten` directly over the single
official Parquet file, without converting it to native storage. The client
times the request through receipt of the complete serialized result.

Run `./benchmark.sh` from this directory. Shared scripts and queries are linked
to the native-storage entry so query semantics and timing stay identical.
The standard driver restarts the server and drops OS caches before each cold
query. The server opens the file only on its first timed query.
5 changes: 5 additions & 0 deletions keyten-parquet/benchmark.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash
export BENCH_DOWNLOAD_SCRIPT=download-hits-parquet-single
export BENCH_RESTARTABLE=yes
export BENCH_DURABLE=yes
exec ../lib/benchmark-common.sh
1 change: 1 addition & 0 deletions keyten-parquet/check
3 changes: 3 additions & 0 deletions keyten-parquet/data-size
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash
set -eu
stat -c '%s' hits.parquet
1 change: 1 addition & 0 deletions keyten-parquet/install
4 changes: 4 additions & 0 deletions keyten-parquet/load
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash
set -eu
# Stateless: the first timed query opens the source file.
test -s hits.parquet
1 change: 1 addition & 0 deletions keyten-parquet/queries.sql
1 change: 1 addition & 0 deletions keyten-parquet/query
60 changes: 60 additions & 0 deletions keyten-parquet/results/20261002/c6a.2xlarge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"system": "Keyten (Parquet)",
"date": "2026-10-02",
"machine": "c6a.2xlarge",
"cluster_size": 1,
"proprietary": "yes",
"hardware": "cpu",
"tuned": "no",
"tags": ["Rust","column-oriented","dataframe","stateless"],
"load_time": 0,
"data_size": 14779976446,
"concurrent_qps": 0.082,
"concurrent_error_ratio": 0.65,
"result": [
[0.103, 0.031, 0.031],
[0.158, 0.056, 0.056],
[0.436, 0.289, 0.279],
[0.639, 0.24, 0.249],
[1.429, 1.092, 1.091],
[1.9, 1.517, 1.495],
[0.117, 0.032, 0.032],
[0.192, 0.059, 0.064],
[1.828, 1.365, 1.319],
[2.245, 1.666, 1.614],
[0.813, 0.346, 0.333],
[0.841, 0.388, 0.367],
[1.916, 1.469, 1.463],
[3.717, 2.792, 2.733],
[2.073, 1.557, 1.472],
[1.792, 1.349, 1.348],
[3.415, 2.738, 2.744],
[5.816, 4.803, 4.747],
[6.536, 5.526, 5.525],
[0.429, 0.097, 0.095],
[10.176, 3.117, 2.912],
[11.973, 4.292, 4.275],
[47.922, 137.432, 191.578],
[13.246, 3.492, 3.465],
[2.438, 1.005, 1.007],
[1.153, 0.809, 0.803],
[2.434, 1.021, 1.02],
[10.318, 3.069, 2.95],
[19.588, 18.317, 85.391],
[0.341, 0.199, 0.195],
[2.606, 1.64, 1.607],
[6.294, 2.007, 2.003],
[10.189, 8.983, 9.124],
[11.423, 5.707, 5.616],
[11.436, 5.799, 5.472],
[1.763, 1.382, 1.389],
[0.395, 0.194, 0.17],
[0.314, 0.159, 0.157],
[0.319, 0.12, 0.122],
[0.876, 0.504, 0.485],
[0.211, 0.066, 0.064],
[0.196, 0.054, 0.05],
[0.193, 0.065, 0.071]
]
}

60 changes: 60 additions & 0 deletions keyten-parquet/results/20261002/c6a.4xlarge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"system": "Keyten (Parquet)",
"date": "2026-10-02",
"machine": "c6a.4xlarge",
"cluster_size": 1,
"proprietary": "yes",
"hardware": "cpu",
"tuned": "no",
"tags": ["Rust","column-oriented","dataframe","stateless"],
"load_time": 0,
"data_size": 14779976446,
"concurrent_qps": 0.108,
"concurrent_error_ratio": 0,
"result": [
[0.108, 0.031, 0.031],
[0.151, 0.046, 0.045],
[0.325, 0.21, 0.195],
[0.423, 0.245, 0.242],
[0.861, 0.648, 0.653],
[1.115, 0.838, 0.835],
[0.12, 0.031, 0.031],
[0.172, 0.048, 0.047],
[1.216, 0.895, 0.863],
[1.474, 1.069, 1.071],
[0.524, 0.218, 0.217],
[0.53, 0.223, 0.219],
[1.446, 1.083, 1.045],
[3.327, 2.077, 2.12],
[1.491, 1.123, 1.176],
[1.235, 1.051, 1.031],
[3.134, 2.099, 2.127],
[5.333, 4.109, 4.124],
[6.246, 4.384, 4.365],
[0.283, 0.094, 0.098],
[10.168, 2.087, 1.983],
[11.889, 2.4, 2.567],
[22.155, 4.856, 4.608],
[13.446, 2.425, 2.393],
[2.434, 0.557, 0.555],
[0.721, 0.439, 0.437],
[2.44, 0.563, 0.561],
[10.316, 2.212, 1.947],
[11.765, 10.432, 11.362],
[0.268, 0.155, 0.159],
[2.683, 1.147, 1.148],
[6.146, 1.422, 1.436],
[7.812, 6.427, 6.432],
[11.214, 3.776, 3.56],
[11.283, 3.747, 3.724],
[1.377, 1.101, 1.095],
[0.407, 0.176, 0.181],
[0.309, 0.159, 0.149],
[0.298, 0.127, 0.113],
[0.834, 0.494, 0.498],
[0.213, 0.062, 0.06],
[0.197, 0.054, 0.05],
[0.202, 0.067, 0.066]
]
}

60 changes: 60 additions & 0 deletions keyten-parquet/results/20261002/c6a.large.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"system": "Keyten (Parquet)",
"date": "2026-10-02",
"machine": "c6a.large",
"cluster_size": 1,
"proprietary": "yes",
"hardware": "cpu",
"tuned": "no",
"tags": ["Rust","column-oriented","dataframe","stateless"],
"load_time": 0,
"data_size": 14779976446,
"concurrent_qps": 0.015,
"concurrent_error_ratio": 0.438,
"result": [
[0.111, 0.032, 0.033],
[0.288, 0.091, 0.091],
[1.332, 0.864, 0.865],
[1.915, 0.564, 0.564],
[6.504, 5.437, 5.47],
[6.663, 5.777, 5.784],
[0.112, 0.032, 0.031],
[0.3, 0.092, 0.092],
[5.959, 4.597, 4.582],
[7.255, 5.651, 5.616],
[2.256, 1.008, 1.007],
[2.258, 1.066, 1.06],
[5.63, 4.699, 4.701],
[48.583, 78.201, 87.033],
[6.11, 5.056, 5.051],
[5.189, 4.117, 4.11],
[11.282, 13.328, 19.17],
[141.609, 262.002, 267.891],
[229.63, 192.664, 288.11],
[1.299, 0.236, 0.236],
[14.522, 8.433, 8.439],
[26.557, 56.798, 68.922],
[83.905, 203.756, 242.459],
[18.745, 11.243, 11.109],
[5.701, 3.803, 3.804],
[3.779, 3.098, 3.072],
[5.646, 3.861, 3.869],
[14.608, 8.904, 8.62],
[1182.597, null, null],
[0.735, 0.515, 0.511],
[7.397, 5.498, 5.594],
[12.514, 6.806, 6.765],
[null, null, null],
[1128.361, null, null],
[1126.217, null, null],
[4.566, 3.986, 4.002],
[0.554, 0.301, 0.313],
[0.396, 0.235, 0.224],
[0.381, 0.156, 0.143],
[1.212, 0.806, 0.761],
[0.262, 0.08, 0.076],
[0.238, 0.064, 0.065],
[0.229, 0.08, 0.08]
]
}

60 changes: 60 additions & 0 deletions keyten-parquet/results/20261002/c6a.metal.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"system": "Keyten (Parquet)",
"date": "2026-10-02",
"machine": "c6a.metal",
"cluster_size": 1,
"proprietary": "yes",
"hardware": "cpu",
"tuned": "no",
"tags": ["Rust","column-oriented","dataframe","stateless"],
"load_time": 0,
"data_size": 14779976446,
"concurrent_qps": 3.603,
"concurrent_error_ratio": 0.005,
"result": [
[0.125, 0.031, 0.03],
[0.187, 0.042, 0.038],
[0.314, 0.109, 0.101],
[0.434, 0.117, 0.122],
[0.686, 0.186, 0.161],
[0.868, 0.297, 0.26],
[0.108, 0.031, 0.031],
[0.173, 0.047, 0.044],
[0.845, 0.405, 0.433],
[1.254, 0.475, 0.477],
[0.533, 0.151, 0.158],
[0.606, 0.138, 0.145],
[1.014, 0.438, 0.387],
[2.822, 0.94, 0.915],
[1.095, 0.449, 0.434],
[0.925, 0.656, 0.646],
[2.809, 1.268, 1.114],
[5.088, 2.9, 2.876],
[5.422, 2.12, 2.046],
[0.3, 0.073, 0.067],
[9.516, 0.693, 0.52],
[11.33, 1.015, 0.971],
[22.087, 1.774, 1.884],
[13.152, 1.575, 1.624],
[2.466, 0.265, 0.233],
[0.766, 0.212, 0.19],
[2.451, 0.234, 0.226],
[9.697, 0.918, 0.935],
[9.749, 2.882, 2.846],
[0.279, 0.08, 0.074],
[2.391, 0.478, 0.459],
[5.938, 0.654, 0.647],
[6.345, 3.037, 2.995],
[10.23, 1.853, 1.669],
[10.181, 1.773, 1.582],
[1.101, 0.853, 0.848],
[0.411, 0.198, 0.197],
[0.318, 0.172, 0.176],
[0.304, 0.13, 0.127],
[0.852, 0.481, 0.499],
[0.242, 0.07, 0.063],
[0.227, 0.058, 0.05],
[0.229, 0.064, 0.067]
]
}

60 changes: 60 additions & 0 deletions keyten-parquet/results/20261002/c6a.xlarge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"system": "Keyten (Parquet)",
"date": "2026-10-02",
"machine": "c6a.xlarge",
"cluster_size": 1,
"proprietary": "yes",
"hardware": "cpu",
"tuned": "no",
"tags": ["Rust","column-oriented","dataframe","stateless"],
"load_time": 0,
"data_size": 14779976446,
"concurrent_qps": 0.033,
"concurrent_error_ratio": 0,
"result": [
[0.088, 0.032, 0.032],
[0.18, 0.069, 0.069],
[0.769, 0.473, 0.472],
[1.125, 0.334, 0.337],
[2.797, 2.191, 2.195],
[3.583, 2.979, 2.961],
[0.113, 0.032, 0.032],
[0.222, 0.073, 0.068],
[3.269, 2.477, 2.465],
[3.905, 3.042, 3.038],
[1.229, 0.541, 0.551],
[1.283, 0.606, 0.59],
[3.288, 2.575, 2.593],
[6.42, 4.779, 4.848],
[3.614, 2.946, 2.916],
[2.914, 2.33, 2.289],
[6.16, 4.948, 5.005],
[9.182, 7.867, 21.711],
[11.765, 9.919, 10.068],
[0.705, 0.139, 0.138],
[9.837, 5.023, 4.936],
[13.61, 9.782, 9.346],
[72.782, 201.458, 327.645],
[13.138, 5.642, 5.564],
[2.937, 1.922, 1.922],
[2.058, 1.555, 1.552],
[3.046, 1.965, 1.964],
[10.038, 4.983, 5.064],
[330.187, 634.951, 999.747],
[0.458, 0.31, 0.308],
[4.282, 3.055, 3.054],
[6.883, 3.626, 3.638],
[182.634, 247.265, 266.962],
[193.675, 529.26, 1143.816],
[344.772, 873.726, 1076.579],
[2.639, 2.144, 2.13],
[0.4, 0.22, 0.221],
[0.336, 0.158, 0.174],
[0.322, 0.113, 0.12],
[0.934, 0.558, 0.576],
[0.219, 0.062, 0.056],
[0.207, 0.057, 0.056],
[0.208, 0.071, 0.066]
]
}

Loading
Loading