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

org.rocksdb.CompactionOptionsFIFO Maven / Gradle / Ivy

// 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.rocksdb;

/**
 * Options for FIFO Compaction
 */
public class CompactionOptionsFIFO extends RocksObject {

  public CompactionOptionsFIFO() {
    super(newCompactionOptionsFIFO());
  }

  /**
   * Once the total sum of table files reaches this, we will delete the oldest
   * table file
   *
   * Default: 1GB
   *
   * @param maxTableFilesSize The maximum size of the table files
   *
   * @return the reference to the current options.
   */
  public CompactionOptionsFIFO setMaxTableFilesSize(
      final long maxTableFilesSize) {
    setMaxTableFilesSize(nativeHandle_, maxTableFilesSize);
    return this;
  }

  /**
   * Once the total sum of table files reaches this, we will delete the oldest
   * table file
   *
   * Default: 1GB
   *
   * @return max table file size in bytes
   */
  public long maxTableFilesSize() {
    return maxTableFilesSize(nativeHandle_);
  }

  /**
   * Drop files older than TTL. TTL based deletion will take precedence over
   * size based deletion if ttl > 0.
   * delete if sst_file_creation_time < (current_time - ttl).
   * unit: seconds. Ex: 1 day = 1 * 24 * 60 * 60
   *
   * Default: 0 (disabled)
   *
   * @param ttl The ttl for the table files in seconds
   *
   * @return the reference to the current options.
   */
  public CompactionOptionsFIFO setTtl(final long ttl) {
    setTtl(nativeHandle_, ttl);
    return this;
  }

  /**
   * The current ttl value.
   * Drop files older than TTL. TTL based deletion will take precedence over
   * size based deletion if ttl > 0.
   * delete if sst_file_creation_time < (current_time - ttl).
   *
   * Default: 0 (disabled)
   *
   * @return the ttl in seconds
   */
  public long ttl() {
    return ttl(nativeHandle_);
  }

  /**
   * If true, try to do compaction to compact smaller files into larger ones.
   * Minimum files to compact follows options.level0_file_num_compaction_trigger
   * and compaction won't trigger if average compact bytes per del file is
   * larger than options.write_buffer_size. This is to protect large files
   * from being compacted again.
   *
   * Default: false
   *
   * @param allowCompaction should allow intra-L0 compaction?
   *
   * @return the reference to the current options.
   */
  public CompactionOptionsFIFO setAllowCompaction(final boolean allowCompaction) {
    setAllowCompaction(nativeHandle_, allowCompaction);
    return this;
  }

  /**
   * Check if intra-L0 compaction is enabled.
   * If true, try to do compaction to compact smaller files into larger ones.
   * Minimum files to compact follows options.level0_file_num_compaction_trigger
   * and compaction won't trigger if average compact bytes per del file is
   * larger than options.write_buffer_size. This is to protect large files
   * from being compacted again.
   *
   * Default: false
   *
   * @return a boolean value indicating whether intra-L0 compaction is enabled
   */
  public boolean allowCompaction() {
    return allowCompaction(nativeHandle_);
  }

  private native void setMaxTableFilesSize(long handle, long maxTableFilesSize);
  private native long maxTableFilesSize(long handle);
  private native void setTtl(long handle, long ttl);
  private native long ttl(long handle);
  private native void setAllowCompaction(long handle, boolean allowCompaction);
  private native boolean allowCompaction(long handle);

  private native static long newCompactionOptionsFIFO();
  @Override protected final native void disposeInternal(final long handle);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy