All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.forstdb.CompactionPriority Maven / Gradle / Ivy

Go to download

ForSt fat jar with modifications specific for Apache Flink that contains .so files for linux32 and linux64 (glibc and musl-libc), jnilib files for Mac OSX, and a .dll for Windows x64.

There is a newer version: 0.1.2-beta
Show newest version
// Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
//  This source code is licensed under both the GPLv2 (found in the
//  COPYING file in the root directory) and Apache 2.0 License
//  (found in the LICENSE.Apache file in the root directory).

package org.forstdb;

/**
 * Compaction Priorities
 */
public enum CompactionPriority {

  /**
   * Slightly Prioritize larger files by size compensated by #deletes
   */
  ByCompensatedSize((byte)0x0),

  /**
   * First compact files whose data's latest update time is oldest.
   * Try this if you only update some hot keys in small ranges.
   */
  OldestLargestSeqFirst((byte)0x1),

  /**
   * First compact files whose range hasn't been compacted to the next level
   * for the longest. If your updates are random across the key space,
   * write amplification is slightly better with this option.
   */
  OldestSmallestSeqFirst((byte)0x2),

  /**
   * First compact files whose ratio between overlapping size in next level
   * and its size is the smallest. It in many cases can optimize write
   * amplification.
   */
  MinOverlappingRatio((byte)0x3),

  /**
   * Keeps a cursor(s) of the successor of the file (key range) was/were
   * compacted before, and always picks the next files (key range) in that
   * level. The file picking process will cycle through all the files in a
   * round-robin manner.
   */
  RoundRobin((byte)0x4);


  private final byte value;

  CompactionPriority(final byte value) {
    this.value = value;
  }

  /**
   * Returns the byte value of the enumerations value
   *
   * @return byte representation
   */
  public byte getValue() {
    return value;
  }

  /**
   * Get CompactionPriority by byte value.
   *
   * @param value byte representation of CompactionPriority.
   *
   * @return {@link org.forstdb.CompactionPriority} instance or null.
   * @throws java.lang.IllegalArgumentException if an invalid
   *     value is provided.
   */
  public static CompactionPriority getCompactionPriority(final byte value) {
    for (final CompactionPriority compactionPriority :
        CompactionPriority.values()) {
      if (compactionPriority.getValue() == value){
        return compactionPriority;
      }
    }
    throw new IllegalArgumentException(
        "Illegal value provided for CompactionPriority.");
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy