com.taobao.common.store.journal
类 JournalStore

java.lang.Object
  继承者 com.taobao.common.store.journal.JournalStore
所有已实现的接口:
JournalStoreMBean, Store
直接已知子类:
MessageStore

public class JournalStore
extends Object
implements Store, JournalStoreMBean

一个通过日志文件实现的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文件,通过日志的操作恢复内存索引

作者:
dogun (yuexuqiang at gmail.com)

嵌套类摘要
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
 

字段详细信息

FILE_SIZE

public static final int FILE_SIZE
另请参见:
常量字段值

HALF_DAY

public static final int HALF_DAY
另请参见:
常量字段值

DEFAULT_MAX_BATCH_SIZE

protected static final int DEFAULT_MAX_BATCH_SIZE
另请参见:
常量字段值

indices

protected IndexMap indices

dataFiles

public Map<Integer,com.taobao.common.store.journal.DataFile> dataFiles

logFiles

protected Map<Integer,com.taobao.common.store.journal.LogFile> logFiles

dataFile

protected com.taobao.common.store.journal.DataFile dataFile

logFile

protected com.taobao.common.store.journal.LogFile logFile

maxWriteBatchSize

protected int maxWriteBatchSize
构造方法详细信息

JournalStore

public JournalStore(String path,
                    String name,
                    boolean force,
                    boolean enabledIndexLRU)
             throws IOException
默认构造函数,会在path下使用name作为名字生成数据文件

参数:
path -
name -
force -
抛出:
IOException

JournalStore

public JournalStore(String path,
                    String name,
                    IndexMap indices,
                    boolean force,
                    boolean enabledIndexLRU)
             throws IOException
自己实现 索引维护组件

参数:
path -
name -
indices -
force -
enabledIndexLRU -
抛出:
IOException

JournalStore

public JournalStore(String path,
                    String name,
                    boolean force,
                    boolean enableIndexLRU,
                    boolean enabledDataFileCheck)
             throws IOException
参数:
path -
name -
force -
enableIndexLRU -
enabledDataFileCheck -
抛出:
IOException

JournalStore

public JournalStore(String path,
                    String name,
                    IndexMap indices,
                    boolean force,
                    boolean enableIndexLRU,
                    boolean enabledDataFileCheck)
             throws IOException
启用数据文件整理的构造函数

参数:
path -
name -
force -
抛出:
IOException

JournalStore

public JournalStore(String path,
                    String name)
             throws IOException
默认构造函数,会在path下使用name作为名字生成数据文件

参数:
path -
name -
抛出:
IOException
方法详细信息

add

public void add(byte[] key,
                byte[] data)
         throws IOException
指定者:
接口 Store 中的 add
抛出:
IOException

add

public void add(byte[] key,
                byte[] data,
                boolean force)
         throws IOException
指定者:
接口 Store 中的 add
抛出:
IOException

remove

public boolean remove(byte[] key,
                      boolean force)
               throws IOException
指定者:
接口 Store 中的 remove
抛出:
IOException

get

public byte[] get(byte[] key)
           throws IOException
指定者:
接口 Store 中的 get
抛出:
IOException

iterator

public Iterator<byte[]> iterator()
                          throws IOException
指定者:
接口 Store 中的 iterator
抛出:
IOException

remove

public boolean remove(byte[] key)
               throws IOException
指定者:
接口 Store 中的 remove
抛出:
IOException

newDataFile

protected com.taobao.common.store.journal.DataFile newDataFile()
                                                        throws IOException
生成一个新的数据文件

抛出:
FileNotFoundException
IOException

size

public int size()
指定者:
接口 Store 中的 size

update

public boolean update(byte[] key,
                      byte[] data)
               throws IOException
指定者:
接口 Store 中的 update
抛出:
IOException

getDataFilesInfo

public String getDataFilesInfo()
从接口 JournalStoreMBean 复制的描述
获得所有有效数据文件的信息

指定者:
接口 JournalStoreMBean 中的 getDataFilesInfo
返回:
所有有效数据文件的信息

getLogFilesInfo

public String getLogFilesInfo()
从接口 JournalStoreMBean 复制的描述
获得所有有效日志文件的信息

指定者:
接口 JournalStoreMBean 中的 getLogFilesInfo
返回:
所有有效日志文件的信息

getNumber

public int getNumber()
从接口 JournalStoreMBean 复制的描述
获取当前的文件编号

指定者:
接口 JournalStoreMBean 中的 getNumber
返回:
当前的文件编号

getPath

public String getPath()
从接口 JournalStoreMBean 复制的描述
获取存储的路径

指定者:
接口 JournalStoreMBean 中的 getPath
返回:
the path

getName

public String getName()
从接口 JournalStoreMBean 复制的描述
获取存储的名字

指定者:
接口 JournalStoreMBean 中的 getName
返回:
the name

getDataFileInfo

public String getDataFileInfo()
从接口 JournalStoreMBean 复制的描述
获取当前数据文件信息

指定者:
接口 JournalStoreMBean 中的 getDataFileInfo
返回:
当前数据文件信息

getLogFileInfo

public String getLogFileInfo()
从接口 JournalStoreMBean 复制的描述
获取当前日志文件信息

指定者:
接口 JournalStoreMBean 中的 getLogFileInfo
返回:
当前日志文件信息

viewIndexMap

public String viewIndexMap()
从接口 JournalStoreMBean 复制的描述
查看索引的信息。注意:该操作可能会撑暴内存

指定者:
接口 JournalStoreMBean 中的 viewIndexMap
返回:
所有的索引信息

close

public void close()
           throws IOException
指定者:
接口 Store 中的 close
抛出:
IOException

getSize

public long getSize()
             throws IOException
从接口 JournalStoreMBean 复制的描述
获得数据的个数

指定者:
接口 JournalStoreMBean 中的 getSize
返回:
数据的个数
抛出:
IOException

getIntervalForCompact

public long getIntervalForCompact()
指定者:
接口 JournalStoreMBean 中的 getIntervalForCompact

setIntervalForCompact

public void setIntervalForCompact(long intervalForCompact)
指定者:
接口 JournalStoreMBean 中的 setIntervalForCompact

getIntervalForRemove

public long getIntervalForRemove()
指定者:
接口 JournalStoreMBean 中的 getIntervalForRemove

setIntervalForRemove

public void setIntervalForRemove(long intervalForRemove)
指定者:
接口 JournalStoreMBean 中的 setIntervalForRemove

getMaxFileCount

public long getMaxFileCount()
指定者:
接口 Store 中的 getMaxFileCount

setMaxFileCount

public void setMaxFileCount(long maxFileCount)
指定者:
接口 Store 中的 setMaxFileCount

sync

public void sync()

check

public void check()
           throws IOException
对数据文件进行检查,并作出相应的处理: 1.数据超过指定的Remove时间,将会直接删除 2.数据超过指定的Compact时间,先Remove再Add

指定者:
接口 JournalStoreMBean 中的 check
抛出:
IOException


Copyright © 2010–2013. All rights reserved.