partition

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 16, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DistributedQuery

type DistributedQuery struct {
	// contains filtered or unexported fields
}

DistributedQuery coordinates queries across partitions

func NewDistributedQuery

func NewDistributedQuery(partitions []*PartitionedGraph) *DistributedQuery

NewDistributedQuery creates a distributed query coordinator

func (*DistributedQuery) GetNode

func (dq *DistributedQuery) GetNode(nodeID uint64) (*storage.Node, error)

GetNode retrieves a node from the correct partition

func (*DistributedQuery) TraverseGraph

func (dq *DistributedQuery) TraverseGraph(startID uint64, maxDepth int) ([]*storage.Node, error)

TraverseGraph performs distributed graph traversal

type HashPartition

type HashPartition struct {
	// contains filtered or unexported fields
}

HashPartition partitions nodes by hash (simplest, good load balance)

func NewHashPartition

func NewHashPartition(partitionCount int) *HashPartition

NewHashPartition creates a hash-based partitioning strategy

func (*HashPartition) GetPartition

func (hp *HashPartition) GetPartition(nodeID uint64) int

GetPartition returns which partition a node belongs to

func (*HashPartition) GetPartitionCount

func (hp *HashPartition) GetPartitionCount() int

GetPartitionCount returns total number of partitions

type NodeMigration

type NodeMigration struct {
	FromPartition int
	ToPartition   int
	NodeCount     int
	NodeIDs       []uint64
}

NodeMigration represents a suggested rebalancing operation

func RebalancePartitions

func RebalancePartitions(graph *storage.GraphStorage, strategy PartitionStrategy) ([]NodeMigration, error)

RebalancePartitions suggests node migrations to improve balance

type PartitionMetrics

type PartitionMetrics struct {
	PartitionSizes []int   // Nodes per partition
	EdgeCuts       []int   // Cut edges per partition
	LoadBalance    float64 // 0-1 (1 = perfect balance)
	CutRatio       float64 // Fraction of edges that are cuts
}

PartitionMetrics contains partitioning quality metrics

func ComputePartitionMetrics

func ComputePartitionMetrics(graph *storage.GraphStorage, strategy PartitionStrategy) (*PartitionMetrics, error)

ComputePartitionMetrics analyzes partition quality

type PartitionStrategy

type PartitionStrategy interface {
	GetPartition(nodeID uint64) int
	GetPartitionCount() int
}

PartitionStrategy defines how to partition a graph

type PartitionedGraph

type PartitionedGraph struct {
	// contains filtered or unexported fields
}

PartitionedGraph wraps a graph with partitioning

func NewPartitionedGraph

func NewPartitionedGraph(
	graph *storage.GraphStorage,
	strategy PartitionStrategy,
	localPartition int,
) *PartitionedGraph

NewPartitionedGraph creates a partitioned graph view

func (*PartitionedGraph) GetEdgeCuts

func (pg *PartitionedGraph) GetEdgeCuts() ([]*storage.Edge, error)

GetEdgeCuts returns edges that cross partition boundaries

func (*PartitionedGraph) GetLocalNodes

func (pg *PartitionedGraph) GetLocalNodes() ([]*storage.Node, error)

GetLocalNodes returns all nodes in this partition

func (*PartitionedGraph) IsLocalNode

func (pg *PartitionedGraph) IsLocalNode(nodeID uint64) bool

IsLocalNode checks if a node belongs to this partition

type RangePartition

type RangePartition struct {
	// contains filtered or unexported fields
}

RangePartition partitions by node ID ranges

func NewRangePartition

func NewRangePartition(partitionCount int, maxNodeID uint64) *RangePartition

NewRangePartition creates range-based partitioning

func (*RangePartition) GetPartition

func (rp *RangePartition) GetPartition(nodeID uint64) int

GetPartition returns partition for a node

func (*RangePartition) GetPartitionCount

func (rp *RangePartition) GetPartitionCount() int

GetPartitionCount returns total partitions

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL