okuyama.imdst.util
クラス KeyMapManager

java.lang.Object
  上位を拡張 java.lang.Thread
      上位を拡張 okuyama.imdst.util.KeyMapManager
すべての実装されたインタフェース:
java.lang.Runnable

public class KeyMapManager
extends java.lang.Thread

DataNodeが使用するKey-Valueを管理するモジュール.
データのファイルストア、登録ログの出力、同期化を行う.

作成者:
T.Okuyama

入れ子のクラスの概要
 
クラス java.lang.Thread から継承された入れ子のクラス/インタフェース
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
フィールドの概要
protected static int accessorTypeBw
           
protected static java.lang.String workMapFileEnc
           
 
クラス java.lang.Thread から継承されたフィールド
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
コンストラクタの概要
KeyMapManager(java.lang.String keyMapFilePath, java.lang.String workKeyMapFilePath, boolean workFileMemory, int keySize, boolean dataMemory)
           
KeyMapManager(java.lang.String keyMapFilePath, java.lang.String workKeyMapFilePath, boolean workFileMemory, int keySize, boolean dataMemory, boolean dataManage)
           
KeyMapManager(java.lang.String keyMapFilePath, java.lang.String workKeyMapFilePath, boolean workFileMemory, int keySize, boolean dataMemory, int memoryLimitSize, java.lang.String[] virtualStorageDirs)
           
KeyMapManager(java.lang.String keyMapFilePath, java.lang.String workKeyMapFilePath, boolean workFileMemory, int keySize, boolean dataMemory, java.lang.String[] dirs)
           
 
メソッドの概要
 void autoLockRelease(long time)
          Lockの自動開放メソッド.
 java.lang.String calcValue(java.lang.String key, int calcVal, java.lang.String transactionCode)
          キーを指定することで紐付くValueに計算を行う.
 boolean checkError()
           
 boolean containsKeyPair(java.lang.String key)
           
 boolean containsTagPair(java.lang.String tag)
           
 void dataExport(java.io.PrintWriter pw)
           
 void diffDataMode(boolean flg)
           
 void diffDataMode(boolean flg, java.io.PrintWriter pw)
           
 void diffDataModeOff()
           
 void dump()
           
 java.lang.String[] getAllSaveDataSize()
           
 java.lang.String getKeyPair(java.lang.String key)
           
 long getLastDataChangeTime()
           
 java.lang.String getLockedTransactionCode(java.lang.String key)
          Lockの状況を確認する.
 int getSaveDataCount()
           
 long getSaveDataSize(java.lang.String uniqueKey)
           
 java.lang.String getTagPair(java.lang.String tag)
           
 java.lang.String getTargetIndexTagPair(java.lang.String tag, int index)
           
 java.lang.String getTargetTagIndexList(java.lang.String tag)
          対象のTagのデータが存在する位置をKeyMapManager.tagKeySepで連結した文字列を返す<.br> 本メソッドで取得したIndexをgetTargetIndexTagPairに渡すことで指定位置のTagとKeyのペアを取得可能.
 void inputConsistentHashMoveData2Stream(java.io.PrintWriter pw, java.io.BufferedReader br)
           
 void inputDiffKeyMapObj2Stream(java.io.BufferedReader br, java.io.PrintWriter pw)
           
 void inputKeyMapObj2Stream(java.io.BufferedReader br, java.io.PrintWriter pw, int dataLineCount)
           
 void inputNoMatchKeyMapKey2Stream(java.io.PrintWriter pw, java.io.BufferedReader br)
           
 boolean isLock(java.lang.String key)
          Lockの状況を確認する.
 java.lang.String locking(java.lang.String key, java.lang.String transactionCode, int lockingTime)
          Lockの取得を行う.
 void outputConsistentHashMoveData2Stream(java.io.PrintWriter pw, java.lang.String targetRangStr)
           
 void outputDiffKeyMapObj2Stream(java.io.PrintWriter pw, java.io.BufferedReader br)
           
 void outputKeyMapObj2Stream(java.io.PrintWriter pw)
           
 void outputNoMatchKeyMapKey2Stream(java.io.PrintWriter pw, int matchNo, java.lang.String rulesStr)
           
 void removeConsistentHashMoveData2Stream(java.io.PrintWriter pw, java.lang.String targetRangStr)
           
 java.lang.String removeKeyPair(java.lang.String key, java.lang.String transactionCode)
           
 java.lang.String removeLock(java.lang.String key, java.lang.String transactionCode)
          Lockの開放を行う.
 void removeModMoveData2Stream(java.io.PrintWriter pw, java.io.BufferedReader br)
           
 java.lang.String removeTagRelation(java.lang.String tag, java.lang.String transactionCode)
           
 boolean removeTargetTagInKey(java.lang.String tag, java.lang.String key, java.lang.String transactionCode)
           
 void run()
          定期的にトランザクションログファイルのローテーション及び、Vacuum処理を行う.
 void setKeyPair(java.lang.String key, java.lang.String keyNode, java.lang.String transactionCode)
          キーを指定することでノードをセットする.
 boolean setKeyPairOnlyOnce(java.lang.String key, java.lang.String keyNode, java.lang.String transactionCode)
          キーを指定することでノードをセットする.
 boolean setKeyPairOnlyOnce(java.lang.String key, java.lang.String keyNode, java.lang.String transactionCode, boolean moveData)
          キーを指定することでノードをセットする.
 boolean setKeyPairVersionCheck(java.lang.String key, java.lang.String keyNode, java.lang.String transactionCode, java.lang.String updateVersionNo, boolean execCheck)
          キーを指定することでノードをセットする.
 void setTagPair(java.lang.String tag, java.lang.String key, java.lang.String transactionCode)
           
 long truncateData(java.lang.String uniqueKey)
          指定のIsolation指定のuniqueKeyに関係するデータを全て削除する.
 
クラス java.lang.Thread から継承されたメソッド
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

accessorTypeBw

protected static int accessorTypeBw

workMapFileEnc

protected static java.lang.String workMapFileEnc
コンストラクタの詳細

KeyMapManager

public KeyMapManager(java.lang.String keyMapFilePath,
                     java.lang.String workKeyMapFilePath,
                     boolean workFileMemory,
                     int keySize,
                     boolean dataMemory,
                     boolean dataManage)
              throws BatchException
例外:
BatchException

KeyMapManager

public KeyMapManager(java.lang.String keyMapFilePath,
                     java.lang.String workKeyMapFilePath,
                     boolean workFileMemory,
                     int keySize,
                     boolean dataMemory)
              throws BatchException
例外:
BatchException

KeyMapManager

public KeyMapManager(java.lang.String keyMapFilePath,
                     java.lang.String workKeyMapFilePath,
                     boolean workFileMemory,
                     int keySize,
                     boolean dataMemory,
                     int memoryLimitSize,
                     java.lang.String[] virtualStorageDirs)
              throws BatchException
例外:
BatchException

KeyMapManager

public KeyMapManager(java.lang.String keyMapFilePath,
                     java.lang.String workKeyMapFilePath,
                     boolean workFileMemory,
                     int keySize,
                     boolean dataMemory,
                     java.lang.String[] dirs)
              throws BatchException
例外:
BatchException
メソッドの詳細

run

public void run()
定期的にトランザクションログファイルのローテーション及び、Vacuum処理を行う.
システム停止要求を監視して停止依頼があった場合は自身を終了する.

定義:
インタフェース java.lang.Runnable 内の run
オーバーライド:
クラス java.lang.Thread 内の run

truncateData

public long truncateData(java.lang.String uniqueKey)
指定のIsolation指定のuniqueKeyに関係するデータを全て削除する.

パラメータ:
uniqueKey -
戻り値:
long 削除件数

setKeyPair

public void setKeyPair(java.lang.String key,
                       java.lang.String keyNode,
                       java.lang.String transactionCode)
                throws BatchException
キーを指定することでノードをセットする.

パラメータ:
key - キー値
keyNode - Value値
transactionCode -
boolean - 移行データ指定
例外:
BatchException

setKeyPairOnlyOnce

public boolean setKeyPairOnlyOnce(java.lang.String key,
                                  java.lang.String keyNode,
                                  java.lang.String transactionCode)
                           throws BatchException
キーを指定することでノードをセットする.
既に登録されている場合は、失敗する。

パラメータ:
key - キー値
keyNode - Value値
transactionCode -
例外:
BatchException

setKeyPairOnlyOnce

public boolean setKeyPairOnlyOnce(java.lang.String key,
                                  java.lang.String keyNode,
                                  java.lang.String transactionCode,
                                  boolean moveData)
                           throws BatchException
キーを指定することでノードをセットする.
既に登録されている場合は、失敗する。

パラメータ:
key - キー値
keyNode - Value値
transactionCode -
例外:
BatchException

setKeyPairVersionCheck

public boolean setKeyPairVersionCheck(java.lang.String key,
                                      java.lang.String keyNode,
                                      java.lang.String transactionCode,
                                      java.lang.String updateVersionNo,
                                      boolean execCheck)
                               throws BatchException
キーを指定することでノードをセットする.
引数のVersionNoと登録されているVersionNoが異なる場合は失敗する.

パラメータ:
key - キー値
keyNode - Value値
transactionCode -
updateVersionNo -
例外:
BatchException

getKeyPair

public java.lang.String getKeyPair(java.lang.String key)

removeKeyPair

public java.lang.String removeKeyPair(java.lang.String key,
                                      java.lang.String transactionCode)
                               throws BatchException
例外:
BatchException

setTagPair

public void setTagPair(java.lang.String tag,
                       java.lang.String key,
                       java.lang.String transactionCode)
                throws BatchException
例外:
BatchException

removeTargetTagInKey

public boolean removeTargetTagInKey(java.lang.String tag,
                                    java.lang.String key,
                                    java.lang.String transactionCode)
                             throws BatchException
例外:
BatchException

getTagPair

public java.lang.String getTagPair(java.lang.String tag)

getTargetTagIndexList

public java.lang.String getTargetTagIndexList(java.lang.String tag)
対象のTagのデータが存在する位置をKeyMapManager.tagKeySepで連結した文字列を返す<.br> 本メソッドで取得したIndexをgetTargetIndexTagPairに渡すことで指定位置のTagとKeyのペアを取得可能.

パラメータ:
tag - タグ
戻り値:
指定したTag値が分割保存されているIndexの中で実際に値が存在するIndexのKeyMapManager.tagKeySep区切り文字列。Tagが登録されていない場合はnullが返る

getTargetIndexTagPair

public java.lang.String getTargetIndexTagPair(java.lang.String tag,
                                              int index)

removeTagRelation

public java.lang.String removeTagRelation(java.lang.String tag,
                                          java.lang.String transactionCode)
                                   throws BatchException
例外:
BatchException

calcValue

public java.lang.String calcValue(java.lang.String key,
                                  int calcVal,
                                  java.lang.String transactionCode)
                           throws BatchException
キーを指定することで紐付くValueに計算を行う.

パラメータ:
key - キー値
calcVal - 計算値(数値)
transactionCode -
例外:
BatchException

containsKeyPair

public boolean containsKeyPair(java.lang.String key)

containsTagPair

public boolean containsTagPair(java.lang.String tag)

locking

public java.lang.String locking(java.lang.String key,
                                java.lang.String transactionCode,
                                int lockingTime)
                         throws BatchException
Lockの取得を行う.

パラメータ:
key - Key値
transactionCode - 取得時に使用するTransactionCode
lockingTime - Lock継続時間
戻り値:
String 成功時はtransactionCode、失敗時はnull
例外:
BatchException

removeLock

public java.lang.String removeLock(java.lang.String key,
                                   java.lang.String transactionCode)
                            throws BatchException
Lockの開放を行う.

パラメータ:
key - Key値
transactionCode - 取得時に使用するTransactionCode
戻り値:
String 成功時はtransactionCode、失敗時はnull
例外:
BatchException

isLock

public boolean isLock(java.lang.String key)
Lockの状況を確認する.

パラメータ:
key - Key値
戻り値:
boolean true:ロックされている false:ロックされていない

getLockedTransactionCode

public java.lang.String getLockedTransactionCode(java.lang.String key)
Lockの状況を確認する.

パラメータ:
key - Key値
戻り値:
String TransactionCode

autoLockRelease

public void autoLockRelease(long time)
                     throws BatchException
Lockの自動開放メソッド.
引数の時間だけ経過しているLockは強制的に開放される

パラメータ:
time - 現在ミリ秒
例外:
BatchException

diffDataMode

public void diffDataMode(boolean flg,
                         java.io.PrintWriter pw)

diffDataMode

public void diffDataMode(boolean flg)

diffDataModeOff

public void diffDataModeOff()

outputKeyMapObj2Stream

public void outputKeyMapObj2Stream(java.io.PrintWriter pw)
                            throws BatchException
例外:
BatchException

outputDiffKeyMapObj2Stream

public void outputDiffKeyMapObj2Stream(java.io.PrintWriter pw,
                                       java.io.BufferedReader br)
                                throws BatchException
例外:
BatchException

inputKeyMapObj2Stream

public void inputKeyMapObj2Stream(java.io.BufferedReader br,
                                  java.io.PrintWriter pw,
                                  int dataLineCount)
                           throws BatchException
例外:
BatchException

inputDiffKeyMapObj2Stream

public void inputDiffKeyMapObj2Stream(java.io.BufferedReader br,
                                      java.io.PrintWriter pw)
                               throws BatchException
例外:
BatchException

outputNoMatchKeyMapKey2Stream

public void outputNoMatchKeyMapKey2Stream(java.io.PrintWriter pw,
                                          int matchNo,
                                          java.lang.String rulesStr)
                                   throws BatchException
例外:
BatchException

outputConsistentHashMoveData2Stream

public void outputConsistentHashMoveData2Stream(java.io.PrintWriter pw,
                                                java.lang.String targetRangStr)
                                         throws BatchException
例外:
BatchException

inputNoMatchKeyMapKey2Stream

public void inputNoMatchKeyMapKey2Stream(java.io.PrintWriter pw,
                                         java.io.BufferedReader br)
                                  throws BatchException
例外:
BatchException

inputConsistentHashMoveData2Stream

public void inputConsistentHashMoveData2Stream(java.io.PrintWriter pw,
                                               java.io.BufferedReader br)
                                        throws BatchException
例外:
BatchException

removeConsistentHashMoveData2Stream

public void removeConsistentHashMoveData2Stream(java.io.PrintWriter pw,
                                                java.lang.String targetRangStr)
                                         throws BatchException
例外:
BatchException

removeModMoveData2Stream

public void removeModMoveData2Stream(java.io.PrintWriter pw,
                                     java.io.BufferedReader br)
                              throws BatchException
例外:
BatchException

getLastDataChangeTime

public long getLastDataChangeTime()

getSaveDataCount

public int getSaveDataCount()

getSaveDataSize

public long getSaveDataSize(java.lang.String uniqueKey)

getAllSaveDataSize

public java.lang.String[] getAllSaveDataSize()

checkError

public boolean checkError()

dump

public void dump()

dataExport

public void dataExport(java.io.PrintWriter pw)