connect URI:
Object-storage configuration
Credentials go instorage_options (storageOptions in Node.js), keyed by the
standard object_store config strings — aws_*
for S3, azure_* for Azure Blob (the same names the AWS and Azure SDKs use).
Infino reads no credentials from the environment; omit them to use ambient cloud
identity (an IAM instance role or Azure managed identity).
The full set is whatever
object_store accepts for the backend; an unknown key
is rejected at connect. For an S3-compatible endpoint (MinIO / R2 / Ceph), set
aws_endpoint (add aws_allow_http: "true" for plain HTTP) alongside the
credentials.
Pass
validate (with_validate(true) in Rust) to probe the backend during
connect, so wrong credentials or an unreachable bucket fail there instead of
on the first query. The local cache keeps hot superfiles on disk so warm queries
don’t re-fetch from object storage.Connect options
Connection memory budget
connection_memory_budget_bytes caps the RAM (heap) a connection may hold while it
works, the transient memory used to ingest data and run queries over it (keyword, vector,
hybrid, or SQL). It is per connection: one ceiling shared by every table on the
connection and by all its work, tracked as a single running total. By default it is unset,
usage is measured but never enforced; pass a byte value to enforce it.
When a request would cross the limit, Infino tries to stay within budget before it fails:
- SQL that can spill (sorts, aggregations, joins) writes intermediate state to disk and keeps going, so the query still completes, just slower.
- Work that can’t spill (a vector search’s cold fetch, an ingest build) is refused before it allocates, returning a recoverable error rather than risking an out-of-memory crash.
ConnectionMemoryBudgetError
in Python, a thrown Error in Node, and InfinoError::OverBudget in Rust. Catch it, then
narrow the query, split the ingest, or raise the budget.
This budget is RAM only. It is separate from
cache_budget_bytes, which bounds the local
disk cache, and it does not cap memory-mapped reads (the OS reclaims those on its own).
Give each independent workload its own connection so their budgets stay isolated rather
than sharing one ceiling. Omit it (or pass 0) to only measure usage, never enforce.Limitations
memory://is ephemeral and can’t be mutated.update/deleteneed a path ors3://URI.- Object-storage reads are cached locally. Cold queries fetch from the store; size the cache (
cache_budget_bytes) for your working set.
