A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
pdb::PartitionPolicy Class Referenceabstract

#include <PartitionPolicy.h>

+ Inheritance diagram for pdb::PartitionPolicy:
+ Collaboration diagram for pdb::PartitionPolicy:

Public Types

enum  Policy { RANDOM, ROUNDROBIN, FAIR, DEFAULT }
 

Public Member Functions

std::vector< NodePartitionDataPtrcreateNodePartitionData (Handle< Vector< Handle< NodeDispatcherData >>> storageNodes)
 
virtual std::shared_ptr
< std::unordered_map< NodeID,
Handle< Vector< Handle< Object > > > > > 
partition (Handle< Vector< Handle< Object >>> toPartition)=0
 
virtual void updateStorageNodes (Handle< Vector< Handle< NodeDispatcherData >>> storageNodes)=0
 
virtual NodePartitionDataPtr updateExistingNode (NodePartitionDataPtr newNodeData, NodePartitionDataPtr oldNodeData)=0
 
virtual NodePartitionDataPtr updateNewNode (NodePartitionDataPtr newNode)=0
 
virtual NodePartitionDataPtr handleDeadNode (NodePartitionDataPtr deadNode)=0
 

Public Attributes

std::vector< NodePartitionDataPtrstorageNodes
 

Detailed Description

An interface used by DispatcherServer to properly map PDB::Objects to the Storage Node which they should be stored. Calls to partition may be non-deterministic (see RandomPolicy).

Definition at line 44 of file PartitionPolicy.h.

Member Enumeration Documentation

Enumerator
RANDOM 
ROUNDROBIN 
FAIR 
DEFAULT 

Definition at line 46 of file PartitionPolicy.h.

Member Function Documentation

std::vector<NodePartitionDataPtr> pdb::PartitionPolicy::createNodePartitionData ( Handle< Vector< Handle< NodeDispatcherData >>>  storageNodes)
virtual NodePartitionDataPtr pdb::PartitionPolicy::handleDeadNode ( NodePartitionDataPtr  deadNode)
pure virtual
virtual std::shared_ptr<std::unordered_map<NodeID, Handle<Vector<Handle<Object> > > > > pdb::PartitionPolicy::partition ( Handle< Vector< Handle< Object >>>  toPartition)
pure virtual

Partitions a Vector of PDB data into a number of smaller Vectors all mapped to a respective Storage Node

Parameters
toPartitiona vector of PDB::Objects to be stored
Returns
a mapping from node ids to the PDB::Objects that should be stored there

Implemented in pdb::RandomPolicy, and pdb::RoundRobinPolicy.

virtual NodePartitionDataPtr pdb::PartitionPolicy::updateExistingNode ( NodePartitionDataPtr  newNodeData,
NodePartitionDataPtr  oldNodeData 
)
pure virtual
virtual NodePartitionDataPtr pdb::PartitionPolicy::updateNewNode ( NodePartitionDataPtr  newNode)
pure virtual
virtual void pdb::PartitionPolicy::updateStorageNodes ( Handle< Vector< Handle< NodeDispatcherData >>>  storageNodes)
pure virtual

Updates PartitionPolicy with a collection of all the available storage nodes in the cluster

Parameters
storageNodesa vector of the live storage nodes

Implemented in pdb::RandomPolicy, and pdb::RoundRobinPolicy.

Member Data Documentation

std::vector<NodePartitionDataPtr> pdb::PartitionPolicy::storageNodes

Definition at line 75 of file PartitionPolicy.h.


The documentation for this class was generated from the following file: