Skip to main content

PropertyStorage

Struct PropertyStorage 

Source
pub struct PropertyStorage<Id: EntityId = NodeId> { /* private fields */ }
Expand description

Thread-safe columnar property storage.

Each property key (“name”, “age”, etc.) gets its own column. This layout is great for analytical queries that filter on specific properties - you only touch the columns you need.

Generic over Id so the same storage works for nodes and edges.

§Example

use grafeo_core::graph::lpg::PropertyStorage;
use grafeo_common::types::{NodeId, PropertyKey};

let storage = PropertyStorage::new();
let alice = NodeId::new(1);

storage.set(alice, PropertyKey::new("name"), "Alice".into());
storage.set(alice, PropertyKey::new("age"), 30i64.into());

// Fetch all properties at once
let props = storage.get_all(alice);
assert_eq!(props.len(), 2);

Implementations§

Source§

impl<Id: EntityId> PropertyStorage<Id>

Source

pub fn new() -> Self

Creates a new property storage.

Source

pub fn with_compression(mode: CompressionMode) -> Self

Creates a new property storage with compression enabled.

Source

pub fn set_default_compression(&mut self, mode: CompressionMode)

Sets the default compression mode for new columns.

Source

pub fn set(&self, id: Id, key: PropertyKey, value: Value)

Sets a property value for an entity.

Source

pub fn enable_compression(&self, key: &PropertyKey, mode: CompressionMode)

Enables compression for a specific column.

Source

pub fn compress_all(&self)

Compresses all columns that have compression enabled.

Source

pub fn force_compress_all(&self)

Forces compression on all columns regardless of mode.

Source

pub fn compression_stats(&self) -> FxHashMap<PropertyKey, CompressionStats>

Returns compression statistics for all columns.

Source

pub fn memory_usage(&self) -> usize

Returns the total memory usage of all columns.

Source

pub fn get(&self, id: Id, key: &PropertyKey) -> Option<Value>

Gets a property value for an entity.

Source

pub fn remove(&self, id: Id, key: &PropertyKey) -> Option<Value>

Removes a property value for an entity.

Source

pub fn remove_all(&self, id: Id)

Removes all properties for an entity.

Source

pub fn get_all(&self, id: Id) -> FxHashMap<PropertyKey, Value>

Gets all properties for an entity.

Source

pub fn column_count(&self) -> usize

Returns the number of property columns.

Source

pub fn keys(&self) -> Vec<PropertyKey>

Returns the keys of all columns.

Source

pub fn column(&self, key: &PropertyKey) -> Option<PropertyColumnRef<'_, Id>>

Gets a column by key for bulk access.

Source

pub fn might_match( &self, key: &PropertyKey, op: CompareOp, value: &Value, ) -> bool

Checks if a predicate might match any values (using zone maps).

Returns false only when we’re certain no values match - for example, if you’re looking for age > 100 but the max age is 80. Returns true if the property doesn’t exist (conservative - might match).

Source

pub fn zone_map(&self, key: &PropertyKey) -> Option<ZoneMapEntry>

Gets the zone map for a property column.

Source

pub fn rebuild_zone_maps(&self)

Rebuilds zone maps for all columns (call after bulk removes).

Trait Implementations§

Source§

impl<Id: EntityId> Default for PropertyStorage<Id>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<Id = NodeId> !Freeze for PropertyStorage<Id>

§

impl<Id = NodeId> !RefUnwindSafe for PropertyStorage<Id>

§

impl<Id> Send for PropertyStorage<Id>
where Id: Send,

§

impl<Id> Sync for PropertyStorage<Id>
where Id: Sync + Send,

§

impl<Id> Unpin for PropertyStorage<Id>
where Id: Unpin,

§

impl<Id> UnwindSafe for PropertyStorage<Id>
where Id: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.