This guide helps you choose the optimal database platform for your BenchBox benchmarking needs based on your specific requirements, constraints, and objectives. Start by running uv run benchbox check-deps --matrix to see which optional connectors are installed locally, then use benchbox platforms install <name> and benchbox platforms enable <name> to activate the adapters that match your shortlist.
Curious about what's being evaluated next? Check the Development Roadmap for planned platform and benchmark additions.
Look for: Embedded databases with no external dependencies
- No additional installation or configuration required
- In-process execution without network overhead
- Suitable for learning and experimentation
Look for: Open-source platforms
- No licensing costs
- Run on your own hardware
- Minimal operational overhead
Look for: Scalable architectures (cloud or self-hosted)
- Column-oriented storage optimized for analytical workloads
- Horizontal scaling capabilities
- Advanced query optimization features
Look for: Managed cloud platforms
- No infrastructure management required
- Auto-scaling capabilities
- Enterprise support and SLAs available
Look for: Platforms with governance capabilities
- Advanced security and compliance features
- Role-based access control
- Audit logging and governance capabilities
Look for: DataFrame platform adapters
- Native DataFrame API benchmarking (no SQL)
- Compare libraries on identical workloads
- Measure performance of data science workflows
- See DataFrame Platforms Guide for details
benchbox run --platform polars-df --benchmark tpch --scale 0.1
benchbox run --platform pandas-df --benchmark tpch --scale 0.1BenchBox uses optional dependency extras to keep the core installation lightweight. Install just the connectors you need, or combine extras for broader coverage. Always wrap the extras specification in quotes when using shells like zsh.
| Extra | What it Enables | Install Command |
|---|---|---|
(none) |
SQLite only (core package, no DuckDB) | uv add benchbox |
[duckdb] |
DuckDB for local analytics | uv add benchbox --extra duckdb |
[cloudstorage] |
Cloudpathlib helpers for S3, GCS, Azure paths | uv add benchbox --extra cloudstorage |
[cloud] |
BigQuery, Databricks SQL, Redshift, Snowflake connectors | uv add benchbox --extra cloud |
[databricks] |
Databricks SQL Warehouses + Unity Catalog tooling | uv add benchbox --extra databricks |
[bigquery] |
BigQuery client libraries + Google Cloud Storage support | uv add benchbox --extra bigquery |
[redshift] |
Redshift connector, boto3, and cloud storage helpers | uv add benchbox --extra redshift |
[snowflake] |
Snowflake connector + cloud storage helpers | uv add benchbox --extra snowflake |
[trino] |
Trino/Starburst distributed SQL connector | uv add benchbox --extra trino |
[presto] |
PrestoDB (Meta) distributed SQL connector | uv add benchbox --extra presto |
[clickhouse] |
ClickHouse native driver | uv add benchbox --extra clickhouse |
[all] |
Every connector and helper listed above | uv add benchbox --extra all |
Need to double-check your environment? Run benchbox check-deps --matrix for the full installation matrix or benchbox check-deps --platform <name> for targeted guidance.
- Trino: Community-driven fork; uses
trinoPython client andX-Trino-*headers. Compatible with Starburst deployments. - PrestoDB: Original project maintained by Meta; uses
presto-python-clientwithX-Presto-*headers. Compatible with Meta ecosystem tools. - Amazon Athena: AWS managed service built on the Presto/Trino lineage; serverless execution without self-managed coordinators.
Before diving into platform specifics, consider whether SQL or DataFrame APIs better match your benchmarking needs.
Choose SQL platforms (DuckDB, BigQuery, Snowflake, etc.) when:
- You're benchmarking database systems - Comparing cloud data warehouses or analytical databases
- Your production workloads use SQL - Testing the same queries your applications execute
- You need distributed execution - Cloud platforms automatically scale compute
- Your team thinks in SQL - Familiar with SQL query patterns and optimization
benchbox run --platform duckdb --benchmark tpch --scale 1
benchbox run --platform snowflake --benchmark tpch --scale 100Choose DataFrame platforms (Polars-df, Pandas-df, PySpark-df, etc.) when:
- You're benchmarking DataFrame libraries - Comparing Polars vs Pandas vs PySpark
- Your production code uses DataFrame APIs - Data science workflows, ML pipelines
- You want to compare paradigms - SQL vs native DataFrame performance
- You need lazy evaluation control - Fine-grained control over execution plans
benchbox run --platform polars-df --benchmark tpch --scale 1
benchbox run --platform pandas-df --benchmark tpch --scale 1| Aspect | SQL Platforms | DataFrame Platforms |
|---|---|---|
| Query Format | SQL strings | Native API calls (method chaining) |
| Execution | Database engine | Library (in-process or distributed) |
| Scale Limit | Petabyte+ (cloud) | Varies: SF 10-100 (single-node), SF 1000+ (PySpark) |
| Use Case | Production analytics, data warehousing | Data science, ML pipelines, library evaluation |
| Debugging | EXPLAIN plans | Step-through execution, lazy plan inspection |
| Type Safety | Runtime (SQL parsing) | Some compile-time (IDE support) |
| Platform | CLI Name | Best For | Max Scale Factor |
|---|---|---|---|
| Polars | polars-df |
High-performance single-node analytics | SF 100 (lazy eval) |
| Pandas | pandas-df |
Data science prototyping, compatibility | SF 10 (memory-bound) |
| PySpark | pyspark-df |
Distributed processing, big data | SF 1000+ (cluster) |
| DataFusion | datafusion-df |
Arrow-native workflows, Rust performance | SF 50+ |
| LakeSail | lakesail-df |
Rust Spark replacement (DataFusion core) via Spark Connect | SF 100+ |
For detailed DataFrame platform documentation, see the DataFrame Platforms Guide.
Two native-code engines speak the Spark SQL / DataFrame API without running Spark's full JVM execution path. Both use the standard pyspark client via Spark Connect.
| Platform | CLI Name | Execution Model | Local Platform Support | When to Pick |
|---|---|---|---|---|
| LakeSail Sail | lakesail (SQL) / lakesail-df (DF) |
Rust/DataFusion - full drop-in replacement, no JVM | Linux, macOS | You want to migrate off Spark with zero code changes, or benchmark SQL + DataFrame on the same engine. |
| Apache Gluten + Velox | velox |
Plugin - Spark keeps its scheduler; Velox runs the physical plan in C++ | Linux only (Docker on macOS/Windows) | You want to accelerate an existing Spark deployment without changing client code; unsupported operators fall back to JVM. |
benchbox run --platform lakesail --benchmark tpch --scale 1.0
benchbox run --platform lakesail-df --benchmark tpch --scale 1.0
benchbox run --platform velox --benchmark tpch --scale 0.1 \
--platform-option gluten_jar_path=/opt/gluten-velox-bundle-spark4.0_2.13-linux_amd64-1.6.0.jar
benchbox run --platform velox:remote \
--platform-option endpoint=sc://localhost:50051 \
--benchmark tpch --scale 0.1The first command runs LakeSail with SQL and the second with the DataFrame API. The first Velox command runs locally on Linux with a Gluten bundle jar. The second connects to a Gluten-enabled Spark Connect server, for example one running in Docker.
See LakeSail Platform Guide, Velox Platform Guide, and the Comparison Matrix for deeper architectural and deployment detail.
Platform Options: DuckDB, DataFusion, SQLite
from benchbox import TPCH
from benchbox.platforms.duckdb import DuckDBAdapter
benchmark = TPCH(scale_factor=0.1)
adapter = DuckDBAdapter()
results = adapter.run_benchmark(benchmark)
from benchbox.platforms.datafusion import DataFusionAdapter
adapter = DataFusionAdapter(
memory_limit="4G",
data_format="parquet"
)
results = adapter.run_benchmark(benchmark)Scale factor 0.1 is about 100MB of data. DuckDBAdapter() processes data in memory.
Characteristics:
- No additional setup or configuration required
- Embedded databases suitable for small datasets
- Free and lightweight
- Commonly used in CI/CD pipelines
- DataFusion offers PyArrow integration for Arrow-based workflows
Platform Options: BigQuery, ClickHouse, DataFusion, DuckDB
adapter = DuckDBAdapter(
database_path="analytics.duckdb",
memory_limit="16GB"
)
from benchbox.platforms.clickhouse import ClickHouseAdapter
adapter = ClickHouseAdapter(
host="clickhouse-cluster",
max_memory_usage="32GB",
max_threads=16
)Characteristics:
- Balance of performance and cost
- Support for complex analytical queries
- Moderate resource requirements
Platform Options: BigQuery, Databricks SQL, Redshift, Snowflake
from benchbox.platforms.snowflake import SnowflakeAdapter
adapter = SnowflakeAdapter(
warehouse_size="LARGE",
database="analytics_benchmarks"
)
from benchbox.platforms.bigquery import BigQueryAdapter
adapter = BigQueryAdapter(
project_id="analytics-project",
dataset_id="large_scale_benchmarks"
)Characteristics:
- Support for petabyte-scale analytics
- Auto-scaling infrastructure
- Managed cloud data warehouse platforms
| Platform | Cost Structure | Ongoing Costs |
|---|---|---|
| DuckDB | Completely free | Hardware only |
| DataFusion | Completely free | Hardware only |
| SQLite | Completely free | Hardware only |
| ClickHouse | Open source | Infrastructure costs |
Example Setup:
adapter = DuckDBAdapter(
database_path="cost_effective.duckdb",
memory_limit="8GB"
)
from benchbox.platforms.datafusion import DataFusionAdapter
adapter = DataFusionAdapter(
memory_limit="8G",
data_format="parquet"
)The DuckDB example sets a memory limit so it uses available RAM efficiently, and the DataFusion example reads Parquet, which is faster than CSV.
| Platform | Pricing Model | Cost Control |
|---|---|---|
| BigQuery | $6.25/TiB queried (US/EU/Asia multi-region) | Query limits, slots |
| Databricks SQL | DBU consumption | Auto-termination |
Cost-Optimized Configuration:
adapter = BigQueryAdapter(
maximum_bytes_billed=1000000000,
job_priority="BATCH",
query_cache=True
)maximum_bytes_billed=1000000000 caps each query at 1GB billed. job_priority="BATCH" lowers cost. query_cache=True reuses earlier results.
| Platform | Pricing Model | Cost Optimization |
|---|---|---|
| Snowflake | Warehouse time | Auto-suspend/resume |
| Redshift | Cluster hours | Reserved instances |
Cost-Optimized Configuration:
adapter = SnowflakeAdapter(
warehouse_size="MEDIUM",
auto_suspend=60,
auto_resume=True
)auto_suspend=60 suspends the warehouse after one minute of inactivity.
Platform Options: ClickHouse, DuckDB
adapter = DuckDBAdapter(
memory_limit="32GB",
thread_limit=None
)
adapter = ClickHouseAdapter(
max_threads=32,
max_memory_usage="64GB",
compression=True
)The DuckDB example keeps data in memory and uses all CPU cores (thread_limit=None). The ClickHouse example enables compression to reduce network I/O.
Characteristics:
- In-process or local execution reduces network overhead
- Column-oriented storage optimized for analytical queries
- Query latency depends on data volume, query complexity, and hardware resources
Platform Options: BigQuery, Databricks SQL, Snowflake
adapter = BigQueryAdapter(
job_priority="INTERACTIVE",
query_cache=False,
location="US"
)
adapter = SnowflakeAdapter(
warehouse_size="X-LARGE",
multi_cluster_warehouse=True,
auto_suspend=600
)BigQuery is serverless and scales automatically. Here query_cache=False forces fresh results on every run, and location="US" selects a multi-region deployment. The Snowflake example uses multi-cluster scaling and a 10-minute auto-suspend, which suits sustained workloads.
Performance Characteristics:
- Concurrent user support: Hundreds to thousands of users
- Auto-scaling: Automatic resource adjustment available
- Query queuing: Workload management capabilities
Platform Options: BigQuery, Snowflake
adapter = BigQueryAdapter()BigQuery is a fully managed serverless service with no infrastructure to manage, automatic optimization, and built-in monitoring.
Characteristics:
- No database administration required
- Automatic updates and maintenance
- Built-in monitoring and alerting
- High uptime SLAs (typically 99.9%+)
Platform Options: ClickHouse (managed), Databricks SQL, Redshift
adapter = DatabricksAdapter(
cluster_size="large",
auto_terminate_minutes=30,
runtime_engine="PHOTON"
)auto_terminate_minutes=30 controls cost by stopping idle clusters, and PHOTON is the vectorized query engine.
Characteristics:
- Managed infrastructure with user control
- Configurable performance settings
- Access to advanced features
- Professional support available
Platform Options: ClickHouse (self-hosted), DuckDB
adapter = ClickHouseAdapter(
host="your-optimized-cluster.company.com",
)A self-managed deployment gives you custom cluster configuration, your own monitoring and alerting, and complete control of the data.
Characteristics:
- Complete infrastructure control
- Custom optimization opportunities
- Data locality and privacy
- No vendor dependencies
Platform Options: DuckDB
adapter = DuckDBAdapter()
benchmark = TPCH(scale_factor=1)
results = adapter.run_benchmark(benchmark)Characteristics:
- No database administration knowledge required
- Comprehensive documentation and community
- Reproducible results across environments
- Focus on analysis rather than infrastructure
Platform Options: BigQuery, ClickHouse, or DuckDB
adapter = BigQueryAdapter(
project_id="team-analytics-project",
dataset_id="shared_benchmarks",
)A shared Google Cloud project provides collaboration features and cost visibility and controls.
Characteristics:
- Shared access and collaboration capabilities
- Cost transparency and controls
- Minimal administrative overhead
- Scalable as team grows
Platform Options: Databricks SQL, Snowflake
adapter = SnowflakeAdapter()Snowflake offers role-based access control, multiple warehouses for different workloads, query result sharing, and usage monitoring and governance.
Characteristics:
- Advanced security and governance
- Workload isolation capabilities
- Resource management features
- Enterprise support available
Platform Options: Databricks SQL, Redshift, Snowflake
adapter = DatabricksAdapter()Databricks provides Unity Catalog for governance, multiple workspaces, advanced security features, and enterprise support with SLAs.
Characteristics:
- Enterprise security and compliance features
- Advanced governance capabilities
- Professional services and support
- Integration with enterprise tools
All platforms supported. DuckDB and Databricks SQL offer native Python integration:
import duckdb
import pandas as pd
df = pd.read_csv("data.csv")
result = duckdb.query("SELECT * FROM df WHERE value > 100").to_df()
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("BenchBox").getOrCreate()The first half shows DuckDB reading a pandas DataFrame directly. The second half shows the Spark and Python integration that Databricks SQL uses.
Platform Options: BigQuery, Redshift, Snowflake
adapter = BigQueryAdapter()BigQuery, Redshift, and Snowflake support ANSI SQL with platform-specific extensions, platform-managed optimization, and a standard SQL interface.
Platform Options: ClickHouse, Databricks SQL
- ClickHouse has client libraries for Python, Java, Go, C++, and JavaScript, an HTTP API usable from any language, and JDBC/ODBC drivers.
- Databricks SQL supports the Spark ecosystem languages (Scala, Python, Java, R, and SQL), REST APIs, and a notebook interface.
AWS-integrated platform: Redshift Other options: ClickHouse (EKS), Databricks SQL, DuckDB, Snowflake
adapter = RedshiftAdapter()Redshift integrates with S3 for data loading, IAM for security, CloudWatch for monitoring, and Lambda for automation.
Google Cloud-integrated platform: BigQuery Other options: ClickHouse (GKE), Databricks SQL, DuckDB, Snowflake
adapter = BigQueryAdapter(
project_id="gcp-project",
location="US",
)Use location="EU" instead of "US" for data residency in Europe. BigQuery integrates with Cloud Storage, Cloud Functions, Dataflow, and AI/ML services.
Azure-integrated platforms: Azure Synapse Analytics, Microsoft Fabric Multi-cloud platforms on Azure: Databricks SQL, Snowflake Other options: DuckDB
from benchbox.platforms.azure_synapse import AzureSynapseAdapter
adapter = AzureSynapseAdapter()
from benchbox.platforms.fabric_warehouse import FabricWarehouseAdapter
adapter = FabricWarehouseAdapter()
adapter = DatabricksAdapter(...)
adapter = SnowflakeAdapter(...)- Azure Synapse Analytics supports dedicated or serverless SQL pools, PolyBase staging, and Azure AD authentication.
- Microsoft Fabric Warehouse uses a T-SQL interface through pyodbc, Entra ID authentication, and OneLake staging.
- Databricks and Snowflake are multi-cloud platforms, available on Azure infrastructure as on the other two clouds.
See the Azure Platforms page for details on all Azure integrations including Spark adapters (fabric-spark, synapse-spark).
Multi-cloud platforms: Databricks SQL, Snowflake Cloud-agnostic options: ClickHouse, DuckDB
adapter = DatabricksAdapter()Databricks is available on AWS, Azure, and GCP with a consistent interface across clouds, which reduces cloud vendor lock-in.
Self-hosted options: ClickHouse, DuckDB Hybrid options: Databricks SQL (private cloud)
adapter = ClickHouseAdapter(
host="on-prem-cluster.company.com",
)An on-premises deployment gives complete data control, no cloud dependencies, and custom security policies.
Learning/Research
├── Small data (< 1GB): Embedded databases (DuckDB, SQLite)
└── Large data (> 1GB): DuckDB or cloud platforms with free tiers
Development/Testing
├── Local development: Embedded databases (no dependencies)
├── CI/CD pipeline: DuckDB or SQLite (embedded)
└── Integration testing: DuckDB (fast setup)
Production Analytics
├── Open-source: ClickHouse, DuckDB (self-hosted)
└── Cloud-native: Cloud platforms (managed services)
Performance Benchmarking
├── Cross-platform comparison: Multiple platforms
└── Single-platform optimization: Platform-specific testing
1. Data scale considerations:
├── < 1GB → Embedded databases (DuckDB, SQLite)
├── 1-100GB → ClickHouse, DuckDB, or cloud platforms
└── > 100GB → Cloud platforms (BigQuery, Databricks SQL, Redshift, Snowflake)
2. Budget model:
├── No cost → ClickHouse (self-hosted), DuckDB, SQLite
├── Pay-per-use → BigQuery, Databricks SQL (usage-based)
└── Predictable costs → Redshift, Snowflake (provisioned)
3. Team size:
├── Individual → DuckDB (minimal setup)
├── Small team → Cloud platforms with shared access
├── Medium team → Cloud platforms with governance features
└── Large enterprise → Cloud platforms with enterprise features
4. Cloud environment:
├── AWS → Redshift (integrated), or Databricks SQL, Snowflake (multi-cloud)
├── Azure → Databricks SQL, Snowflake (multi-cloud)
├── Google Cloud → BigQuery (integrated), or Databricks SQL, Snowflake (multi-cloud)
├── Multi-cloud → Databricks SQL, Snowflake
└── On-premises → ClickHouse, DuckDB (self-hosted)
5. Architecture characteristics:
├── In-process columnar → ClickHouse, DuckDB (no network overhead)
├── Serverless/auto-scaling → BigQuery, Snowflake (elastic compute)
└── Managed clusters → Cloud platforms (various options)
dev_adapter = DuckDBAdapter()
test_adapter = DuckDBAdapter(database_path="test.duckdb")
prod_adapter = SnowflakeAdapter(
warehouse_size="LARGE",
database="PRODUCTION"
)
benchmark = TPCH(scale_factor=0.1)
prod_benchmark = TPCH(scale_factor=100)Development is fast, local, and free. Testing is automated and reproducible. Production is scalable and managed. The same benchmark code runs in every environment, with a small scale factor for development and testing and a large one for production.
platforms = [
("ClickHouse", ClickHouseAdapter(host="test-cluster")),
("DuckDB", DuckDBAdapter()),
("Snowflake", SnowflakeAdapter(warehouse_size="MEDIUM")),
]
benchmark = TPCH(scale_factor=1)
results = {}
for name, adapter in platforms:
results[name] = adapter.run_benchmark(benchmark)
print(f"{name}: {results[name].total_time:.2f}s")Platforms are listed in alphabetical order. After the loop, compare the query results across platforms for consistency.
adapter = DuckDBAdapter(memory_limit="16GB")
results = adapter.run_benchmark(benchmark)
if results.total_time > target_sla:
adapter = SnowflakeAdapter(warehouse_size="LARGE")
results = adapter.run_benchmark(benchmark)Start with the cost-effective option and upgrade to a cloud platform only when the SLA is missed. Keep monitoring costs and performance over time.
sqlite_adapter = SQLiteAdapter()
small_benchmark = ReadPrimitivesBenchmark(scale_factor=0.001)
sqlite_results = sqlite_adapter.run_benchmark(small_benchmark)
duckdb_adapter = DuckDBAdapter()
medium_benchmark = TPCH(scale_factor=1)
duckdb_results = duckdb_adapter.run_benchmark(medium_benchmark)
prod_adapter = SnowflakeAdapter(warehouse_size="LARGE")
prod_benchmark = TPCH(scale_factor=100)
prod_results = prod_adapter.run_benchmark(prod_benchmark)Phase 1 validates on SQLite, which is suitable for testing only. Phase 2 tests scale with DuckDB. Phase 3 deploys to production on your chosen cloud platform: Snowflake as shown, BigQueryAdapter(project_id="production"), or RedshiftAdapter(cluster_identifier="prod-cluster").
dev_config = {"scale_factor": 0.1}
dev_adapter = DuckDBAdapter()
migration_config = {"scale_factor": 1}
cloud_adapter = DatabricksAdapter(
cluster_size="medium",
auto_terminate_minutes=30
)
prod_config = {"scale_factor": 100}
prod_adapter = DatabricksAdapter(
cluster_size="large",
runtime_engine="PHOTON"
)Develop on DuckDB, validate the migration on any cloud platform (auto_terminate_minutes=30 protects against idle cost), then deploy to production.
-
Using SQLite for large datasets
adapter = SQLiteAdapter() benchmark = TPCH(scale_factor=10)
SQLite with TPC-H at scale factor 10 will be extremely slow.
-
Using expensive platforms for development
adapter = SnowflakeAdapter(warehouse_size="4X-LARGE") benchmark = TPCH(scale_factor=0.01)
A 4X-Large Snowflake warehouse is expensive and wasted on a tiny dataset.
-
Ignoring cost controls
adapter = BigQueryAdapter()
This sets no
maximum_bytes_billed, so pay-per-query platforms risk unexpectedly large bills.
-
Progressive scaling approach
if dataset_size < 1_000_000: adapter = DuckDBAdapter() elif dataset_size < 100_000_000: adapter = ClickHouseAdapter() else: adapter = BigQueryAdapter()
Start small and scale up as needed.
-
Cost-aware cloud usage
adapter = BigQueryAdapter( maximum_bytes_billed=5_000_000_000, job_priority="BATCH" )
Always set cost controls: here a 5GB billing limit and the lower-cost batch priority.
-
Environment-specific configurations
import os if os.getenv("ENVIRONMENT") == "development": adapter = DuckDBAdapter() elif os.getenv("ENVIRONMENT") == "testing": adapter = DuckDBAdapter(database_path="test.duckdb") else: adapter = SnowflakeAdapter(warehouse_size="LARGE")
-
DuckDB is included by default
uv add benchbox
from benchbox import TPCH from benchbox.platforms.duckdb import DuckDBAdapter benchmark = TPCH(scale_factor=0.1) adapter = DuckDBAdapter() results = adapter.run_benchmark(benchmark)
-
Scale factor options
- 0.001 (1MB): Rapid iteration
- 0.01 (10MB): Quick testing
- 0.1 (100MB): SF0.1 testing
- 1.0 (1GB): Medium-scale testing
-
Available benchmarks
- TPC-H: Industry-standard analytical benchmark
- ClickBench: Real-world analytical queries
- Primitives: Fundamental operation testing
- Evaluate cloud platforms with test datasets
- Configure cost controls and monitoring
- Validate with realistic data volumes
- Implement security and governance policies
- Plan for capacity and growth
-
Match platform to workload characteristics
- OLAP-heavy: ClickHouse, BigQuery
- Mixed workloads: Snowflake, Databricks SQL
- Development: DuckDB
-
Use appropriate scale factors for testing
- Development: 0.001-0.01
- Integration testing: 0.1-1
- Performance testing: 10-100+
-
Use platform-specific optimizations
- DuckDB: Memory sizing, threading
- ClickHouse: Partitioning, ordering
- BigQuery: Partitioning, clustering
- Snowflake: Warehouse sizing, clustering
- Implement cost controls early
- Monitor usage patterns and optimize
- Use development/production separation
- Consider reserved capacity for predictable workloads
- Automate deployments and scaling
- Implement proper monitoring and alerting
- Plan for disaster recovery and backup
- Document configuration and procedures
Platform selection depends on your specific requirements. Common platform choices by use case:
- Initial setup: DuckDB (included by default, no dependencies)
- No-cost options: ClickHouse (self-hosted), DuckDB, SQLite
- In-process execution: ClickHouse, DuckDB (columnar architecture, no network overhead)
- Enterprise teams: Cloud platforms with governance features
- Cloud-native deployments: BigQuery, Databricks SQL, Redshift, Snowflake (managed services)
- Self-hosted deployments: ClickHouse, DuckDB (full control)
- Drop-in Spark replacement (no JVM): LakeSail Sail (
lakesail,lakesail-df) - Rust/DataFusion engine via Spark Connect - Accelerate existing Spark jobs: Apache Gluten + Velox (
velox) - native C++ operators, Linux-only local mode (Docker on macOS/Windows)
- Single-node analytics: Polars-df (multi-threaded, lazy evaluation)
- Data science prototyping: Pandas-df (familiar API, ecosystem compatibility)
- Distributed big data: PySpark-df (cluster-scale processing)
- Arrow-native workflows: DataFusion-df (Rust-based, Arrow integration)
- Spark-compatible Rust engine: LakeSail-df (via Spark Connect, DataFusion core)
- GPU acceleration: cuDF-df (NVIDIA RAPIDS, coming soon)
Install BenchBox with the [duckdb] extra for SQL benchmarking. Polars is included for DataFrame benchmarking. Cloud platforms and additional DataFrame libraries can be added as requirements grow.
- DataFrame Platforms Guide - Native DataFrame API benchmarking (Polars, Pandas, PySpark, DataFusion)
- Platform Quick Reference - Quick setup guides for all platforms
- Platform Comparison Matrix - Feature and performance comparison
- ClickHouse Local Mode - Running ClickHouse locally
- Development Roadmap - Planned platform and benchmark additions
- Cloud Storage - Cloud storage integration (S3, GCS, Azure)
- Compression - Data compression strategies
- Getting Started Guide - Run your first benchmark in 5 minutes
- Installation Guide - Installation and setup
- CLI Quick Reference - Command-line usage
- Examples - Code snippets and patterns
- Architecture Overview - How BenchBox works
- Workflow Patterns - Common workflows (dev, cloud, CI/CD)
- Data Model - Result schemas and analysis
- Glossary - Platform and benchmark terminology
- Benchmark Catalog - Available benchmarks
- TPC-H Benchmark - Standard analytical benchmark
- TPC-DS Benchmark - Complex decision support
- ClickBench - Real-world analytics
- Performance Guide - Performance tuning and optimization
- Custom Benchmarks - Creating custom benchmarks
- Configuration Handbook - Advanced configuration options
- Dry Run Mode - Preview queries without execution