Seafowl is an analytical database for modern data-driven Web applications.
Its CDN and HTTP cache-friendly query execution API lets you deliver data to your visualizations, dashboards and notebooks by running SQL straight from the user's browser.
See this page for a comparison of Seafowl against other similar or adjacent projects, try out our quickstart or read on to learn more about Seafowl's features!
Seafowl is built around Apache DataFusion, a fast and extensible query execution framework. It uses Apache Parquet columnar storage, making it perfect for analytical workloads.
We have some benchmarks comparing Seafowl to DuckDB and PostgreSQL (standard and with Parquet support).
SELECT queries, Seafowl supports a large subset of the PostgreSQL dialect.
If there's something missing, you can
write a user-defined function for Seafowl in
anything that compiles to WebAssembly.
In addition, you can write data to Seafowl by uploading a CSV or a Parquet file, creating an external table or using standard SQL statements.
...at the edge
Seafowl is designed to be deployed to modern serverless environments. It ships as a single binary, making it simple to run anywhere.
Seafowl's architecture is inspired by modern cloud data warehouses like Snowflake or BigQuery, letting you separate compute and storage, which accommodates Delta Lake semantics. You can store Seafowl data in an object store like S3 or Minio and scale to zero. Or, you can build a self-contained Docker image with Seafowl and your data, letting you deploy your data to any platform that supports Docker.
Seafowl's query execution API follows HTTP cache semantics. This means you can put Seafowl behind a CDN like Cloudflare or a cache like Varnish and have query results cached and delivered to your users in milliseconds. Even without a cache, you can get the benefits of caching query results in your user's browser.
What Seafowl is not
An OLTP database
Seafowl doesn't support transactions, ACID properties, row-level locks or large volumes of single-row writes. It's best suited for analytical use cases: relatively rare writes and large volumes of reads that summarize data across whole tables.
An enterprise data warehouse
While Seafowl has a PostgreSQL endpoint, it's built with Web applications in mind. It doesn't support granular access controls or being connected to by BI software.
Try Splitgraph itself if you're interested in an end-to-end platform that can handle data ingestion from SaaS products, dbt transformations and providing an access point for analytics.
A Web framework
Seafowl doesn't run in the user's browser, although its query results get cached there.
You can query Seafowl using the browser's
A visualization library
Seafowl can execute queries for your dashboards and bring the data to them but it won't render the actual visualizations. For that, we can recommend some of the following products and libraries:
- Observable: see our Observable Seafowl database client and demo
Seafowl is an early-stage project with plenty of bugs and missing features. As we continue its development, we might break APIs or change storage formats in a backwards-incompatible way.
Feel free to check out our GitHub Issues page for more information on what's missing and our roadmap!
- See a quickstart in which you'll start Seafowl, load a dataset into it and query it
- Follow a tutorial that will teach you how to deploy Seafowl to Fly.io behind a cache or a CDN and query it with Observable
- Browse some example Docker Compose configurations