Class DB
- java.lang.Object
-
- org.mapdb.DB
-
- All Implemented Interfaces:
- java.io.Closeable, java.lang.AutoCloseable
public class DB extends java.lang.Object implements java.io.CloseableA database with easy access to named maps and other collections.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class and Description static classDB.BTreeMapMakerclassDB.BTreeSetMakerstatic classDB.HTreeMapMakerclassDB.HTreeSetMaker
-
Field Summary
Fields Modifier and Type Field and Description static java.lang.StringMETRICS_CACHE_HITstatic java.lang.StringMETRICS_CACHE_MISSstatic java.lang.StringMETRICS_DATA_READstatic java.lang.StringMETRICS_DATA_WRITEstatic java.lang.StringMETRICS_RECORD_READstatic java.lang.StringMETRICS_RECORD_WRITE
-
Constructor Summary
Constructors Constructor and Description DB(Engine engine)Construct new DB.DB(Engine engine, boolean strictDBGet, boolean deleteFilesAfterClose, java.util.concurrent.ScheduledExecutorService executor, boolean lockDisable, java.util.concurrent.ScheduledExecutorService metricsExecutor, long metricsLogInterval, java.util.concurrent.ScheduledExecutorService storeExecutor, java.util.concurrent.ScheduledExecutorService cacheExecutor, Fun.Function1<java.lang.Class,java.lang.String> classLoader)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method and Description Atomic.BooleanatomicBoolean(java.lang.String name)Atomic.BooleanatomicBooleanCreate(java.lang.String name, boolean initValue)Atomic.IntegeratomicInteger(java.lang.String name)Atomic.IntegeratomicIntegerCreate(java.lang.String name, int initValue)Atomic.LongatomicLong(java.lang.String name)Atomic.LongatomicLongCreate(java.lang.String name, long initValue)Atomic.StringatomicString(java.lang.String name)Atomic.StringatomicStringCreate(java.lang.String name, java.lang.String initValue)<E> Atomic.Var<E>atomicVar(java.lang.String name)<E> Atomic.Var<E>atomicVar(java.lang.String name, Serializer<E> serializer)<E> Atomic.Var<E>atomicVarCreate(java.lang.String name, E initValue, Serializer<E> serializer)<A> AcatGet(java.lang.String name)<A> AcatGet(java.lang.String name, A init)<A> AcatPut(java.lang.String name, A value)<A> AcatPut(java.lang.String name, A value, A retValueIfNull)voidcheckNameNotExists(java.lang.String name)Checks that object with given name does not exist yet.voidcheckNotClosed()voidcheckShouldCreate(java.lang.String name)voidcheckType(java.lang.String type, java.lang.String expected)voidclose()Closes database.voidcommit()Commit changes made on collections loaded by this DBvoidcompact()Perform storage maintenance.java.util.concurrent.locks.ReadWriteLockconsistencyLock()Returns consistency lock which groups operation together and ensures consistency.Atomic.BooleancreateAtomicBoolean(java.lang.String name, boolean initValue)Deprecated.method renamed, useatomicBooleanCreate(String, boolean)Atomic.IntegercreateAtomicInteger(java.lang.String name, int initValue)Deprecated.method renamed, useatomicIntegerCreate(String, int)Atomic.LongcreateAtomicLong(java.lang.String name, long initValue)Deprecated.method renamed, useatomicLongCreate(String, long)Atomic.StringcreateAtomicString(java.lang.String name, java.lang.String initValue)Deprecated.method renamed, useatomicStringCreate(String, String)<E> Atomic.Var<E>createAtomicVar(java.lang.String name, E initValue, Serializer<E> serializer)Deprecated.method renamed, useatomicVarCreate(String, Object, Serializer)<E> java.util.concurrent.BlockingQueue<E>createCircularQueue(java.lang.String name, Serializer<E> serializer, long size)Deprecated.queues API is going to be reworkedDB.HTreeMapMakercreateHashMap(java.lang.String name)Deprecated.method renamed, usehashMapCreate(String)DB.HTreeSetMakercreateHashSet(java.lang.String name)Deprecated.method renamed, usehashSetCreate(String)<E> java.util.concurrent.BlockingQueue<E>createQueue(java.lang.String name, Serializer<E> serializer, boolean useLocks)Deprecated.queues API is going to be reworked<E> java.util.concurrent.BlockingQueue<E>createStack(java.lang.String name, Serializer<E> serializer, boolean useLocks)Deprecated.queues API is going to be reworkedDB.BTreeMapMakercreateTreeMap(java.lang.String name)Deprecated.method renamed, usetreeMapCreate(String)DB.BTreeSetMakercreateTreeSet(java.lang.String name)Deprecated.method renamed, usetreeSetCreate(String)voiddelete(java.lang.String name)delete record/collection with given namebooleanexists(java.lang.String name)<E> Eget(java.lang.String name)return record with given name or null if name does not existjava.util.Map<java.lang.String,java.lang.Object>getAll()return map of all named collections/recordsAtomic.BooleangetAtomicBoolean(java.lang.String name)Deprecated.method renamed, useatomicBoolean(String)Atomic.IntegergetAtomicInteger(java.lang.String name)Deprecated.method renamed, useatomicInteger(String)Atomic.LonggetAtomicLong(java.lang.String name)Deprecated.method renamed, useatomicLong(String)Atomic.StringgetAtomicString(java.lang.String name)Deprecated.method renamed, useatomicString(String)<E> Atomic.Var<E>getAtomicVar(java.lang.String name)Deprecated.method renamed, useatomicVar(String)java.util.SortedMap<java.lang.String,java.lang.Object>getCatalog()Get Name Catalog.<E> java.util.concurrent.BlockingQueue<E>getCircularQueue(java.lang.String name)Deprecated.queues API is going to be reworkedSerializergetDefaultSerializer()EnginegetEngine()java.lang.ObjectgetFromWeakCollection(java.lang.String name)All collections are weakly referenced to prevent two instances of the same collection in memory.<K,V> HTreeMap<K,V>getHashMap(java.lang.String name)Deprecated.method renamed, usehashMap(String)<K,V> HTreeMap<K,V>getHashMap(java.lang.String name, Fun.Function1<V,K> valueCreator)Deprecated.method renamed, usehashMap(String,Serializer, Serializer, org.mapdb.Fun.Function1)<K> java.util.Set<K>getHashSet(java.lang.String name)Deprecated.method renamed, usehashSet(String)java.lang.StringgetNameForObject(java.lang.Object obj)Get name for object.<E> java.util.concurrent.BlockingQueue<E>getQueue(java.lang.String name)Deprecated.queues API is going to be reworked<E> java.util.concurrent.BlockingQueue<E>getStack(java.lang.String name)Deprecated.queues API is going to be reworked<K,V> BTreeMap<K,V>getTreeMap(java.lang.String name)Deprecated.method renamed, usetreeMap(String)<K> java.util.NavigableSet<K>getTreeSet(java.lang.String name)Deprecated.method renamed, usetreeSet(String)<K,V> HTreeMap<K,V>hashMap(java.lang.String name)Opens existing or creates new Hash Tree Map.<K,V> HTreeMap<K,V>hashMap(java.lang.String name, Serializer<K> keySerializer, Serializer<V> valueSerializer)Opens existing or creates new Hash Tree Map.<K,V> HTreeMap<K,V>hashMap(java.lang.String name, Serializer<K> keySerializer, Serializer<V> valueSerializer, Fun.Function1<V,K> valueCreator)Opens existing or creates new Hash Tree Map.DB.HTreeMapMakerhashMapCreate(java.lang.String name)Returns new builder for HashMap with given name<K> java.util.Set<K>hashSet(java.lang.String name)Opens existing or creates new Hash Tree Set.<K> java.util.Set<K>hashSet(java.lang.String name, Serializer<K> serializer)DB.HTreeSetMakerhashSetCreate(java.lang.String name)Creates new HashSetbooleanisClosed()java.util.Map<java.lang.String,java.lang.Long>metricsGet()voidmetricsLog()<V> VnamedPut(java.lang.String name, java.lang.Object ret)voidrename(java.lang.String oldName, java.lang.String newName)rename named record into newNamevoidrollback()Rollback changes made on collections loaded by this DBDBsnapshot()Make readonly snapshot view of DB and all of its collection Collections loaded by this instance are not affected (are still mutable).<K,V> BTreeMap<K,V>treeMap(java.lang.String name)Opens existing or creates new B-linked-tree Map.<K,V> BTreeMap<K,V>treeMap(java.lang.String name, BTreeKeySerializer keySerializer, Serializer<V> valueSerializer)<K,V> BTreeMap<K,V>treeMap(java.lang.String name, Serializer<K> keySerializer, Serializer<V> valueSerializer)DB.BTreeMapMakertreeMapCreate(java.lang.String name)Returns new builder for TreeMap with given name<K> java.util.NavigableSet<K>treeSet(java.lang.String name)Opens existing or creates new B-linked-tree Set.<K> java.util.NavigableSet<K>treeSet(java.lang.String name, BTreeKeySerializer serializer)<K> java.util.NavigableSet<K>treeSet(java.lang.String name, Serializer serializer)<K> java.util.NavigableSet<K>treeSetCreate(DB.BTreeSetMaker m)DB.BTreeSetMakertreeSetCreate(java.lang.String name)Creates new TreeSet.
-
-
-
Field Detail
-
METRICS_DATA_WRITE
public static final java.lang.String METRICS_DATA_WRITE
- See Also:
- Constant Field Values
-
METRICS_RECORD_WRITE
public static final java.lang.String METRICS_RECORD_WRITE
- See Also:
- Constant Field Values
-
METRICS_DATA_READ
public static final java.lang.String METRICS_DATA_READ
- See Also:
- Constant Field Values
-
METRICS_RECORD_READ
public static final java.lang.String METRICS_RECORD_READ
- See Also:
- Constant Field Values
-
METRICS_CACHE_HIT
public static final java.lang.String METRICS_CACHE_HIT
- See Also:
- Constant Field Values
-
METRICS_CACHE_MISS
public static final java.lang.String METRICS_CACHE_MISS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DB
public DB(Engine engine)
Construct new DB. It is just thin layer overEnginewhich does the real work.- Parameters:
engine-
-
DB
public DB(Engine engine, boolean strictDBGet, boolean deleteFilesAfterClose, java.util.concurrent.ScheduledExecutorService executor, boolean lockDisable, java.util.concurrent.ScheduledExecutorService metricsExecutor, long metricsLogInterval, java.util.concurrent.ScheduledExecutorService storeExecutor, java.util.concurrent.ScheduledExecutorService cacheExecutor, Fun.Function1<java.lang.Class,java.lang.String> classLoader)
-
-
Method Detail
-
metricsLog
public void metricsLog()
-
metricsGet
public java.util.Map<java.lang.String,java.lang.Long> metricsGet()
-
catGet
public <A> A catGet(java.lang.String name, A init)
-
catGet
public <A> A catGet(java.lang.String name)
-
catPut
public <A> A catPut(java.lang.String name, A value)
-
catPut
public <A> A catPut(java.lang.String name, A value, A retValueIfNull)
-
getNameForObject
public java.lang.String getNameForObject(java.lang.Object obj)
Get name for object. DB keeps weak reference to all objects it instanciated- Parameters:
obj- object to get name for- Returns:
- name for this object, if it has name and was instanciated by this DB
-
getHashMap
public <K,V> HTreeMap<K,V> getHashMap(java.lang.String name)
Deprecated. method renamed, usehashMap(String)
-
hashMap
public <K,V> HTreeMap<K,V> hashMap(java.lang.String name)
Opens existing or creates new Hash Tree Map. This collection perform well under concurrent access. Is best for large keys and large values.- Parameters:
name- of the map- Returns:
- map
-
getHashMap
public <K,V> HTreeMap<K,V> getHashMap(java.lang.String name, Fun.Function1<V,K> valueCreator)
Deprecated. method renamed, usehashMap(String,Serializer, Serializer, org.mapdb.Fun.Function1)
-
hashMap
public <K,V> HTreeMap<K,V> hashMap(java.lang.String name, Serializer<K> keySerializer, Serializer<V> valueSerializer)
Opens existing or creates new Hash Tree Map. This collection perform well under concurrent access. Is best for large keys and large values.- Parameters:
name- of mapkeySerializer- serializer used on keysvalueSerializer- serializer used on values- Returns:
- map
-
hashMap
public <K,V> HTreeMap<K,V> hashMap(java.lang.String name, Serializer<K> keySerializer, Serializer<V> valueSerializer, Fun.Function1<V,K> valueCreator)
Opens existing or creates new Hash Tree Map. This collection perform well under concurrent access. Is best for large keys and large values.- Parameters:
name- of mapkeySerializer- serializer used on keysvalueSerializer- serializer used on valuesvalueCreator- if value is not found, new is created and placed into map.- Returns:
- map
-
namedPut
public <V> V namedPut(java.lang.String name, java.lang.Object ret)
-
createHashMap
public DB.HTreeMapMaker createHashMap(java.lang.String name)
Deprecated. method renamed, usehashMapCreate(String)
-
hashMapCreate
public DB.HTreeMapMaker hashMapCreate(java.lang.String name)
Returns new builder for HashMap with given name- Parameters:
name- of map to create- Returns:
- maker, call
.make()to create map - Throws:
java.lang.IllegalArgumentException- if name is already used
-
getHashSet
public <K> java.util.Set<K> getHashSet(java.lang.String name)
Deprecated. method renamed, usehashSet(String)
-
hashSet
public <K> java.util.Set<K> hashSet(java.lang.String name)
Opens existing or creates new Hash Tree Set.- Parameters:
name- of the Set- Returns:
- set
-
hashSet
public <K> java.util.Set<K> hashSet(java.lang.String name, Serializer<K> serializer)
-
createHashSet
public DB.HTreeSetMaker createHashSet(java.lang.String name)
Deprecated. method renamed, usehashSetCreate(String)
-
hashSetCreate
public DB.HTreeSetMaker hashSetCreate(java.lang.String name)
Creates new HashSet- Parameters:
name- of set to create
-
getTreeMap
public <K,V> BTreeMap<K,V> getTreeMap(java.lang.String name)
Deprecated. method renamed, usetreeMap(String)
-
treeMap
public <K,V> BTreeMap<K,V> treeMap(java.lang.String name)
Opens existing or creates new B-linked-tree Map. This collection performs well under concurrent access. Only trade-off are deletes, which causes tree fragmentation. It is ordered and best suited for small keys and values.- Parameters:
name- of map- Returns:
- map
-
treeMap
public <K,V> BTreeMap<K,V> treeMap(java.lang.String name, Serializer<K> keySerializer, Serializer<V> valueSerializer)
-
treeMap
public <K,V> BTreeMap<K,V> treeMap(java.lang.String name, BTreeKeySerializer keySerializer, Serializer<V> valueSerializer)
-
createTreeMap
public DB.BTreeMapMaker createTreeMap(java.lang.String name)
Deprecated. method renamed, usetreeMapCreate(String)
-
treeMapCreate
public DB.BTreeMapMaker treeMapCreate(java.lang.String name)
Returns new builder for TreeMap with given name- Parameters:
name- of map to create- Returns:
- maker, call
.make()to create map - Throws:
java.lang.IllegalArgumentException- if name is already used
-
getCatalog
public java.util.SortedMap<java.lang.String,java.lang.Object> getCatalog()
Get Name Catalog. It is metatable which contains information about named collections and records. Each collection constructor takes number of parameters, this map contains those parameters. _Note:_ Do not modify this map, unless you know what you are doing!- Returns:
- Name Catalog
-
getTreeSet
public <K> java.util.NavigableSet<K> getTreeSet(java.lang.String name)
Deprecated. method renamed, usetreeSet(String)
-
treeSet
public <K> java.util.NavigableSet<K> treeSet(java.lang.String name)
Opens existing or creates new B-linked-tree Set.- Parameters:
name- of set- Returns:
- set
-
treeSet
public <K> java.util.NavigableSet<K> treeSet(java.lang.String name, Serializer serializer)
-
treeSet
public <K> java.util.NavigableSet<K> treeSet(java.lang.String name, BTreeKeySerializer serializer)
-
createTreeSet
public DB.BTreeSetMaker createTreeSet(java.lang.String name)
Deprecated. method renamed, usetreeSetCreate(String)
-
treeSetCreate
public DB.BTreeSetMaker treeSetCreate(java.lang.String name)
Creates new TreeSet.- Parameters:
name- of set to create- Returns:
- maker used to construct set
- Throws:
java.lang.IllegalArgumentException- if name is already used
-
treeSetCreate
public <K> java.util.NavigableSet<K> treeSetCreate(DB.BTreeSetMaker m)
-
getQueue
public <E> java.util.concurrent.BlockingQueue<E> getQueue(java.lang.String name)
Deprecated. queues API is going to be reworkedWhy are queues methods deprecated?
I am not really happy with current implementation. But I also have no time to rewrite them in 2.0. So current version is going to stay in 2.0 with deprecated flag.
I am not sure what will happen in 2.1. Most likely I will redesign and extend Queues to include blocking, counted, full-dequeue implementation, multiple/single consumers/producers... etc. API will switch to some sort of Maker style pattern.
In case of new queue framework, I might keep old implementation, but move it to separate JAR. So storage format will not change, but it will use different API to instantiate Queues.
But there is also small chance I will remove deprecation flag and keep current implementation. I am not going to leave MapDB without at least some sort of Queue support.
So feel free to use current implementation, it will be supported for 2.0 lifecycle (probably 6+ months). But once 2.1 release with long-term support is out, there might be some migration needed.
Hope this makes sense
-
createQueue
public <E> java.util.concurrent.BlockingQueue<E> createQueue(java.lang.String name, Serializer<E> serializer, boolean useLocks)Deprecated. queues API is going to be reworkedWhy are queues methods deprecated?
I am not really happy with current implementation. But I also have no time to rewrite them in 2.0. So current version is going to stay in 2.0 with deprecated flag.
I am not sure what will happen in 2.1. Most likely I will redesign and extend Queues to include blocking, counted, full-dequeue implementation, multiple/single consumers/producers... etc. API will switch to some sort of Maker style pattern.
In case of new queue framework, I might keep old implementation, but move it to separate JAR. So storage format will not change, but it will use different API to instantiate Queues.
But there is also small chance I will remove deprecation flag and keep current implementation. I am not going to leave MapDB without at least some sort of Queue support.
So feel free to use current implementation, it will be supported for 2.0 lifecycle (probably 6+ months). But once 2.1 release with long-term support is out, there might be some migration needed.
Hope this makes sense
-
getStack
public <E> java.util.concurrent.BlockingQueue<E> getStack(java.lang.String name)
Deprecated. queues API is going to be reworkedWhy are queues methods deprecated?
I am not really happy with current implementation. But I also have no time to rewrite them in 2.0. So current version is going to stay in 2.0 with deprecated flag.
I am not sure what will happen in 2.1. Most likely I will redesign and extend Queues to include blocking, counted, full-dequeue implementation, multiple/single consumers/producers... etc. API will switch to some sort of Maker style pattern.
In case of new queue framework, I might keep old implementation, but move it to separate JAR. So storage format will not change, but it will use different API to instantiate Queues.
But there is also small chance I will remove deprecation flag and keep current implementation. I am not going to leave MapDB without at least some sort of Queue support.
So feel free to use current implementation, it will be supported for 2.0 lifecycle (probably 6+ months). But once 2.1 release with long-term support is out, there might be some migration needed.
Hope this makes sense
-
createStack
public <E> java.util.concurrent.BlockingQueue<E> createStack(java.lang.String name, Serializer<E> serializer, boolean useLocks)Deprecated. queues API is going to be reworkedWhy are queues methods deprecated?
I am not really happy with current implementation. But I also have no time to rewrite them in 2.0. So current version is going to stay in 2.0 with deprecated flag.
I am not sure what will happen in 2.1. Most likely I will redesign and extend Queues to include blocking, counted, full-dequeue implementation, multiple/single consumers/producers... etc. API will switch to some sort of Maker style pattern.
In case of new queue framework, I might keep old implementation, but move it to separate JAR. So storage format will not change, but it will use different API to instantiate Queues.
But there is also small chance I will remove deprecation flag and keep current implementation. I am not going to leave MapDB without at least some sort of Queue support.
So feel free to use current implementation, it will be supported for 2.0 lifecycle (probably 6+ months). But once 2.1 release with long-term support is out, there might be some migration needed.
Hope this makes sense
-
getCircularQueue
public <E> java.util.concurrent.BlockingQueue<E> getCircularQueue(java.lang.String name)
Deprecated. queues API is going to be reworkedWhy are queues methods deprecated?
I am not really happy with current implementation. But I also have no time to rewrite them in 2.0. So current version is going to stay in 2.0 with deprecated flag.
I am not sure what will happen in 2.1. Most likely I will redesign and extend Queues to include blocking, counted, full-dequeue implementation, multiple/single consumers/producers... etc. API will switch to some sort of Maker style pattern.
In case of new queue framework, I might keep old implementation, but move it to separate JAR. So storage format will not change, but it will use different API to instantiate Queues.
But there is also small chance I will remove deprecation flag and keep current implementation. I am not going to leave MapDB without at least some sort of Queue support.
So feel free to use current implementation, it will be supported for 2.0 lifecycle (probably 6+ months). But once 2.1 release with long-term support is out, there might be some migration needed.
Hope this makes sense
-
createCircularQueue
public <E> java.util.concurrent.BlockingQueue<E> createCircularQueue(java.lang.String name, Serializer<E> serializer, long size)Deprecated. queues API is going to be reworkedWhy are queues methods deprecated?
I am not really happy with current implementation. But I also have no time to rewrite them in 2.0. So current version is going to stay in 2.0 with deprecated flag.
I am not sure what will happen in 2.1. Most likely I will redesign and extend Queues to include blocking, counted, full-dequeue implementation, multiple/single consumers/producers... etc. API will switch to some sort of Maker style pattern.
In case of new queue framework, I might keep old implementation, but move it to separate JAR. So storage format will not change, but it will use different API to instantiate Queues.
But there is also small chance I will remove deprecation flag and keep current implementation. I am not going to leave MapDB without at least some sort of Queue support.
So feel free to use current implementation, it will be supported for 2.0 lifecycle (probably 6+ months). But once 2.1 release with long-term support is out, there might be some migration needed.
Hope this makes sense
-
createAtomicLong
public Atomic.Long createAtomicLong(java.lang.String name, long initValue)
Deprecated. method renamed, useatomicLongCreate(String, long)
-
atomicLongCreate
public Atomic.Long atomicLongCreate(java.lang.String name, long initValue)
-
getAtomicLong
public Atomic.Long getAtomicLong(java.lang.String name)
Deprecated. method renamed, useatomicLong(String)
-
atomicLong
public Atomic.Long atomicLong(java.lang.String name)
-
createAtomicInteger
public Atomic.Integer createAtomicInteger(java.lang.String name, int initValue)
Deprecated. method renamed, useatomicIntegerCreate(String, int)
-
atomicIntegerCreate
public Atomic.Integer atomicIntegerCreate(java.lang.String name, int initValue)
-
getAtomicInteger
public Atomic.Integer getAtomicInteger(java.lang.String name)
Deprecated. method renamed, useatomicInteger(String)
-
atomicInteger
public Atomic.Integer atomicInteger(java.lang.String name)
-
createAtomicBoolean
public Atomic.Boolean createAtomicBoolean(java.lang.String name, boolean initValue)
Deprecated. method renamed, useatomicBooleanCreate(String, boolean)
-
atomicBooleanCreate
public Atomic.Boolean atomicBooleanCreate(java.lang.String name, boolean initValue)
-
getAtomicBoolean
public Atomic.Boolean getAtomicBoolean(java.lang.String name)
Deprecated. method renamed, useatomicBoolean(String)
-
atomicBoolean
public Atomic.Boolean atomicBoolean(java.lang.String name)
-
checkShouldCreate
public void checkShouldCreate(java.lang.String name)
-
createAtomicString
public Atomic.String createAtomicString(java.lang.String name, java.lang.String initValue)
Deprecated. method renamed, useatomicStringCreate(String, String)
-
atomicStringCreate
public Atomic.String atomicStringCreate(java.lang.String name, java.lang.String initValue)
-
getAtomicString
public Atomic.String getAtomicString(java.lang.String name)
Deprecated. method renamed, useatomicString(String)
-
atomicString
public Atomic.String atomicString(java.lang.String name)
-
createAtomicVar
public <E> Atomic.Var<E> createAtomicVar(java.lang.String name, E initValue, Serializer<E> serializer)
Deprecated. method renamed, useatomicVarCreate(String, Object, Serializer)
-
atomicVarCreate
public <E> Atomic.Var<E> atomicVarCreate(java.lang.String name, E initValue, Serializer<E> serializer)
-
getAtomicVar
public <E> Atomic.Var<E> getAtomicVar(java.lang.String name)
Deprecated. method renamed, useatomicVar(String)
-
atomicVar
public <E> Atomic.Var<E> atomicVar(java.lang.String name)
-
atomicVar
public <E> Atomic.Var<E> atomicVar(java.lang.String name, Serializer<E> serializer)
-
get
public <E> E get(java.lang.String name)
return record with given name or null if name does not exist
-
exists
public boolean exists(java.lang.String name)
-
delete
public void delete(java.lang.String name)
delete record/collection with given name
-
getAll
public java.util.Map<java.lang.String,java.lang.Object> getAll()
return map of all named collections/records
-
rename
public void rename(java.lang.String oldName, java.lang.String newName)rename named record into newName- Parameters:
oldName- current name of record/collectionnewName- new name of record/collection- Throws:
java.util.NoSuchElementException- if oldName does not exist
-
checkNameNotExists
public void checkNameNotExists(java.lang.String name)
Checks that object with given name does not exist yet.- Parameters:
name- to check- Throws:
java.lang.IllegalArgumentException- if name is already used
-
close
public void close()
Closes database. All other methods will throw 'IllegalAccessError' after this method was called.
!! it is necessary to call this method before JVM exits!!
- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein interfacejava.lang.AutoCloseable
-
getFromWeakCollection
public java.lang.Object getFromWeakCollection(java.lang.String name)
All collections are weakly referenced to prevent two instances of the same collection in memory. This is mainly for locking, two instances of the same lock would not simply work.
-
checkNotClosed
public void checkNotClosed()
-
isClosed
public boolean isClosed()
- Returns:
- true if DB is closed and can no longer be used
-
commit
public void commit()
Commit changes made on collections loaded by this DB- See Also:
Engine.commit()
-
rollback
public void rollback()
Rollback changes made on collections loaded by this DB- See Also:
Engine.rollback()
-
compact
public void compact()
Perform storage maintenance. Typically compact underlying storage and reclaim unused space.NOTE: MapDB does not have smart defragmentation algorithms. So compaction usually recreates entire store from scratch. This may require additional disk space.
-
snapshot
public DB snapshot()
Make readonly snapshot view of DB and all of its collection Collections loaded by this instance are not affected (are still mutable). You have to load new collections from DB returned by this method- Returns:
- readonly snapshot view
-
getDefaultSerializer
public Serializer getDefaultSerializer()
- Returns:
- default serializer used in this DB, it handles POJO and other stuff.
-
getEngine
public Engine getEngine()
- Returns:
- underlying engine which takes care of persistence for this DB.
-
checkType
public void checkType(java.lang.String type, java.lang.String expected)
-
consistencyLock
public java.util.concurrent.locks.ReadWriteLock consistencyLock()
Returns consistency lock which groups operation together and ensures consistency. Operations which depends on each other are performed under read lock. Snapshots, close etc are performed under write-lock.- Returns:
-
-
DataMelt 3.0 © DataMelt by jWork.ORG