//! Lance columnar storage backend
//!
//! This module provides a high-performance storage backend built on the
//! [Lance columnar format](https://github.com/lancedb/lance), replacing
//! the legacy JSONL-based storage with a modern, AI-optimized format.
//!
//! # Key Benefits
//!
//! - **100x faster random access** compared to JSONL (sequential scan)
//! - **Column pruning** — reads only needed columns, reducing I/O
//! - **Built-in versioning** — automatic snapshots with time-travel queries
//! - **Zero-copy schema evolution** — add/remove columns without data migration
//! - **Unified storage** — vectors + scalars + metadata in one dataset
//! - **Arrow interop** — zero-copy integration with Pandas, Polars, DuckDB
//!
//! # Architecture
//!
//! ```text
//! ┌────────────────────────┐     ┌─────────────────────────┐
//! │   StorageBackend trait  │     │   VectorBackend trait    │
//! │    (storage/backend.rs) │     │ (storage/vector_backend) │
//! └──────────┬─────────────┘     └──────────┬──────────────┘
//!            │ implements                    │ implements
//! ┌──────────▼─────────────┐     ┌──────────▼──────────────┐
//! │  LanceStorageBackend   │     │  LanceVectorBackend     │
//! │  ├─ arrow_convert.rs   │     │  ├─ ANN search          │
//! │  └─ lance_backend.rs   │     │  └─ IVF_PQ indexing     │
//! └────────────────────────┘     └─────────────────────────┘
//! ```

pub mod arrow_convert;
pub mod lance_backend;
pub mod lance_collection;
pub mod lance_multimodal;
pub mod lance_vector;
pub mod object_store_config;
pub mod query_node;
pub mod scalar_index;

pub use arrow_convert::{memory_node_to_record_batch, record_batch_to_memory_nodes, memory_node_arrow_schema};
pub use lance_backend::LanceStorageBackend;
pub use lance_collection::LanceCollectionManager;
pub use lance_multimodal::LanceMultimodalBackend;
pub use lance_vector::LanceVectorBackend;
pub use object_store_config::{ObjectStoreConfig, ObjectStoreType, detect_store_type, is_remote_uri};
pub use query_node::{QueryNode, QueryNodeConfig, NodeRole, NodeStatus, QueryNodeMetricsSnapshot, CacheStats};
pub use scalar_index::{ScalarIndexDef, default_scalar_indexes, ensure_scalar_indexes};