Skip to main content

ZoneConfig

Struct ZoneConfig 

Source
pub struct ZoneConfig { /* private fields */ }
Expand description

Zone configuration for CockroachDB

This struct represents zone configuration options for databases, tables, or indexes. Zone configurations control how CockroachDB distributes and replicates data across your cluster.

§Fields

  • num_replicas: Number of copies of data to maintain (default: 3)
  • constraints: Placement rules for replicas (required/prohibited locations)
  • lease_preferences: Preferences for which replicas serve reads

§Constraint Format

Constraints use a + (required) or - (prohibited) prefix:

  • +region=us-east-1: Replicas MUST be in us-east-1
  • -region=us-west-1: Replicas MUST NOT be in us-west-1
  • +zone=a: Replicas MUST be in zone ‘a’

§Lease Preferences Format

Lease preferences determine which replica serves reads. They use the same format as constraints but represent priorities rather than requirements.

§Examples

§Basic Configuration

use reinhardt_query::types::ZoneConfig;

let zone = ZoneConfig::new()
    .num_replicas(3)
    .add_constraint("+region=us-east-1")
    .add_lease_preference("+region=us-east-1");

§Multi-Region High Availability

use reinhardt_query::types::ZoneConfig;

// 5 replicas across 3 regions
let zone = ZoneConfig::new()
    .num_replicas(5)
    .add_constraint("+region=us-east-1")
    .add_constraint("+region=us-west-1")
    .add_constraint("+region=eu-west-1")
    .add_lease_preference("+region=us-east-1"); // Prefer us-east-1 for reads

§Exclude Specific Zones

use reinhardt_query::types::ZoneConfig;

// Avoid certain zones for compliance
let zone = ZoneConfig::new()
    .num_replicas(3)
    .add_constraint("+region=us-east-1")
    .add_constraint("-zone=deprecated"); // Exclude deprecated zones

§Tiered Read Preferences

use reinhardt_query::types::ZoneConfig;

// Primary: us-east-1, Secondary: us-west-1
let zone = ZoneConfig::new()
    .num_replicas(3)
    .add_lease_preference("+region=us-east-1")
    .add_lease_preference("+region=us-west-1"); // Fallback if us-east-1 unavailable

Implementations§

Source§

impl ZoneConfig

Source

pub fn new() -> Self

Create a new zone configuration

Source

pub fn num_replicas(self, replicas: i32) -> Self

Set the number of replicas

§Examples
use reinhardt_query::types::ZoneConfig;

let zone = ZoneConfig::new().num_replicas(3);
Source

pub fn add_constraint<S: Into<String>>(self, constraint: S) -> Self

Add a constraint

§Examples
use reinhardt_query::types::ZoneConfig;

let zone = ZoneConfig::new()
    .add_constraint("+region=us-east-1")
    .add_constraint("+zone=a");
Source

pub fn add_lease_preference<S: Into<String>>(self, preference: S) -> Self

Add a lease preference

§Examples
use reinhardt_query::types::ZoneConfig;

let zone = ZoneConfig::new()
    .add_lease_preference("+region=us-east-1");

Trait Implementations§

Source§

impl Clone for ZoneConfig

Source§

fn clone(&self) -> ZoneConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ZoneConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ZoneConfig

Source§

fn default() -> ZoneConfig

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

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.