80 karma · joined March 20, 2025
ADBC: https://github.com/gizmodata/adbc-driver-quack JDBC: https://github.com/gizmodata/quack-jdbc
It also has a growing list of adapters - including: ODBC, JDBC, ADBC, dbt, SQLAlchemy, Metabase, Apache Superset and more.
We also just introduced a PySpark drop-in adapter - letting you run your Python Spark Dataframe workloads with GizmoSQL - for dramatic savings compared to Databricks for sub-5TB workloads.
Check it out at: https://gizmodata.com/gizmosql
We also have Bitmap aggregation capabilities for exact count distinct - something I worked with Oracle, Snowflake, Databricks, and DuckDB labs on implementing. It isn't as fast as HLL - but it is 100% accurate...
It is true you would need to run the instance(s) 24/7 to get the performance all day, the startup time over a couple minutes is not ideal. We have a lot of work to do on the engine, but it has been a fun learning experience...
DuckDB blog: https://duckdb.org/2025/10/09/benchmark-results-14-lts
I plan on getting GizmoEdge to production-grade quality eventually so folks can use it as a service or licensed software. There is a lot of work to do, though :)
You can have GizmoEdge reference cloud (remote) data as well, but of course that would be slower than what I did for the challenge here...
The data is on disk - on locally mounted NVMe on each worker - in the form of a DuckDB database file (once the worker has converted it from parquet). I originally kept the data in parquet, but the duckdb format was about 10 to 15% faster - and since I was trying to squeeze every drop of performance - I went ahead and did that...
Thanks for the questions.
GizmoEdge is not production yet - this was just to demonstrate the art of the possible. I wanted to divide-and-conquer a huge dataset with a lot of power...
There are so many variables to try - it is a little overwhelming...
I was out of quota in Azure - so I had to fit in the 63 nodes... :)
The data is in a publicly accessible bucket, but the requester is responsible for any egress fees...
I recently posted on Show HN about my company's product: GizmoSQL - here: https://news.ycombinator.com/item?id=43427671
Since posting that, I wanted to make it easier for folks to "kick the tires" of GizmoSQL at https://app.gizmodata.com
There you can run interactive SQL queries against a 1TB TPC-H database file. The "lineitem" table has nearly 6 billion records...
Right now, I just have a single Azure Cobalt 100 (arm64) VM running the database (I have a very small company) - so I may scale this up (or shut it down) - depending on usage/interest.
I built the front-end GUI with help from lovable.dev (I'm typically a back-end engineer). The middle-tier is a Python-based websocket proxy server I built for Arrow Flight SQL - which makes it easy to hook up a javascript frontend (i.e. a browser) to an Arrow Flight SQL database server (which GizmoSQL is). I haven't decided if I want to open-source this piece yet, but I am thinking about it...
---
Here are some more details on GizmoSQL - what it is, and what it does:
GizmoSQL allows you to run DuckDB or SQLite as a server (remotely) - harnessing the power of computers in the cloud - which typically have more CPUs, more memory, and faster storage (NVMe) than your laptop. In fact, running GizmoSQL on a modern arm64-based VM in Azure, GCP, or AWS allows you to run at terabyte scale - with equivalent (or better) performance - for a fraction of the cost of other popular platforms such as Snowflake, BigQuery, or Databricks SQL.
GizmoSQL is self-hosted (for now) - with a possible SaaS offering in the near future. It has these features to differentiate it from "base" DuckDB:
Run DuckDB or SQLite as a server (remote connectivity) * Concurrency - allows multiple users to work simultaneously - with independent, ACID-compliant sessions * Security * Authentication * TLS for encryption of traffic to/from the database * Static executable with Arrow Flight SQL, DuckDB, SQLite, and JWT-CPP built-in. There are no dependencies to install - just a single executable file to run * Free for use in development, evaluation, and testing * Easily containerized for running in the Cloud - especially in Kubernetes * Because it is powered by DuckDB - GizmoSQL can work with the popular open-source data formats - such as Iceberg, Delta Lake, Parquet, and more.
GizmoSQL performs very well (when running DuckDB as its back-end execution engine) - check out our graph comparing popular SQL engines for TPC-H at scale-factor 1 Terabyte - on the homepage at: https://gizmodata.com/gizmosql - there you will find it also costs far less than other options.
We would love to get your feedback on the software - it is easy to get started for free in two different ways:
For a limited time - try GizmoSQL online on our dime - with the SQL Query Navigator - it just requires a quick registration and sign-in to get going - at: https://app.gizmodata.com - where we have a read-only 1TB TPC-H database mounted for you to query in real-time. It is running on an Azure Cobalt 100 VM - with local NVMe SSD's - so it should be quite zippy.
Download and self-host GizmoSQL - using our Docker image or executables for Linux and macOS for both x86-64 and arm64 architectures. See our README at: https://github.com/gizmodata/gizmosql-public for details on how to easily and quickly get started that way
Thank you for taking a look at GizmoSQL. We are excited and are glad to answer any questions you may have!
Public facing repo (README): https://github.com/gizmodata/gizmosql-public?tab=readme-ov-f... HomePage: https://gizmodata.com/gizmosql ProductHunt: https://www.producthunt.com/posts/gizmosql?embed=true&utm_so... Try GizmoSQL online: https://app.gizmodata.com GizmoSQL in action video: https://youtu.be/QSlE6FWlAaM
I like your ideas, though. The server is written in C++.
I hope this helps...
Thanks!
I repeatedly ran out of memory during benchmark query execution when attempting to use a 3-node cluster - with the biggest nodes my trial would allow.
I suspect that ClickHouse may not support "out-of-core" processing, b/c of the memory issues I experienced, but I'm not a ClickHouse expert by any means. I may have configured something incorrectly - but it was definitely not a turn-key experience to try to get up and running with a 1TB benchmark.
I had tried a few months ago, so I should likely try again sometime with a newer version of ClickHouse.
I think the main advantages this has over other RDBMS's such as Postgres and MySQL is performance - due to the columnar / vector processing capabilities of DuckDB. I've run this in AWS with a i8g.16xlarge, and on Azure with a Standard_E64pds_v6 - and get amazing performance - due to the use of NVMe storage, lots of CPU (64) and memory (512GB) - for less than $4/hr in cloud VM cost.
This solution lets users use the large resources available on larger cloud VMs as an enterprise-grade server - for use with data notebooks, analytics dashboards, and more.
You can get performance that meets and exceeds many distributed systems on a much simpler architecture - reading from parquet datasets, assuming you've copied (cached) them on the local NVMe SSD storage. Of course - this has disadvantages - such as keeping the local copy in sync with the cloud storage (S3) - but it can be well worth it if you have a mostly read-only dataset (write-once, read-many). There is a small startup time penalty for hydrating the local storage - but I've seen throughput as high as 4GB/s for this initial copy...
I hope this helps. Thanks again for the question!
I opened a TPC-H SF1GB database with GizmoSQL, started 3 concurrent client sessions, and had each session run:
BEGIN TRANSACTION; INSERT INTO lineitem SELECT * FROM lineitem; COMMIT;
None of the 3 sessions were blocked - and all were able to insert into the table, and read the results of their inserts before committing.
It was very cool to see also that writes do NOT block reads from other sessions - the other sessions just could not see uncommitted data.
After committing in one session, the other sessions could see the data that was inserted.
I haven't stress tested the system to get limits, but I thought this little test would prove useful information for your question.
I'll work to do some benchmarking on concurrent inserts, etc.
Updates to the same data by multiple sessions behave a little differently - see details from page: https://duckdb.org/docs/stable/connect/concurrency.html
Thanks for your question!