|
Berkeley DB Java Edition version 3.3.75 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sleepycat.je.Environment
public class Environment
A database environment. Environments include support for some or all of caching, locking, logging and transactions.
To open an existing environment with default attributes the application may use a default environment configuration object or null:
// Open an environment handle with default attributes. Environment env = new Environment(home, new EnvironmentConfig());
or
Environment env = new Environment(home, null);
Note that many Environment objects may access a single environment.
To create an environment or customize attributes, the application should customize the configuration class. For example:
EnvironmentConfig envConfig = new EnvironmentConfig(); envConfig.setTransactional(true); envConfig.setAllowCreate(true); envConfig.setCacheSize(1000000);Environment newlyCreatedEnv = new Environment(home, envConfig);
Note that environment configuration parameters can also be set through the <environment home>/je.properties file. This file takes precedence over any programmatically specified configuration parameters so that configuration changes can be made without recompiling. Environment configuration follows this order of precedence:
An environment handle is an Environment instance. More than one Environment instance may be created for the same physical directory, which is the same as saying that more than one Environment handle may be open at one time for a given environment.
The Environment handle should not be closed while any other handle remains open that is using it as a reference (for example,Database
or Transaction
. Once Environment.close
is called, this object may not be accessed again,
regardless of whether or not it throws an exception.
Constructor Summary | |
---|---|
Environment(File envHome,
EnvironmentConfig configuration)
Creates a database environment handle. |
Method Summary | |
---|---|
Transaction |
beginTransaction(Transaction parent,
TransactionConfig txnConfig)
Creates a new transaction in the database environment. |
void |
checkpoint(CheckpointConfig ckptConfig)
Synchronously checkpoint the database environment. |
int |
cleanLog()
Synchronously invokes database environment log cleaning. |
void |
close()
The Environment.close method closes the Berkeley DB environment. |
void |
compress()
Synchronously invokes the compressor mechanism which compacts in memory data structures after delete operations. |
void |
evictMemory()
Synchronously invokes the mechanism for keeping memory usage within the cache size boundaries. |
EnvironmentConfig |
getConfig()
Returns this object's configuration. |
List<String> |
getDatabaseNames()
Returns a List of database names for the database environment. |
File |
getHome()
Returns the database environment's home directory. |
LockStats |
getLockStats(StatsConfig config)
Returns the database environment's locking statistics. |
EnvironmentMutableConfig |
getMutableConfig()
Returns database environment attributes. |
EnvironmentStats |
getStats(StatsConfig config)
Returns the general database environment statistics. |
Transaction |
getThreadTransaction()
Returns the transaction associated with this thread if implied transactions are being used. |
TransactionStats |
getTransactionStats(StatsConfig config)
Returns the database environment's transactional statistics. |
Database |
openDatabase(Transaction txn,
String databaseName,
DatabaseConfig dbConfig)
Opens, and optionally creates, a Database . |
SecondaryDatabase |
openSecondaryDatabase(Transaction txn,
String databaseName,
Database primaryDatabase,
SecondaryConfig dbConfig)
Opens and optionally creates a SecondaryDatabase . |
void |
removeDatabase(Transaction txn,
String databaseName)
Removes a database. |
void |
renameDatabase(Transaction txn,
String databaseName,
String newName)
Renames a database. |
void |
setMutableConfig(EnvironmentMutableConfig mutableConfig)
Sets database environment attributes. |
void |
setThreadTransaction(Transaction txn)
Sets the transaction associated with this thread if implied transactions are being used. |
void |
sync()
Synchronously flushes database environment databases to stable storage. |
long |
truncateDatabase(Transaction txn,
String databaseName,
boolean returnCount)
Empties the database, discarding all records it contains. |
boolean |
verify(VerifyConfig config,
PrintStream out)
Returns if the database environment is consistent and correct. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public Environment(File envHome, EnvironmentConfig configuration) throws DatabaseException, EnvironmentLockedException
envHome
- The database environment's home directory.configuration
- The database environment attributes. If null,
default attributes are used.
IllegalArgumentException
- if an invalid parameter was specified.
DatabaseException
- if a failure occurs.
EnvironmentLockedException
- when an environment cannot be opened
for write access because another process has the same environment open
for write access.Method Detail |
---|
public void close() throws DatabaseException
When the last environment handle is closed, allocated resources are freed, and daemon threads are stopped, even if they are performing work. For example, if the cleaner is still cleaning the log, it will be stopped at the next reasonable opportunity and perform no more cleaning operations.
The Environment handle should not be closed while any other handle
that refers to it is not yet closed; for example, database environment
handles must not be closed while database handles remain open, or
transactions in the environment have not yet committed or aborted.
Specifically, this includes Database
,
Cursor
and Transaction
handles.
In multithreaded applications, only a single thread should call Environment.close. Other callers will see a DatabaseException complaining that the handle is already closed.
After Environment.close has been called, regardless of its return, the Berkeley DB environment handle may not be accessed again.
DatabaseException
- if a failure occurs.public Database openDatabase(Transaction txn, String databaseName, DatabaseConfig dbConfig) throws DatabaseException
Database
.
txn
- For a transactional database, an explicit transaction may be
specified, or null may be specified to use auto-commit. For a
non-transactional database, null must be specified.databaseName
- The name of the database.dbConfig
- The database attributes. If null, default attributes
are used.
DatabaseNotFoundException
- if the database file does not exist.
DatabaseException
- if a failure occurs.public SecondaryDatabase openSecondaryDatabase(Transaction txn, String databaseName, Database primaryDatabase, SecondaryConfig dbConfig) throws DatabaseException
SecondaryDatabase
.
Note that the associations between primary and secondary databases are not stored persistently. Whenever a primary database is opened for write access by the application, the appropriate associated secondary databases should also be opened by the application. This is necessary to ensure data integrity when changes are made to the primary database.
txn
- For a transactional database, an explicit transaction may be
specified, or null may be specified to use auto-commit. For a
non-transactional database, null must be specified.databaseName
- The name of the database.primaryDatabase
- the primary database with which the secondary
database will be associated. The primary database must not be
configured for duplicates.dbConfig
- The secondary database attributes. If null, default
attributes are used.
DatabaseNotFoundException
- if the database file does not exist.
DatabaseException
- if a failure occurs.public void removeDatabase(Transaction txn, String databaseName) throws DatabaseException
Applications should never remove databases with open Database
handles.
txn
- For a transactional environment, an explicit transaction
may be specified or null may be specified to use auto-commit. For a
non-transactional environment, null must be specified.databaseName
- The database to be removed.
DeadlockException
- if the operation was selected to resolve a
deadlock.
DatabaseNotFoundException
- if the database file does not exist.
DatabaseException
- if a failure occurs.public void renameDatabase(Transaction txn, String databaseName, String newName) throws DatabaseException
Applications should never rename databases with open Database
handles.
txn
- For a transactional environment, an explicit transaction
may be specified or null may be specified to use auto-commit. For a
non-transactional environment, null must be specified.databaseName
- The new name of the database.
DeadlockException
- if the operation was selected to resolve a
deadlock.
DatabaseNotFoundException
- if the database file does not exist.
DatabaseException
- if a failure occurs.public long truncateDatabase(Transaction txn, String databaseName, boolean returnCount) throws DatabaseException
When called on a database configured with secondary indices, the application is responsible for also truncating all associated secondary indices.
Applications should never truncate databases with open Database
handles.
txn
- For a transactional environment, an explicit transaction may
be specified or null may be specified to use auto-commit. For a
non-transactional environment, null must be specified.databaseName
- The database to be truncated.returnCount
- If true, count and return the number of records
discarded.
DeadlockException
- if the operation was selected to resolve a
deadlock.
DatabaseNotFoundException
- if the database file does not exist.
DatabaseException
- if a failure occurs.public File getHome() throws DatabaseException
DatabaseException
- if a failure occurs.public Transaction beginTransaction(Transaction parent, TransactionConfig txnConfig) throws DatabaseException
Transaction handles are free-threaded; transactions handles may be used concurrently by multiple threads.
Cursors may not span transactions; that is, each cursor must be opened and closed within a single transaction. The parent parameter is a placeholder for nested transactions, and must currently be null.
txnConfig
- The transaction attributes. If null, default
attributes are used.
DatabaseException
- if a failure occurs.public void checkpoint(CheckpointConfig ckptConfig) throws DatabaseException
This is an optional action for the application since this activity is, by default, handled by a database environment owned background thread.
ckptConfig
- The checkpoint attributes. If null, default
attributes are used.
DatabaseException
- if a failure occurs.public void sync() throws DatabaseException
DatabaseException
- if a failure occurs.public int cleanLog() throws DatabaseException
Zero or more log files will be cleaned as necessary to bring the disk
space utilization of the environment above the configured minimum
utilization threshold. The threshold is determined by the
je.cleaner.minUtilization
configuration setting.
Note that cleanLog
does not perform the complete task of
cleaning a log file. Eviction and checkpointing migrate records that
are marked by the cleaner, and a full checkpoint is necessary following
cleaning before cleaned files will be deleted (or renamed). Checkpoints
normally occur periodically and when the environment is closed.
This is an optional action for the application since this activity is, by default, handled by a database environment owned background thread.
There are two intended use cases for the cleanLog
method. The first case is where the application wishes to disable the
built-in cleaner thread. To replace the functionality of the cleaner
thread, the application should call cleanLog
periodically.
In the second use case, "batch cleaning", the application disables
the cleaner thread for maximum performance during active periods, and
calls cleanLog
during periods when the application is
quiescent or less active than usual. If the cleaner has a large number
of files to clean, cleanLog
may stop without reaching the
target utilization; to ensure that the target utilization is reached,
cleanLog
should be called in a loop until it returns
zero. And to complete the work of cleaning, a checkpoint is necessary.
An example of performing batch cleaning follows.
Environment env; boolean anyCleaned = false; while (env.cleanLog() > 0) { anyCleaned = true; } if (anyCleaned) { CheckpointConfig force = new CheckpointConfig(); force.setForce(true); env.checkpoint(force); }
DatabaseException
- if a failure occurs.public void evictMemory() throws DatabaseException
This is an optional action for the application since this activity is, by default, handled by a database environment owned background thread.
DatabaseException
- if a failure occurs.public void compress() throws DatabaseException
This is an optional action for the application since this activity is, by default, handled by a database environment owned background thread.
DatabaseException
- if a failure occurs.public EnvironmentConfig getConfig() throws DatabaseException
DatabaseException
- if a failure occurs.public void setMutableConfig(EnvironmentMutableConfig mutableConfig) throws DatabaseException
Attributes only apply to a specific Environment object and are not necessarily shared by other Environment objects accessing this database environment.
mutableConfig
- The database environment attributes. If null,
default attributes are used.
DatabaseException
- if a failure occurs.public EnvironmentMutableConfig getMutableConfig() throws DatabaseException
DatabaseException
- if a failure occurs.public EnvironmentStats getStats(StatsConfig config) throws DatabaseException
config
- The general statistics attributes. If null, default
attributes are used.
DatabaseException
- if a failure occurs.public LockStats getLockStats(StatsConfig config) throws DatabaseException
config
- The locking statistics attributes. If null, default
attributes are used.
DatabaseException
- if a failure occurs.public TransactionStats getTransactionStats(StatsConfig config) throws DatabaseException
config
- The transactional statistics attributes. If null,
default attributes are used.
DatabaseException
- if a failure occurs.public List<String> getDatabaseNames() throws DatabaseException
Each element in the list is a String.
DatabaseException
- if a failure occurs.public boolean verify(VerifyConfig config, PrintStream out) throws DatabaseException
Verification is an expensive operation that should normally only be used for troubleshooting and debugging.
config
- The verification attributes. If null, default
attributes are used.out
- The stream to which verification debugging information is
written.
DatabaseException
- if a failure occurs.public Transaction getThreadTransaction() throws DatabaseException
DatabaseException
public void setThreadTransaction(Transaction txn)
|
Berkeley DB Java Edition version 3.3.75 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |