In PlinyCompute, following data management functions are supported by PDBClient class:
(source code link: https://github.com/riceplinygroup/plinycompute/blob/master/pdb/src/mainClient/headers/PDBClient.h)

  • Create Database: to create a database
  • Create Set: to create a set
  • Remove Database: to remove a database
  • Remove Set: to remove a set
  • Send Data: send a PC Object, which must be a Vector of PC Objects, to be stored in a specified set by distributing data to the cluster of nodes in a round-and-robin style
  • Send Bytes: send bytes, which can be compressed, to be stored in a specified set by distributing data to the cluster of nodes in a round-and-robin style
  • Partition Set: to partition a set using a PartitionComp that specifies the key extraction function
  • Clear Set: to remove the content in a set without removing the set
  • Flush Data: to make sure all data buffered in storage manager are written to physical storage

Storing data into an instance of PlinyCompute can be achieved by launching a client in a remote machine and connecting to a running instance of PlinyCompute either in pseudo-cluster or in a real cluster.

An example is like following:

    // creates a connection to the remote PlinyCompute instance
    PDBClient pdbClient(8108, "localhost");

    // creates a database
    pdbClient.createDatabase("example_db");

    // creates a set on the database for storing data of type StringIntPair
    pdbClient.createSet<StringIntPair>("example_db", "example_set1");
		
    makeObjectAllocatorBlock(64 * 1024 * 1024, true);
    Handle<Vector<Handle<StringIntPair>>> storeMe =
		makeObject<Vector<Handle<StringIntPair>>>();
		
    try {
       for (i = 0; true; i++) {
          std::ostringstream oss;
          oss << "My string is " << i;
          oss.str();
          Handle<StringIntPair> myData = makeObject<StringIntPair>(oss.str(), i);
          storeMe->push_back(myData);
          total++;
       }
    } catch (pdb::NotEnoughSpace& n) {
          // sends the created objects to storage
          pdbClient.sendData<StringIntPair>(
				std::pair<std::string, std::string>("example_set1", "example_db"), storeMe);
    }	

    // flush buffered objects	
    pdbClient.flushData();