コード例 #1
0
ファイル: DBWorker.java プロジェクト: Bainmeister/nosql-tests
  DBWorker(
      int dbType,
      int chanceOfRead,
      int chanceOfWrite,
      int chanceOfReadModifyWrite,
      int chanceOfBalanceTransfer,
      int chanceOfIncrementalUpdate,
      int minTransactionSize,
      int maxTransactionSize,
      int millisBetweenActions,
      KeyStore availibleKeys,
      int writeToLogs) {

    // Set the Parameters
    this.dbType = dbType;

    this.chanceOfRead = chanceOfRead;
    this.chanceOfWrite = chanceOfWrite;
    this.chanceOfReadModifyWrite = chanceOfReadModifyWrite;
    this.chanceOfBalanceTransfer = chanceOfBalanceTransfer;
    this.chanceOfIncrementalUpdate = chanceOfIncrementalUpdate;

    this.millisBetweenActions = millisBetweenActions;
    this.minTransactionSize = minTransactionSize;
    this.maxTransactionSize = maxTransactionSize;
    this.keys = availibleKeys;
    this.writeToLogs = writeToLogs;

    // Set up the relevant Database Machine
    if (dbType == FDB) {
      machine = new FoundationDB();
    } else if (dbType == FDB_BLOCK_NO_RETRY) {
      // machine = new FDBBlockingNoRetry();
    } else if (dbType == FDB_ASYNC_NO_RETRY) {
      // machine = new FDBASyncNoRetry();
    } else if (dbType == MONGODB) {
      // machine = new MongoDBMachine();
    } else if (dbType == TOKUMX) {
      machine = new TokuMX();
    } else if (dbType == TOKUMX_ACID_OC) {
      machine = new TokuMXOptimist();
    } else if (dbType == TOKUMX_ACID_PC) {
      machine = new TokuMXPessimist();
    }

    // Connect the DB
    machine.connectDB();

    // Set up some log tables
    for (int i = 0; i > writeToLogs; i++) {
      machine.addTable("Log" + i);
    }

    if (chanceOfBalanceTransfer > 0
        && (this.minTransactionSize == 2 || this.maxTransactionSize == 2)) {
      // System.out.println("Balance Transfer may occur, setting transaction size to 2.");
      this.minTransactionSize = 2;
      this.maxTransactionSize = 2;
    }
  }