|
||||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object com.taobao.common.store.journal.JournalStore
public class JournalStore
一个通过日志文件实现的key/value对的存储
key必须是16字节
1、数据文件和日志文件在一起,不记录索引文件
name.1 name.1.log
2、data为真正的数据,顺序存放,使用引用计数
3、log为操作+key+偏移量
4、添加数据时,先添加name.1,获得offset和length,然后记录日志,增加引用计数,然后加入或更新内存索引
5、删除数据时,记录日志,删除内存索引,减少文件计数,判断大小是否满足大小了,并且无引用了,就删除数据文件和日志文件
6、获取数据时,直接从内存索引获得数据偏移量
7、更新数据时,调用添加
8、启动时,遍历每一个log文件,通过日志的操作恢复内存索引
嵌套类摘要 | |
---|---|
static class |
JournalStore.InflyWriteData
|
字段摘要 | |
---|---|
protected com.taobao.common.store.journal.DataFile |
dataFile
|
Map<Integer,com.taobao.common.store.journal.DataFile> |
dataFiles
|
protected static int |
DEFAULT_MAX_BATCH_SIZE
|
static int |
FILE_SIZE
|
static int |
HALF_DAY
|
protected IndexMap |
indices
|
protected com.taobao.common.store.journal.LogFile |
logFile
|
protected Map<Integer,com.taobao.common.store.journal.LogFile> |
logFiles
|
protected int |
maxWriteBatchSize
|
构造方法摘要 | |
---|---|
JournalStore(String path,
String name)
默认构造函数,会在path下使用name作为名字生成数据文件 |
|
JournalStore(String path,
String name,
boolean force,
boolean enabledIndexLRU)
默认构造函数,会在path下使用name作为名字生成数据文件 |
|
JournalStore(String path,
String name,
boolean force,
boolean enableIndexLRU,
boolean enabledDataFileCheck)
|
|
JournalStore(String path,
String name,
IndexMap indices,
boolean force,
boolean enabledIndexLRU)
自己实现 索引维护组件 |
|
JournalStore(String path,
String name,
IndexMap indices,
boolean force,
boolean enableIndexLRU,
boolean enabledDataFileCheck)
启用数据文件整理的构造函数 |
方法摘要 | |
---|---|
void |
add(byte[] key,
byte[] data)
|
void |
add(byte[] key,
byte[] data,
boolean force)
|
void |
check()
对数据文件进行检查,并作出相应的处理: 1.数据超过指定的Remove时间,将会直接删除 2.数据超过指定的Compact时间,先Remove再Add |
void |
close()
|
byte[] |
get(byte[] key)
|
String |
getDataFileInfo()
获取当前数据文件信息 |
String |
getDataFilesInfo()
获得所有有效数据文件的信息 |
long |
getIntervalForCompact()
|
long |
getIntervalForRemove()
|
String |
getLogFileInfo()
获取当前日志文件信息 |
String |
getLogFilesInfo()
获得所有有效日志文件的信息 |
long |
getMaxFileCount()
|
String |
getName()
获取存储的名字 |
int |
getNumber()
获取当前的文件编号 |
String |
getPath()
获取存储的路径 |
long |
getSize()
获得数据的个数 |
Iterator<byte[]> |
iterator()
|
protected com.taobao.common.store.journal.DataFile |
newDataFile()
生成一个新的数据文件 |
boolean |
remove(byte[] key)
|
boolean |
remove(byte[] key,
boolean force)
|
void |
setIntervalForCompact(long intervalForCompact)
|
void |
setIntervalForRemove(long intervalForRemove)
|
void |
setMaxFileCount(long maxFileCount)
|
int |
size()
|
void |
sync()
|
boolean |
update(byte[] key,
byte[] data)
|
String |
viewIndexMap()
查看索引的信息。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final int FILE_SIZE
public static final int HALF_DAY
protected static final int DEFAULT_MAX_BATCH_SIZE
protected IndexMap indices
public Map<Integer,com.taobao.common.store.journal.DataFile> dataFiles
protected Map<Integer,com.taobao.common.store.journal.LogFile> logFiles
protected com.taobao.common.store.journal.DataFile dataFile
protected com.taobao.common.store.journal.LogFile logFile
protected int maxWriteBatchSize
构造方法详细信息 |
---|
public JournalStore(String path, String name, boolean force, boolean enabledIndexLRU) throws IOException
path
- name
- force
-
IOException
public JournalStore(String path, String name, IndexMap indices, boolean force, boolean enabledIndexLRU) throws IOException
path
- name
- indices
- force
- enabledIndexLRU
-
IOException
public JournalStore(String path, String name, boolean force, boolean enableIndexLRU, boolean enabledDataFileCheck) throws IOException
path
- name
- force
- enableIndexLRU
- enabledDataFileCheck
-
IOException
public JournalStore(String path, String name, IndexMap indices, boolean force, boolean enableIndexLRU, boolean enabledDataFileCheck) throws IOException
path
- name
- force
-
IOException
public JournalStore(String path, String name) throws IOException
path
- name
-
IOException
方法详细信息 |
---|
public void add(byte[] key, byte[] data) throws IOException
Store
中的 add
IOException
public void add(byte[] key, byte[] data, boolean force) throws IOException
Store
中的 add
IOException
public boolean remove(byte[] key, boolean force) throws IOException
Store
中的 remove
IOException
public byte[] get(byte[] key) throws IOException
Store
中的 get
IOException
public Iterator<byte[]> iterator() throws IOException
Store
中的 iterator
IOException
public boolean remove(byte[] key) throws IOException
Store
中的 remove
IOException
protected com.taobao.common.store.journal.DataFile newDataFile() throws IOException
FileNotFoundException
IOException
public int size()
Store
中的 size
public boolean update(byte[] key, byte[] data) throws IOException
Store
中的 update
IOException
public String getDataFilesInfo()
JournalStoreMBean
复制的描述
JournalStoreMBean
中的 getDataFilesInfo
public String getLogFilesInfo()
JournalStoreMBean
复制的描述
JournalStoreMBean
中的 getLogFilesInfo
public int getNumber()
JournalStoreMBean
复制的描述
JournalStoreMBean
中的 getNumber
public String getPath()
JournalStoreMBean
复制的描述
JournalStoreMBean
中的 getPath
public String getName()
JournalStoreMBean
复制的描述
JournalStoreMBean
中的 getName
public String getDataFileInfo()
JournalStoreMBean
复制的描述
JournalStoreMBean
中的 getDataFileInfo
public String getLogFileInfo()
JournalStoreMBean
复制的描述
JournalStoreMBean
中的 getLogFileInfo
public String viewIndexMap()
JournalStoreMBean
复制的描述
JournalStoreMBean
中的 viewIndexMap
public void close() throws IOException
Store
中的 close
IOException
public long getSize() throws IOException
JournalStoreMBean
复制的描述
JournalStoreMBean
中的 getSize
IOException
public long getIntervalForCompact()
JournalStoreMBean
中的 getIntervalForCompact
public void setIntervalForCompact(long intervalForCompact)
JournalStoreMBean
中的 setIntervalForCompact
public long getIntervalForRemove()
JournalStoreMBean
中的 getIntervalForRemove
public void setIntervalForRemove(long intervalForRemove)
JournalStoreMBean
中的 setIntervalForRemove
public long getMaxFileCount()
Store
中的 getMaxFileCount
public void setMaxFileCount(long maxFileCount)
Store
中的 setMaxFileCount
public void sync()
public void check() throws IOException
JournalStoreMBean
中的 check
IOException
|
||||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |