pub struct TieredStorage<H, W, C> { /* private fields */ }Expand description
Tiered storage manager
Implementations§
Source§impl<H, W, C> TieredStorage<H, W, C>
impl<H, W, C> TieredStorage<H, W, C>
Sourcepub fn new(
config: TieredStorageConfig,
hot_storage: H,
warm_storage: W,
cold_storage: C,
) -> Self
pub fn new( config: TieredStorageConfig, hot_storage: H, warm_storage: W, cold_storage: C, ) -> Self
Create a new tiered storage
Sourcepub fn config(&self) -> &TieredStorageConfig
pub fn config(&self) -> &TieredStorageConfig
Get the tiered storage configuration
Sourcepub async fn promote(
&self,
namespace: &NamespaceId,
id: &VectorId,
) -> Result<bool>
pub async fn promote( &self, namespace: &NamespaceId, id: &VectorId, ) -> Result<bool>
Promote a vector to a higher tier
Sourcepub async fn demote(
&self,
namespace: &NamespaceId,
id: &VectorId,
) -> Result<bool>
pub async fn demote( &self, namespace: &NamespaceId, id: &VectorId, ) -> Result<bool>
Demote a vector to a lower tier
Sourcepub async fn run_auto_tiering(&self) -> Result<TieringResult>
pub async fn run_auto_tiering(&self) -> Result<TieringResult>
Run automatic tiering based on access patterns
Sourcepub fn stats(&self) -> TieredStorageStats
pub fn stats(&self) -> TieredStorageStats
Get storage statistics
Sourcepub fn tier_distribution(&self, namespace: &NamespaceId) -> TierDistribution
pub fn tier_distribution(&self, namespace: &NamespaceId) -> TierDistribution
Get tier distribution by namespace
Trait Implementations§
Source§impl<H, W, C> VectorStorage for TieredStorage<H, W, C>
impl<H, W, C> VectorStorage for TieredStorage<H, W, C>
Source§fn upsert<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
vectors: Vec<Vector>,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn upsert<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
vectors: Vec<Vector>,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Store or update vectors in a namespace
Source§fn get<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
ids: &'life2 [VectorId],
) -> Pin<Box<dyn Future<Output = Result<Vec<Vector>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
ids: &'life2 [VectorId],
) -> Pin<Box<dyn Future<Output = Result<Vec<Vector>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Get vectors by IDs
Source§fn get_all<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<Vec<Vector>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_all<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<Vec<Vector>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get all vectors in a namespace (for brute-force search)
Source§fn delete<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
ids: &'life2 [VectorId],
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn delete<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
ids: &'life2 [VectorId],
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Delete vectors by IDs
Source§fn namespace_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn namespace_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Check if namespace exists
Source§fn ensure_namespace<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn ensure_namespace<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create namespace if it doesn’t exist
Source§fn count<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn count<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get vector count in namespace
Source§fn dimension<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<Option<usize>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn dimension<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<Option<usize>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get vector dimension for namespace (None if empty)
Source§fn list_namespaces<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<NamespaceId>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_namespaces<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<NamespaceId>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List all namespaces
Source§fn delete_namespace<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_namespace<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete a namespace and all its vectors
Source§fn cleanup_expired<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn cleanup_expired<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Clean up expired vectors in a namespace
Returns the number of vectors removed
Auto Trait Implementations§
impl<H, W, C> !Freeze for TieredStorage<H, W, C>
impl<H, W, C> !RefUnwindSafe for TieredStorage<H, W, C>
impl<H, W, C> Send for TieredStorage<H, W, C>
impl<H, W, C> Sync for TieredStorage<H, W, C>
impl<H, W, C> Unpin for TieredStorage<H, W, C>
impl<H, W, C> UnsafeUnpin for TieredStorage<H, W, C>
impl<H, W, C> UnwindSafe for TieredStorage<H, W, C>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more