Crate spatio

Crate spatio 

Source
Expand description

Embedded spatio-temporal database with 2D/3D indexing, persistence, and lazy TTL support.

§Features

  • Spatial indexing: 2D/3D points, polygons, bounding boxes with R*-tree spatial indexing
  • Persistence: Append-only file (AOF) with configurable sync policies
  • Lazy TTL: Expired items are filtered on read, manual cleanup available
  • Atomic batches: Group multiple operations atomically
  • Temporal queries: Filter by creation time (with time-index feature)

§TTL Behavior

TTL is passive/lazy:

  • Expired items return None on get() and are skipped in queries
  • Items remain in storage until overwritten or manually cleaned with cleanup_expired()
  • No automatic background cleanup or deletion on insert
use spatio::{Point, Spatio, SetOptions};
use std::time::Duration;

let mut db = Spatio::memory()?;
db.insert("key", b"value", None)?;

// TTL example (lazy expiration)
let opts = SetOptions::with_ttl(Duration::from_secs(60));
db.insert("temp", b"expires_soon", Some(opts))?;

// Spatial example
let point = Point::new(-74.0060, 40.7128);
db.insert_point("cities", &point, b"NYC", None)?;
let nearby = db.query_within_radius("cities", &point, 1000.0, 10)?;

// Manual cleanup of expired items
let removed = db.cleanup_expired()?;

Re-exports§

pub use builder::DBBuilder;
pub use db::DB;
pub use error::Result;
pub use error::SpatioError;
pub use config::Config;
pub use config::DbStats;
pub use config::SetOptions;
pub use config::SyncMode;
pub use config::SyncPolicy;
pub use compute::spatial::DistanceMetric;
pub use config::HistoryEntry;
pub use config::HistoryEventKind;
pub use db::AtomicBatch;
pub use db::ExpiredStats;
pub use db::Namespace;
pub use db::NamespaceManager;
pub use compute::geojson;
pub use compute::validation;
pub use storage::MemoryBackend;
pub use storage::StorageBackend;
pub use storage::StorageOp;
pub use storage::StorageStats;
pub use storage::SnapshotConfig;
pub use storage::SnapshotFile;

Modules§

builder
Database builder for flexible configuration
compute
Query processing, spatial algorithms, validation, and GeoJSON conversion.
config
Configuration and database settings for Spatio
db
Core database implementation for Spatio.
error
Error types and result aliases for Spatio operations.
prelude
Common imports
storage
Storage backend abstraction for Spatio

Structs§

BoundingBox2D
A 2D axis-aligned bounding box.
BoundingBox3D
A 3D axis-aligned bounding box.
Point
A geographic point with longitude/latitude coordinates.
Point3d
A 3D geographic point with x, y (longitude/latitude) and z (altitude/elevation).
Polygon
A polygon with exterior and optional interior rings.
Polygon3D
PolygonDynamic
PolygonDynamic3D
Rect
An axis-aligned bounded 2D rectangle whose area is defined by minimum and maximum Coords.
TemporalBoundingBox2D
A 2D bounding box with an associated timestamp.
TemporalBoundingBox3D
A 3D bounding box with an associated timestamp.
TemporalPoint
A geographic point with an associated timestamp.
TemporalPoint3D
A geographic point with an associated altitude and timestamp.

Constants§

VERSION

Type Aliases§

Spatio
Trajectory
Trajectory3D