Manage tenant states & temperature
Overview
Storage resources are grouped into tiers. Each tier has different performance characteristics and costs:
Tier | Location | Speed | Cost |
---|---|---|---|
Hot | RAM | Fastest access | Most expensive |
Warm | Disk | Medium speed | Medium price |
Cold | Cloud Storage | Slowest access | Least expensive |
The pricing difference between Hot and Cold tiers is significant. Cloud storage is several orders of magnitude cheaper than RAM.
In multi-tenant collections, you can change tenant states (Active
, Inactive
, Offloaded
) to move data between storage tiers. This allows granular trade-offs between cost, resource availability, and readiness.
Manage vector index resource temperature
The vector index type affects its default resource type.
HNSW
index (default) - uses the vector index in RAM, a Hot resource.Flat
index - uses the vector index on disk, a Warm resource.Dynamic
index - starts as a flat index (using a Warm resource), then switches to an HNSW index (a Hot resource) at a predetermined threshold.
Tenant States Overview
There are three tenant states: Active
, Inactive
and Offloaded
.
Tenant state | CRUD & Queries | Vector Index | Inverted Index | Object Data | Time to Activate | Description |
---|---|---|---|---|---|---|
Active (default) | Yes | Hot/Warm | Warm | Warm | None | Tenant is available for use |
Inactive | No | Warm | Warm | Warm | Fast | Tenant is locally stored but not available for use |
Offloaded | No | Cold | Cold | Cold | Slow | Tenant is stored in cloud storage and not available for use |
Tenant states are eventually consistent. Read more
Active
An Active
tenant is available for queries and CRUD operations. Depending on the vector index type it uses either hot or warm resources.
The tenant's object data and inverted index are stored on disk, using warm
resources.
Inactive
An Inactive
tenant is not available for queries nor CRUD operations.
The tenant's object data, vector index and inverted index are stored on disk, using warm
resources. This can lower Weaviate's memory requirements compared to active tenants that use hot
resources.
Since the tenant is stored locally, inactive tenants can be activated quickly.
Offloaded
As of Weaviate v1.26.0
, tenants can only be offloaded to cold storage in AWS S3. Additional storage options may be added in future releases.
To offload a tenant, use the offload-s3
module.
An offloaded
tenant is not available for queries or CRUD operations.
The tenant's object data, vector index and inverted index are stored on the cloud, using cold
resources. Since the tenant is stored remotely, there is a delay when activating an offloaded tenant.
Activate tenant
To activate an INACTIVE
tenant from disk, or to onload and activate an OFFLOADED
tenant from cloud, call:
- Python Client v4
- JS/TS Client v3
from weaviate.classes.tenants import Tenant, TenantActivityStatus
multi_collection = client.collections.get("MultiTenancyCollection")
multi_collection.tenants.update(tenants=[
Tenant(
name="tenantA",
activity_status=TenantActivityStatus.ACTIVE
)
])
const multiCollection = client.collections.get('MultiTenancyCollection')
await multiCollection.tenants.update({
name: 'tenantA',
activityStatus: 'ACTIVE'
})
Deactivate tenant
To deactivate an ACTIVE
tenant, or to onload an OFFLOADED
tenant from cloud (without activating it), call:
- Python Client v4
- JS/TS Client v3
from weaviate.classes.tenants import Tenant, TenantActivityStatus
multi_collection = client.collections.get("MultiTenancyCollection")
multi_collection.tenants.update(tenants=[
Tenant(
name="tenantA",
activity_status=TenantActivityStatus.INACTIVE
)
])
const multiCollection = client.collections.get('MultiTenancyCollection')
await multiCollection.tenants.update({
name: 'tenantA',
activityStatus: 'INACTIVE'
})
Offload tenant
To offload an ACTIVE
or INACTIVE
tenant to cloud, call:
- Python Client v4
- JS/TS Client v3
from weaviate.classes.tenants import Tenant, TenantActivityStatus
multi_collection = client.collections.get("MultiTenancyCollection")
multi_collection.tenants.update(tenants=[
Tenant(
name="tenantA",
activity_status=TenantActivityStatus.OFFLOADED
)
])
const multiCollection = client.collections.get('MultiTenancyCollection')
await multiCollection.tenants.update({
name: 'tenantA',
activityStatus: 'OFFLOADED'
})
Tenant offloading requires an Offload module.
To enable tenant offloading, see the modules page
Automatically activate tenants
v1.25.2
Enable this to automatically activate INACTIVE
or OFFLOADED
tenants if a search, read, update, or delete operation is performed on them.
- Python Client v4
- JS/TS Client v3
from weaviate.classes.config import Configure
multi_collection = client.collections.create(
name="CollectionWithAutoTenantActivation",
multi_tenancy_config=Configure.multi_tenancy(
enabled=True,
auto_tenant_activation=True # Enable automatic tenant activation
)
)
const result = await client.collections.create({
name: 'CollectionWithAutoTenantActivation',
multiTenancy: weaviate.configure.multiTenancy({
enabled: true,
autoTenantActivation: true
})
})
Questions and feedback
If you have any questions or feedback, let us know in the user forum.