Berkeley DB
version 4.5.20

com.sleepycat.db
Class SecondaryConfig

java.lang.Object
  extended by com.sleepycat.db.DatabaseConfig
      extended by com.sleepycat.db.SecondaryConfig
All Implemented Interfaces:
Cloneable

public class SecondaryConfig
extends DatabaseConfig
implements Cloneable

The configuration properties of a SecondaryDatabase extend those of a primary Database. The secondary database configuration is specified when calling Environment.openSecondaryDatabase.

To create a configuration object with default attributes:

    SecondaryConfig config = new SecondaryConfig();
To set custom attributes:
    SecondaryConfig config = new SecondaryConfig();
    config.setAllowCreate(true);
    config.setSortedDuplicates(true);
    config.setKeyCreator(new MyKeyCreator());


NOTE: There are two situations where the use of secondary databases without transactions requires special consideration. When using a transactional database or when doing read operations only, this note does not apply.

In both cases, the operation will be partially complete because the primary database record will have already been updated or deleted. In the presence of transactions, the exception will cause the transaction to abort. Without transactions, it is the responsibility of the caller to handle the results of the incomplete update or to take steps to prevent this situation from happening in the first place.

See Also:
Environment.openSecondaryDatabase, SecondaryDatabase

Field Summary
static SecondaryConfig DEFAULT
           
 
Constructor Summary
SecondaryConfig()
          Creates an instance with the system's default settings.
 
Method Summary
 boolean getAllowPopulate()
          Returns whether automatic population of the secondary is allowed.
 boolean getImmutableSecondaryKey()
          Returns whether the secondary key is immutable.
 SecondaryKeyCreator getKeyCreator()
          Returns the user-supplied object used for creating single-valued secondary keys.
 void setAllowPopulate(boolean allowPopulate)
          Specifies whether automatic population of the secondary is allowed.
 void setImmutableSecondaryKey(boolean immutableSecondaryKey)
          Specifies whether the secondary key is immutable.
 void setKeyCreator(SecondaryKeyCreator keyCreator)
          Specifies the user-supplied object used for creating single-valued secondary keys.
 
Methods inherited from class com.sleepycat.db.DatabaseConfig
getAllowCreate, getBtreeComparator, getBtreeMinKey, getBtreePrefixCalculator, getBtreeRecordNumbers, getByteOrder, getByteSwapped, getCacheCount, getCacheSize, getChecksum, getDirtyRead, getDuplicateComparator, getEncrypted, getErrorHandler, getErrorPrefix, getErrorStream, getExclusiveCreate, getFeedbackHandler, getHasher, getHashFillFactor, getHashNumElements, getMessageHandler, getMessageStream, getMode, getMultiversion, getNoMMap, getPageSize, getPanicHandler, getQueueExtentSize, getQueueInOrder, getReadOnly, getReadUncommitted, getRecordDelimiter, getRecordLength, getRecordNumberAppender, getRecordPad, getRecordSource, getRenumbering, getReverseSplitOff, getSnapshot, getSortedDuplicates, getTransactional, getTransactionNotDurable, getTruncate, getType, getUnsortedDuplicates, getXACreate, setAllowCreate, setBtreeComparator, setBtreeMinKey, setBtreePrefixCalculator, setBtreeRecordNumbers, setByteOrder, setCacheCount, setCacheSize, setChecksum, setDirtyRead, setDuplicateComparator, setEncrypted, setErrorHandler, setErrorPrefix, setErrorStream, setExclusiveCreate, setFeedbackHandler, setHasher, setHashFillFactor, setHashNumElements, setMessageHandler, setMessageStream, setMode, setMultiversion, setNoMMap, setPageSize, setPanicHandler, setQueueExtentSize, setQueueInOrder, setReadOnly, setReadUncommitted, setRecordDelimiter, setRecordLength, setRecordNumberAppender, setRecordPad, setRecordSource, setRenumbering, setReverseSplitOff, setSnapshot, setSortedDuplicates, setTransactional, setTransactionNotDurable, setTruncate, setType, setUnsortedDuplicates, setXACreate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT

public static final SecondaryConfig DEFAULT
Constructor Detail

SecondaryConfig

public SecondaryConfig()
Creates an instance with the system's default settings.

Method Detail

setKeyCreator

public void setKeyCreator(SecondaryKeyCreator keyCreator)
Specifies the user-supplied object used for creating single-valued secondary keys.

Unless the primary database is read-only, a key creator is required when opening a secondary database. Either a KeyCreator or MultiKeyCreator must be specified, but both may not be specified.

Unless the primary database is read-only, a key creator is required when opening a secondary database.

Parameters:
keyCreator - the user-supplied object used for creating single-valued secondary keys.

getKeyCreator

public SecondaryKeyCreator getKeyCreator()
Returns the user-supplied object used for creating single-valued secondary keys.

Returns:
the user-supplied object used for creating single-valued secondary keys.

See Also:
setKeyCreator(com.sleepycat.db.SecondaryKeyCreator)

setAllowPopulate

public void setAllowPopulate(boolean allowPopulate)
Specifies whether automatic population of the secondary is allowed.

If automatic population is allowed, when the secondary database is opened it is checked to see if it is empty. If it is empty, the primary database is read in its entirety and keys are added to the secondary database using the information read from the primary.

If this property is set to true and the environment is transactional, the secondary database must be opened within a transaction.

Parameters:
allowPopulate - whether automatic population of the secondary is allowed.

getAllowPopulate

public boolean getAllowPopulate()
Returns whether automatic population of the secondary is allowed. If setAllowPopulate(boolean) has not been called, this method returns false.

Returns:
whether automatic population of the secondary is allowed.

See Also:
setAllowPopulate(boolean)

setImmutableSecondaryKey

public void setImmutableSecondaryKey(boolean immutableSecondaryKey)
Specifies whether the secondary key is immutable.

Specifying that a secondary key is immutable can be used to optimize updates when the secondary key in a primary record will never be changed after that primary record is inserted. For immutable secondary keys, a best effort is made to avoid calling SecondaryKeyCreator.createSecondaryKey when a primary record is updated. This optimization may reduce the overhead of an update operation significantly if the createSecondaryKey operation is expensive.

Be sure to set this property to true only if the secondary key in the primary record is never changed. If this rule is violated, the secondary index will become corrupted, that is, it will become out of sync with the primary.

Parameters:
immutableSecondaryKey - whether the secondary key is immutable.

getImmutableSecondaryKey

public boolean getImmutableSecondaryKey()
Returns whether the secondary key is immutable. If setImmutableSecondaryKey(boolean) has not been called, this method returns false.

Returns:
whether the secondary key is immutable.

See Also:
setImmutableSecondaryKey(boolean)

Berkeley DB
version 4.5.20

Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.