Skip to content

Home

SedonaDB is an open-source single-node analytical database engine with geospatial as a first-class citizen. It aims to deliver the fastest spatial analytics query speed and the most comprehensive function coverage available.

SedonaDB is perfect for processing smaller to medium datasets on local machines or cloud instances. For distributed workloads, you can leverage the power of SedonaSpark, SedonaFlink, or SedonaSnow.

Architecture

SedonaDB Architecture

  • Columnar in-memory datasets

    • Spatial indexing
    • Spatial statistics
    • CRS tracking
    • Arrow format and zero serialization overhead
  • Spatial query optimization

    • Spatial-aware heuristic based optimization
    • Spatial-aware cost based optimization
  • Spatial query processing

    • Spatial range query, KNN query, spatial join query, KNN join query
    • Map algebra, NDVI, mask, zonal statistics

Raster functions are coming soon. We expect SedonaDB Raster will match all raster functions provided in SedonaSpark.

Key features

SedonaDB has several advantages:

  • 🚀 High Performance: Built in Rust for exceptional speed and memory efficiency
  • 🗺️ Comprehensive Spatial Toolkit: Supports both vector and raster functions in a single library
  • 🌍 CRS Propagation: Always maintains coordinate reference system information
  • 📁 Format Flexibility: Supports legacy and modern file formats including GeoParquet, Shapefile, GeoJSON
  • ⚡ Dual APIs: Python and SQL interfaces for seamless workflow integration
  • 🔧 Extensible: Easily customizable and extensible architecture
  • 🔗 Ecosystem Integration: Interoperable with PyArrow-compatible libraries like GeoPandas, DuckDB, and Polars

Performance Benchmarks

This is a performance benchmark comparing SedonaDB 0.1.0, DuckDB 1.4.0, and GeoPandas 1.1.1 using SpatialBench Queries 1-12 at Scale Factors 1 and 10. Details can be found at Apache Sedona SpatialBench.

SF1 Benchmark Results SF10 Benchmark Results

Install SedonaDB

Here's how to install SedonaDB with various build tools:

pip install "apache-sedona[db]"
install.packages("sedonadb", repos = "https://community.r-multiverse.org")

Run a query

SedonaDB offers a flexible query interface.

import sedona.db

sd = sedona.db.connect()
sd.sql("SELECT ST_Point(0, 1) as geom")
library(sedonadb)

sd_sql("SELECT ST_Point(0, 1) as geom")

Have questions?

Start a GitHub Discussion or join the Discord community and ask the developers any questions you may have.

We look forward to collaborating with you!