org.forstdb.CompactionPriority Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of forstjni Show documentation
Show all versions of forstjni Show documentation
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.
// 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.");
}
}