public class MVStore extends Object
Modifier and Type | Class and Description |
---|---|
static class |
MVStore.Builder
A builder for an MVStore.
|
Modifier and Type | Field and Description |
---|---|
static boolean |
ASSERT
Whether assertions are enabled.
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Close the file and the store.
|
void |
closeImmediately()
Close the file and the store, without writing anything.
|
long |
commit()
Commit the changes.
|
boolean |
compact(int targetFillRate,
int write)
Try to increase the fill rate by re-writing partially full chunks.
|
boolean |
compactMoveChunks()
Compact by moving all chunks next to each other.
|
boolean |
compactMoveChunks(int targetFillRate,
long moveSize)
Compact the store by moving all chunks next to each other, if there is
free space between chunks.
|
boolean |
compactRewriteFully()
Compact the store by moving all live pages to new chunks.
|
int |
getAutoCommitDelay()
Get the auto-commit delay.
|
int |
getAutoCommitMemory()
Get the maximum memory (in bytes) used for unsaved pages.
|
CacheLongKeyLIRS<Page> |
getCache()
Get the cache.
|
int |
getCacheSize()
Get the maximum cache size, in MB.
|
int |
getCacheSizeUsed()
Get the amount of memory used for caching, in MB.
|
long |
getCurrentVersion()
Get the current version of the data.
|
FileStore |
getFileStore()
Get the file store.
|
String |
getMapName(int id)
Get the name of the given map.
|
Set<String> |
getMapNames()
Get the set of all map names.
|
MVMap<String,String> |
getMetaMap()
Get the metadata map.
|
int |
getPageSplitSize() |
int |
getRetentionTime() |
boolean |
getReuseSpace() |
Map<String,Object> |
getStoreHeader()
Get the store header.
|
int |
getStoreVersion()
Get the store version.
|
int |
getUnsavedMemory()
Get the estimated memory (in bytes) of unsaved data.
|
long |
getVersionsToKeep()
Get the oldest version to retain in memory (for in-memory stores).
|
boolean |
hasMap(String name)
Check whether a given map exists.
|
boolean |
hasUnsavedChanges()
Check whether there are any unsaved changes.
|
boolean |
isClosed() |
boolean |
isReadOnly()
Whether the store is read-only.
|
static MVStore |
open(String fileName)
Open a store in exclusive mode.
|
<K,V> MVMap<K,V> |
openMap(String name)
Open a map with the default settings.
|
<M extends MVMap<K,V>,K,V> |
openMap(String name,
MVMap.MapBuilder<M,K,V> builder)
Open a map with the given builder.
|
void |
removeMap(MVMap<?,?> map)
Remove a map.
|
void |
renameMap(MVMap<?,?> map,
String newName)
Rename a map.
|
void |
rollback()
Revert to the beginning of the current version, reverting all uncommitted
changes.
|
void |
rollbackTo(long version)
Revert to the beginning of the given version.
|
void |
setAutoCommitDelay(int millis)
Set the maximum delay in milliseconds to auto-commit changes.
|
void |
setCacheSize(int mb)
Set the read cache size in MB.
|
void |
setRetentionTime(int ms)
How long to retain old, persisted chunks, in milliseconds.
|
void |
setReuseSpace(boolean reuseSpace)
Whether empty space in the file should be re-used.
|
void |
setStoreVersion(int version)
Update the store version.
|
void |
setVersionsToKeep(int count)
How many versions to retain for in-memory stores.
|
void |
sync()
Force all stored changes to be written to the storage.
|
public static final boolean ASSERT
public static MVStore open(String fileName)
fileName
- the file name (null for in-memory)public <K,V> MVMap<K,V> openMap(String name)
K
- the key typeV
- the value typename
- the name of the mappublic <M extends MVMap<K,V>,K,V> M openMap(String name, MVMap.MapBuilder<M,K,V> builder)
K
- the key typeV
- the value typename
- the name of the mapbuilder
- the map builderpublic Set<String> getMapNames()
public MVMap<String,String> getMetaMap()
The data in this map should not be modified (changing system data may corrupt the store). If modifications are needed, they need be synchronized on the store.
The metadata map contains the following entries:
chunk.{chunkId} = {chunk metadata} name.{name} = {mapId} map.{mapId} = {map metadata} root.{mapId} = {root position} setting.storeVersion = {version}
public boolean hasMap(String name)
name
- the map namepublic void close()
public void closeImmediately()
public long commit()
For in-memory stores, this method increments the version.
For persistent stores, it also writes changes to disk. It does nothing if there are no unsaved changes, and returns the old version. It is not necessary to call this method when auto-commit is enabled (the default setting), as in this case it is automatically called from time to time or when enough changes have accumulated. However, it may still be called to flush all changes to disk.
public boolean hasUnsavedChanges()
public boolean compactRewriteFully()
public boolean compactMoveChunks()
public boolean compactMoveChunks(int targetFillRate, long moveSize)
targetFillRate
- do nothing if the file store fill rate is higher
than thismoveSize
- the number of bytes to movepublic void sync()
public boolean compact(int targetFillRate, int write)
If the current fill rate is higher than the target fill rate, nothing is done.
Please note this method will not necessarily reduce the file size, as empty chunks are not overwritten.
Only data of open maps can be moved. For maps that are not open, the old chunk is still referenced. Therefore, it is recommended to open all maps before calling this method.
targetFillRate
- the minimum percentage of live entrieswrite
- the minimum number of bytes to writepublic int getPageSplitSize()
public boolean getReuseSpace()
public void setReuseSpace(boolean reuseSpace)
This setting is specially useful for online backup. To create an online backup, disable this setting, then copy the file (starting at the beginning of the file). In this case, concurrent backup and write operations are possible (obviously the backup process needs to be faster than the write operations).
reuseSpace
- the new valuepublic int getRetentionTime()
public void setRetentionTime(int ms)
The default value is 45000 (45 seconds) when using the default file
store. It is assumed that a file system and hard disk will flush all
write buffers within this time. Using a lower value might be dangerous,
unless the file system and hard disk flush the buffers earlier. To
manually flush the buffers, use
MVStore.getFile().force(true)
, however please note that
according to various tests this does not always work as expected
depending on the operating system and hardware.
The retention time needs to be long enough to allow reading old chunks while traversing over the entries of a map.
This setting is not persisted.
ms
- how many milliseconds to retain old chunks (0 to overwrite them
as early as possible)public void setVersionsToKeep(int count)
count
- the number of versions to keeppublic long getVersionsToKeep()
public int getStoreVersion()
public void setStoreVersion(int version)
version
- the new store versionpublic void rollback()
public void rollbackTo(long version)
version
- the version to revert topublic long getCurrentVersion()
public FileStore getFileStore()
public Map<String,Object> getStoreHeader()
public void renameMap(MVMap<?,?> map, String newName)
map
- the mapnewName
- the new namepublic void removeMap(MVMap<?,?> map)
map
- the map to removepublic String getMapName(int id)
id
- the map idpublic void setCacheSize(int mb)
mb
- the cache size in MB.public boolean isClosed()
public void setAutoCommitDelay(int millis)
To disable auto-commit, set the value to 0. In this case, changes are only committed when explicitly calling commit.
The default is 1000, meaning all changes are committed after at most one second.
millis
- the maximum delaypublic int getAutoCommitDelay()
public int getAutoCommitMemory()
public int getUnsavedMemory()
The returned value is an estimation only.
public int getCacheSizeUsed()
public int getCacheSize()
public CacheLongKeyLIRS<Page> getCache()
public boolean isReadOnly()
Copyright © 2017 JBoss by Red Hat. All rights reserved.