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.
|
#include <PangeaStorageServer.h>
Public Member Functions | |
PangeaStorageServer (SharedMemPtr shm, PDBWorkerQueuePtr workers, PDBLoggerPtr logger, ConfigurationPtr conf, bool standalone=true) | |
void | writeBackRecords (pair< std::string, std::string > databaseAndSet, bool flushOrNot=true, bool directPutOrNot=false) |
PDBPagePtr | getNewPage (pair< std::string, std::string > databaseAndSet) |
SetPtr | getSet (std::pair< std::string, std::string > databaseAndSet) |
void | registerHandlers (PDBServer &forMe) override |
size_t | bufferRecord (pair< std::string, std::string > databaseAndSet, Record< Vector< Handle< Object >>> *addMe) |
~PangeaStorageServer () | |
string | getServerName () |
NodeID | getNodeId () |
string | getPathToBackEndServer () |
PDBLoggerPtr | getLogger () |
ConfigurationPtr | getConf () |
SharedMemPtr | getSharedMem () |
PageCachePtr | getCache () |
PageCircularBufferPtr | getFlushBuffer () |
bool | addDatabase (std::string dbName, DatabaseID dbId) |
bool | addDatabase (std::string dbName) |
bool | removeDatabase (std::string dbName) |
bool | addType (std::string typeName, UserTypeID typeId) |
bool | removeTypeFromDatabase (std::string dbName, std::string typeName) |
bool | removeType (std::string typeName) |
bool | addSet (std::string dbName, std::string typeName, std::string setName, SetID setId, size_t pageSize=DEFAULT_PAGE_SIZE) |
bool | addSet (std::string dbName, std::string typeName, std::string setName, size_t pageSize=DEFAULT_PAGE_SIZE) |
bool | addSet (std::string dbName, std::string setName, size_t pageSize=DEFAULT_PAGE_SIZE) |
bool | removeSet (std::string dbName, std::string typeName, std::string setName) |
bool | removeSet (std::string dbName, std::string setName) |
DefaultDatabasePtr | getDatabase (DatabaseID dbId) |
bool | addTempSet (std::string setName, SetID &setId, size_t pageSize=DEFAULT_PAGE_SIZE) |
bool | removeTempSet (SetID setId) |
TempSetPtr | getTempSet (SetID setId) |
SetPtr | getSet (DatabaseID dbId, UserTypeID typeId, SetID setId) |
void | startFlushConsumerThreads () |
void | stopFlushConsumerThreads () |
PDBWorkerPtr | getWorker () |
bool | isStandalone () |
void | cleanup (bool flushOrNot=true) |
bool | exportToFile (std::string dbName, std::string setName, std::string path, std::string format, std::string &errMsg) |
bool | exportToHDFSFile (std::string dbName, std::string setName, std::string hdfsNameNodeIp, int hdfsNameNodePort, std::string path, std::string format, std::string &errMsg) |
Public Member Functions inherited from pdb::ServerFunctionality | |
virtual void | cleanup () |
template<class Functionality > | |
Functionality & | getFunctionality () |
void | recordServer (PDBServer &recordMe) |
PDBWorkerPtr | getWorker () |
PDBLoggerPtr | getLogger () |
Protected Member Functions | |
string | encodeDBPath (string rootPath, DatabaseID dbId, string dbName) |
void | createTempDirs () |
void | createRootDirs () |
bool | initializeFromRootDirs (string metaRootPath, vector< string > dataRootPath) |
void | clearDB (DatabaseID dbId, string dbName) |
void | addDatabaseBySequenceFiles (string dbName, DatabaseID dbId, boost::filesystem::path dbPath) |
void | addDatabaseByPartitionedFiles (string dbName, DatabaseID dbId, boost::filesystem::path dbMetaPath) |
Private Attributes | |
std::map< std::pair < DatabaseID, SetID >, SetPtr > * | userSets |
std::map< std::pair < std::string, std::string > , std::pair< DatabaseID, SetID > > * | names2ids |
std::map< std::string, UserTypeID > * | typename2id |
std::map< SetID, TempSetPtr > * | tempSets |
std::map< std::string, SetID > * | name2tempSetId |
PDBLoggerPtr | logger |
ConfigurationPtr | conf |
std::string | serverName |
NodeID | nodeId |
SharedMemPtr | shm |
std::string | metaTempPath |
std::vector< std::string > | dataTempPaths |
std::string | metaRootPath |
std::vector< std::string > | dataRootPaths |
PageCachePtr | cache |
string | pathToBackEndServer |
pthread_mutex_t | databaseLock |
pthread_mutex_t | typeLock |
pthread_mutex_t | usersetLock |
pthread_mutex_t | tempsetLock |
SequenceID | tempsetSeqId |
SequenceID | databaseSeqId |
std::map< std::string, SequenceID * > * | usersetSeqIds |
PDBWorkerQueuePtr | workers |
PageCircularBufferPtr | flushBuffer |
std::vector< PDBWorkPtr > | flushers |
bool | standalone = true |
std::map< pair< std::string, std::string >, std::vector < Record< Vector< Handle < Object > > > * > > | allRecords |
std::map< pair< std::string, std::string >, size_t > | sizes |
std::map< DatabaseID, DefaultDatabasePtr > * | dbs |
std::map< std::string, DatabaseID > * | name2id |
long | totalObjects |
pthread_mutex_t | workingMutex |
pthread_mutex_t | counterMutex |
int | numWaitingBufferDataRequests |
Definition at line 76 of file PangeaStorageServer.h.
pdb::PangeaStorageServer::PangeaStorageServer | ( | SharedMemPtr | shm, |
PDBWorkerQueuePtr | workers, | ||
PDBLoggerPtr | logger, | ||
ConfigurationPtr | conf, | ||
bool | standalone = true |
||
) |
pdb::PangeaStorageServer::~PangeaStorageServer | ( | ) |
bool pdb::PangeaStorageServer::addDatabase | ( | std::string | dbName, |
DatabaseID | dbId | ||
) |
Add a new and empty database
bool pdb::PangeaStorageServer::addDatabase | ( | std::string | dbName | ) |
Add a new and empty database using only name
Definition at line 1688 of file PangeaStorageServer.cc.
|
protected |
Add an existing database based on Partitioned file (by default)
Add an existing database based on Partitioned file
Definition at line 2202 of file PangeaStorageServer.cc.
|
protected |
Add an existing database based on Sequence file (deprecated)
Definition at line 2167 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::addSet | ( | std::string | dbName, |
std::string | typeName, | ||
std::string | setName, | ||
SetID | setId, | ||
size_t | pageSize = DEFAULT_PAGE_SIZE |
||
) |
Add a new and empty set
Definition at line 1800 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::addSet | ( | std::string | dbName, |
std::string | typeName, | ||
std::string | setName, | ||
size_t | pageSize = DEFAULT_PAGE_SIZE |
||
) |
Add a new and empty set using only name
Definition at line 1867 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::addSet | ( | std::string | dbName, |
std::string | setName, | ||
size_t | pageSize = DEFAULT_PAGE_SIZE |
||
) |
Add a set using only database name and set name
Definition at line 1886 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::addTempSet | ( | std::string | setName, |
SetID & | setId, | ||
size_t | pageSize = DEFAULT_PAGE_SIZE |
||
) |
Add a new and empty temporary set
Definition at line 1957 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::addType | ( | std::string | typeName, |
UserTypeID | typeId | ||
) |
Add a new and empty type
Definition at line 1751 of file PangeaStorageServer.cc.
void pdb::PangeaStorageServer::cleanup | ( | bool | flushOrNot = true | ) |
|
protected |
Clear db data and disk files for removal
Definition at line 1701 of file PangeaStorageServer.cc.
|
protected |
Create root directories
Definition at line 1621 of file PangeaStorageServer.cc.
|
protected |
Create temp directories
Definition at line 1589 of file PangeaStorageServer.cc.
|
protected |
Encode database path
Definition at line 1582 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::exportToFile | ( | std::string | dbName, |
std::string | setName, | ||
std::string | path, | ||
std::string | format, | ||
std::string & | errMsg | ||
) |
Definition at line 357 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::exportToHDFSFile | ( | std::string | dbName, |
std::string | setName, | ||
std::string | hdfsNameNodeIp, | ||
int | hdfsNameNodePort, | ||
std::string | path, | ||
std::string | format, | ||
std::string & | errMsg | ||
) |
Definition at line 427 of file PangeaStorageServer.cc.
PageCachePtr pdb::PangeaStorageServer::getCache | ( | ) |
Returns cache
Definition at line 2289 of file PangeaStorageServer.cc.
ConfigurationPtr pdb::PangeaStorageServer::getConf | ( | ) |
Returns configuration
Definition at line 2281 of file PangeaStorageServer.cc.
DefaultDatabasePtr pdb::PangeaStorageServer::getDatabase | ( | DatabaseID | dbId | ) |
Returns a specified database. If database doesn't exist, returns nullptr
Definition at line 1742 of file PangeaStorageServer.cc.
PageCircularBufferPtr pdb::PangeaStorageServer::getFlushBuffer | ( | ) |
returns the flush buffer
Definition at line 2081 of file PangeaStorageServer.cc.
PDBLoggerPtr pdb::PangeaStorageServer::getLogger | ( | ) |
Returns logger
Definition at line 2277 of file PangeaStorageServer.cc.
PDBPagePtr pdb::PangeaStorageServer::getNewPage | ( | pair< std::string, std::string > | databaseAndSet | ) |
Definition at line 208 of file PangeaStorageServer.cc.
NodeID pdb::PangeaStorageServer::getNodeId | ( | ) |
Returns nodeId
Definition at line 1577 of file PangeaStorageServer.cc.
string pdb::PangeaStorageServer::getPathToBackEndServer | ( | ) |
Returns the ipc path to backEnd
Definition at line 1567 of file PangeaStorageServer.cc.
string pdb::PangeaStorageServer::getServerName | ( | ) |
Returns server name
Definition at line 1572 of file PangeaStorageServer.cc.
SetPtr pdb::PangeaStorageServer::getSet | ( | std::pair< std::string, std::string > | databaseAndSet | ) |
SetPtr pdb::PangeaStorageServer::getSet | ( | DatabaseID | dbId, |
UserTypeID | typeId, | ||
SetID | setId | ||
) |
Returns a set specified
Definition at line 2014 of file PangeaStorageServer.cc.
SharedMemPtr pdb::PangeaStorageServer::getSharedMem | ( | ) |
Returns shared memory handle, for caching
Definition at line 2285 of file PangeaStorageServer.cc.
TempSetPtr pdb::PangeaStorageServer::getTempSet | ( | SetID | setId | ) |
Returns a temporary set specified
Definition at line 2001 of file PangeaStorageServer.cc.
PDBWorkerPtr pdb::PangeaStorageServer::getWorker | ( | ) |
returns a worker from thread pool
Definition at line 2074 of file PangeaStorageServer.cc.
|
protected |
Initialize storage from existing root directories
Initialize databases in the storage from data already exists at configured root paths. Return true if successful; Return false, if data persisted on disk is not consistent.
Definition at line 2092 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::isStandalone | ( | ) |
return whether the PangeaStorageServer instance is running standalone or in cluster mode.
Definition at line 2294 of file PangeaStorageServer.cc.
|
overridevirtual |
Implements pdb::ServerFunctionality.
Definition at line 438 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::removeDatabase | ( | std::string | dbName | ) |
Remove an existing database
Definition at line 1714 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::removeSet | ( | std::string | dbName, |
std::string | typeName, | ||
std::string | setName | ||
) |
Remove an existing set
Definition at line 1918 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::removeSet | ( | std::string | dbName, |
std::string | setName | ||
) |
Remove an existing set
Definition at line 1890 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::removeTempSet | ( | SetID | setId | ) |
Remove an existing temporary set
Definition at line 1985 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::removeType | ( | std::string | typeName | ) |
Remove a type from the typeName to typeId mapping
Definition at line 1786 of file PangeaStorageServer.cc.
bool pdb::PangeaStorageServer::removeTypeFromDatabase | ( | std::string | dbName, |
std::string | typeName | ||
) |
Remove a type from a database, and also remove all sets in the database having that type
Definition at line 1766 of file PangeaStorageServer.cc.
void pdb::PangeaStorageServer::startFlushConsumerThreads | ( | ) |
Start flushing main threads, which are also consumer threads, to flush data in the flush buffer to disk files.
Definition at line 2039 of file PangeaStorageServer.cc.
void pdb::PangeaStorageServer::stopFlushConsumerThreads | ( | ) |
Stop flushing main threads, and close flushBuffer.
Definition at line 2062 of file PangeaStorageServer.cc.
void pdb::PangeaStorageServer::writeBackRecords | ( | pair< std::string, std::string > | databaseAndSet, |
bool | flushOrNot = true , |
||
bool | directPutOrNot = false |
||
) |
Definition at line 220 of file PangeaStorageServer.cc.
|
private |
Definition at line 436 of file PangeaStorageServer.h.
|
private |
Definition at line 390 of file PangeaStorageServer.h.
|
private |
Definition at line 366 of file PangeaStorageServer.h.
|
private |
Definition at line 453 of file PangeaStorageServer.h.
|
private |
Definition at line 396 of file PangeaStorageServer.h.
|
private |
Definition at line 411 of file PangeaStorageServer.h.
|
private |
Definition at line 387 of file PangeaStorageServer.h.
|
private |
Definition at line 381 of file PangeaStorageServer.h.
|
private |
Definition at line 445 of file PangeaStorageServer.h.
|
private |
Definition at line 420 of file PangeaStorageServer.h.
|
private |
Definition at line 423 of file PangeaStorageServer.h.
|
private |
Definition at line 363 of file PangeaStorageServer.h.
|
private |
Definition at line 384 of file PangeaStorageServer.h.
|
private |
Definition at line 378 of file PangeaStorageServer.h.
|
private |
Definition at line 448 of file PangeaStorageServer.h.
|
private |
Definition at line 360 of file PangeaStorageServer.h.
|
private |
Definition at line 351 of file PangeaStorageServer.h.
|
private |
Definition at line 372 of file PangeaStorageServer.h.
|
private |
Definition at line 454 of file PangeaStorageServer.h.
|
private |
Definition at line 393 of file PangeaStorageServer.h.
|
private |
Definition at line 369 of file PangeaStorageServer.h.
|
private |
Definition at line 375 of file PangeaStorageServer.h.
|
private |
Definition at line 439 of file PangeaStorageServer.h.
|
private |
Definition at line 428 of file PangeaStorageServer.h.
|
private |
Definition at line 405 of file PangeaStorageServer.h.
|
private |
Definition at line 357 of file PangeaStorageServer.h.
|
private |
Definition at line 408 of file PangeaStorageServer.h.
|
private |
Definition at line 450 of file PangeaStorageServer.h.
|
private |
Definition at line 399 of file PangeaStorageServer.h.
|
private |
Definition at line 354 of file PangeaStorageServer.h.
|
private |
Definition at line 402 of file PangeaStorageServer.h.
|
private |
Definition at line 348 of file PangeaStorageServer.h.
|
private |
Definition at line 414 of file PangeaStorageServer.h.
|
private |
Definition at line 417 of file PangeaStorageServer.h.
|
private |
Definition at line 452 of file PangeaStorageServer.h.