RonDB Feature Store REST API Benchmarks#
BenchmarkSimple with feature_store endpoint#
The feature_store
endpoint is similar to the pkread
endpoint. But
instead of querying a specific table we are querying a feature view.
This feature view consists of one or several feature groups. Each
feature group is stored in a RonDB table. However the definition of the
feature view is also stored in RonDB in metadata tables. These tables
are cached in the REST API server. Thus the performance of the
feature_store
endpoint is very similar to the performance of the
pkread
endpoint.
The cache lookup is making a lookup in a local hash table to find the
metadata description. This means that the feature_store
request is a
bit more compact compared to the pkread
request.
BenchmarkSimple
benchmark means that the feature view fetches data
from only one feature group. Thus it performs a single key lookup.
Benchmark | Throughput | Median latency | 99% latency | Batch | Threads | CPU |
---|---|---|---|---|---|---|
Benchmark Simple | 22712/s | 0.04 ms | 0.16 ms | 1 | 1 | 40% |
Benchmark Simple | 37062/s | 0.05 ms | 0.08 ms | 1 | 2 | 80% |
Benchmark Simple | 52783/s | 0.07 ms | 0.18 ms | 1 | 4 | 164% |
Benchmark Simple | 73257/s | 0.09 ms | 0.32 ms | 1 | 8 | 268% |
Benchmark Simple | 128182/s | 0.12 ms | 0.25 ms | 1 | 16 | 580% |
Benchmark Simple | 181318/s | 0.16 ms | 0.47 ms | 1 | 32 | 820% |
Benchmark Simple | 212656/s | 0.25 ms | 0.94 ms | 1 | 64 | 930% |
BenchmarkBatchJoin with feature_store endpoint#
BenchmarkBatchJoin
is a bit more complex feature view with the feature
view making 2 key lookups in two feature groups (RonDB tables).
Benchmark | Throughput | Median latency | 99% latency | Batch | Threads | CPU |
---|---|---|---|---|---|---|
Benchmark BatchJoin | 17544/s | 0.06 ms | 0.08 ms | 1 | 1 | 52% |
Benchmark BatchJoin | 26791/s | 0.071 ms | 0.12 ms | 1 | 2 | 98% |
Benchmark BatchJoin | 40126/s | 0.1 ms | 0.18 ms | 1 | 4 | 202% |
Benchmark BatchJoin | 61825/s | 0.12 ms | 0.24 ms | 1 | 8 | 400% |
Benchmark BatchJoin | 101700/s | 0.15 ms | 0.29 ms | 1 | 16 | 650% |
Benchmark BatchJoin | 141879/s | 0.21 ms | 0.57 ms | 1 | 32 | 820% |
Benchmark BatchJoin | 159827/s | 0.34 ms | 1.17 ms | 1 | 64 | 900% |
BenchmarkBatchSimple with batchfeaturestore endpoint#
Benchmark | Throughput rows/sec | Median latency | 99% latency | Batch | Threads | CPU |
---|---|---|---|---|---|---|
Benchmark BatchSimple | 22038/s | 0.04 ms | 0.06 ms | 1 | 1 | 48% |
Benchmark BatchSimple | 36396/s | 0.05 ms | 0.07 ms | 2 | 1 | 55% |
Benchmark BatchSimple | 58417/s | 0.07 ms | 0.09 ms | 4 | 1 | 65% |
Benchmark BatchSimple | 84365/s | 0.09 ms | 0.12 ms | 8 | 1 | 72% |
Benchmark BatchSimple | 110229/s | 0.14 ms | 0.18 ms | 16 | 1 | 80% |
Benchmark BatchSimple | 123150/s | 0.25 ms | 0.32 ms | 32 | 1 | 86% |
Benchmark BatchSimple | 134622/s | 0.47 ms | 0.54 ms | 64 | 1 | 90% |
Benchmark BatchSimple | 180084/s | 0.70 ms | 0.79 ms | 128 | 1 | 93% |
Benchmark | Throughput rows/sec | Median latency | 99% latency | Batch | Threads | CPU |
---|---|---|---|---|---|---|
Benchmark BatchSimple | 324091/s | 0.18 ms | 0.32 ms | 4 | 16 | 290% |
Benchmark BatchSimple | 483860/s | 0.50 ms | 0.78 ms | 4 | 64 | 345% |
Benchmark BatchSimple | 511033/s | 0.75 ms | 1.14 ms | 4 | 100 | 360% |
Benchmark BatchSimple | 783054/s | 0.30 ms | 0.62 ms | 16 | 16 | 940% |
Benchmark BatchSimple | 1240156/s | 0.80 ms | 1.57 ms | 16 | 64 | 1260% |
Benchmark BatchSimple | 1257849/s | 1.15 ms | 2.31 ms | 16 | 100 | 1170% |
Benchmark BatchSimple | 978498/s | 0.51 ms | 0.78 ms | 32 | 32 | 1160% |
Benchmark BatchSimple | 1283009/s | 0.81 ms | 1.09 ms | 32 | 64 | 1310% |
Benchmark BatchSimple | 1920970/s | 1.52 ms | 5.48 ms | 32 | 100 | 2000% |