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

com.sleepycat.je.DiskOrderedCursorConfig Maven / Gradle / Ivy

The newest version!
/*-
 * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
 *
 * This file was distributed by Oracle as part of a version of Oracle Berkeley
 * DB Java Edition made available at:
 *
 * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
 *
 * Please see the LICENSE file included in the top-level directory of the
 * appropriate version of Oracle Berkeley DB Java Edition for a copy of the
 * license and additional information.
 */

package com.sleepycat.je;


/**
 * Specifies the attributes of a DiskOrderedCursor.
 * @since 5.0
 */
public class DiskOrderedCursorConfig implements Cloneable {

    /**
     * Default configuration used if null is passed to methods that create a
     * cursor.
     */
    public static final DiskOrderedCursorConfig DEFAULT =
        new DiskOrderedCursorConfig();

    private boolean binsOnly = false;

    private boolean keysOnly = false;

    private boolean countOnly = false;

    private long lsnBatchSize = Long.MAX_VALUE;

    private long internalMemoryLimit = Long.MAX_VALUE;

    private int queueSize = 1000;

    private boolean serialDBScan = false;

    private boolean debug = false;

    /**
     * An instance created using the default constructor is initialized with
     * the system's default settings.
     */
    public DiskOrderedCursorConfig() {
    }

    /**
     * Specify whether the DiskOrderedCursor should return only the key or key
     * + data.  The default value is false (key + data).  If keyOnly is true,
     * the performance of the disk ordered scan will be better, because the
     * Cursor only descends to the BIN level. 
     *
     * @param keysOnly If true, return only keys from this cursor.
     *
     * @return this
     */
    public DiskOrderedCursorConfig setKeysOnly(final boolean keysOnly) {
        setKeysOnlyVoid(keysOnly);
        return this;
    }

    /**
     * @hidden
     * The void return setter for use by Bean editors.
     */
    public void setKeysOnlyVoid(final boolean keysOnly) {
        this.keysOnly = keysOnly;
    }

    /**
     * Returns true if the DiskOrderedCursor is configured to return only
     * keys.  Returns false if it is configured to return keys + data.
     *
     * @return true if the DiskOrderedCursor is configured to return keys only.
     */
    public boolean getKeysOnly() {
        return keysOnly;
    }

    /**
     * For internal use only.
     * @hidden
     */
    public DiskOrderedCursorConfig setCountOnly(boolean val) {
        setBINsOnlyVoid(val);
        return this;
    }

    /**
     * For internal use only.
     * @hidden
     */
    public void setCountOnlyVoid(boolean val) {
        countOnly = val;
    }

    /**
     * For internal use only.
     * @hidden
     */
    public boolean getCountOnly() {
        return countOnly;
    }

    /**
     * Specify whether the DiskOrderedCursor should scan the BINs only. If
     * true, the performance of the disk ordered scan will be better, because
     * LNs are not read from disk. However, in this case, the data portion
     * of a record will be returned only if it is embedded in the BIN;
     * otherwise only the key will be returned.
     *
     * @param binsOnly If true, return keys and, if available, the associated
     * embedded data.
     *
     * @return this
     */
    public DiskOrderedCursorConfig setBINsOnly(final boolean binsOnly) {
        setBINsOnlyVoid(binsOnly);
        return this;
    }

    /**
     * @hidden
     * The void return setter for use by Bean editors.
     */
    public void setBINsOnlyVoid(final boolean binsOnly) {
        this.binsOnly = binsOnly;
    }

    /**
     * Returns true if the DiskOrderedCursor is configured to scan BINs only,
     * returning all record keys and only those record data that are embedded
     * in the BINs.
     *
     * @return true if the DiskOrderedCursor is configured to scan BINs only.
     */
    public boolean getBINsOnly() {
        return binsOnly;
    }

    /**
     * Set the maximum number of LSNs to gather and sort at any one time.  The
     * default is an unlimited number of LSNs.  Setting this lower causes the
     * DiskOrderedScan to use less memory, but it sorts and processes LSNs more
     * frequently thereby causing slower performance.  Setting this higher will
     * in general improve performance at the expense of memory.  Each LSN uses
     * 16 bytes of memory.
     *
     * @param lsnBatchSize the maximum number of LSNs to accumulate and sort
     * per batch.
     *
     * @return this
     */
    public DiskOrderedCursorConfig setLSNBatchSize(final long lsnBatchSize) {
        setLSNBatchSizeVoid(lsnBatchSize);
        return this;
    }

    /**
     * @hidden
     * The void return setter for use by Bean editors.
     */
    public void setLSNBatchSizeVoid(final long lsnBatchSize) {
        this.lsnBatchSize = lsnBatchSize;
    }

    /**
     * Returns the maximum number of LSNs to be sorted that this
     * DiskOrderedCursor is configured for.
     *
     * @return the maximum number of LSNs to be sorted that this
     * DiskOrderedCursor is configured for.
     */
    public long getLSNBatchSize() {
        return lsnBatchSize;
    }

    /**
     * Set the maximum amount of JE Cache Memory that the DiskOrderedScan
     * can use at one time.  The default is an unlimited amount of memory.
     * Setting this lower causes the DiskOrderedScan to use less memory, but it
     * sorts and processes LSNs more frequently thereby generally causing slower
     * performance.  Setting this higher will in general improve performance at
     * the expense of JE cache memory.
     *
     * @param internalMemoryLimit the maximum number of non JE Cache bytes to
     * use.
     *
     * @return this
     *
     * @see Cache
     * Statistics: Unexpected Sizes
     */
    public DiskOrderedCursorConfig setInternalMemoryLimit(
        final long internalMemoryLimit) {
        setInternalMemoryLimitVoid(internalMemoryLimit);
        return this;
    }

    /**
     * @hidden
     * The void return setter for use by Bean editors.
     */
    public void setInternalMemoryLimitVoid(final long internalMemoryLimit) {
        this.internalMemoryLimit = internalMemoryLimit;
    }

    /**
     * Returns the maximum amount of JE Cache Memory that the
     * DiskOrderedScan can use at one time.
     *
     * @return the maximum amount of non JE Cache Memory that preload can use at
     * one time.
     */
    public long getInternalMemoryLimit() {
        return internalMemoryLimit;
    }

    /**
     * Set the queue size for entries being passed between the
     * DiskOrderedCursor producer thread and the application's consumer
     * thread. If the queue size reaches this number of entries, the producer
     * thread will block until the application thread removes one or more
     * entries (by calling ForwardCursor.getNext().  The default is 1000.
     *
     * @param queueSize the maximum number of entries the queue can hold before
     * the producer thread blocks.
     *
     * @return this
     */
    public DiskOrderedCursorConfig setQueueSize(final int queueSize) {
        setQueueSizeVoid(queueSize);
        return this;
    }

    /**
     * @hidden
     * The void return setter for use by Bean editors.
     */
    public void setQueueSizeVoid(final int queueSize) {
        this.queueSize = queueSize;
    }

    /**
     * Returns the maximum number of entries in the queue before the
     * DiskOrderedCursor producer thread blocks.
     *
     * @return the maximum number of entries in the queue before the
     * DiskOrderedCursor producer thread blocks.
     */
    public int getQueueSize() {
        return queueSize;
    }

    /**
     * @deprecated this method has no effect and will be removed in a future
     * release.
     */
    public DiskOrderedCursorConfig setMaxSeedMillisecs(
        final long maxSeedMillisecs) {
        return this;
    }

    /**
     * @hidden
     * The void return setter for use by Bean editors.
     */
    public void setMaxSeedMillisecsVoid(final long maxSeedMillisecs) {
    }

    /**
     * @deprecated this method returns zero and will be removed in a future
     * release.
     */
    public long getMaxSeedMillisecs() {
        return 0;
    }

    /**
     * @deprecated this method has no effect and will be removed in a future
     * release.
     */
    public DiskOrderedCursorConfig setMaxSeedNodes(final long maxSeedNodes) {
        return this;
    }

    /**
     * @hidden
     * The void return setter for use by Bean editors.
     */
    public void setMaxSeedNodesVoid(final long maxSeedNodes) {
    }

    /**
     * @deprecated this method returns zero and will be removed in a future
     * release.
     */
    public long getMaxSeedNodes() {
        return 0;
    }

    /**
     * @hidden
     */
    public DiskOrderedCursorConfig setSerialDBScan(final boolean v) {
        setSerialDBScanVoid(v);
        return this;
    }

    /**
     * @hidden
     */
    public void setSerialDBScanVoid(final boolean v) {
        this.serialDBScan = v;
    }

    /**
     * @hidden
     */
    public boolean getSerialDBScan() {
        return this.serialDBScan;
    }

    /**
     * @hidden
     */
    public DiskOrderedCursorConfig setDebug(final boolean v) {
        setDebugVoid(v);
        return this;
    }

    /**
     * @hidden
     */
    public void setDebugVoid(final boolean v) {
        this.debug = v;
    }

    /**
     * @hidden
     */
    public boolean getDebug() {
        return this.debug;
    }

    /**
     * Returns a copy of this configuration object.
     */
    @Override
    public DiskOrderedCursorConfig clone() {
        try {
            return (DiskOrderedCursorConfig) super.clone();
        } catch (CloneNotSupportedException willNeverOccur) {
            return null;
        }
    }

    /**
     * Returns the values for each configuration attribute.
     *
     * @return the values for each configuration attribute.
     */
    @Override
    public String toString() {
        return "keysOnly=" + keysOnly +
            "\nlsnBatchSize=" + lsnBatchSize +
            "\ninternalMemoryLimit=" + internalMemoryLimit +
            "\nqueueSize=" + queueSize;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy