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-indexfeature)
§TTL Behavior
TTL is passive/lazy:
- Expired items return
Noneonget()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§
- Bounding
Box2D - A 2D axis-aligned bounding box.
- Bounding
Box3D - 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
- Polygon
Dynamic - Polygon
Dynamic3D - Rect
- An axis-aligned bounded 2D rectangle whose area is
defined by minimum and maximum
Coords. - Temporal
Bounding Box2D - A 2D bounding box with an associated timestamp.
- Temporal
Bounding Box3D - A 3D bounding box with an associated timestamp.
- Temporal
Point - A geographic point with an associated timestamp.
- Temporal
Point3D - A geographic point with an associated altitude and timestamp.