(empty log message)
@@ -23,7 +23,7 @@ | ||
23 | 23 | ======================================================================================================== |
24 | 24 | [New - 新機能追加、不具合対応] |
25 | 25 | [[リリース Ver 0.9.2 - (2012/02/XX)]] |
26 | -・メモリオブジェクトのバックアップ機能を追加 | |
26 | +■メモリオブジェクトのバックアップ機能を追加 | |
27 | 27 | メモリオブジェクトのバックアップ機能により、今までDataNode復帰時に操作記録ログから復旧していたのに対して、 |
28 | 28 | 高速に停止前の状態に復元されるようになった。 |
29 | 29 |
@@ -57,41 +57,56 @@ | ||
57 | 57 | 場合などは、操作記録ログに残されているデータのみが復元される。 |
58 | 58 | |
59 | 59 | |
60 | -・完全ファイルモード時にDataNodeを停止後、再起動した際に操作記録ログがなくても停止直前の状態に復元されるように | |
61 | - 起動時の挙動を変更。 | |
62 | - 従来のバージョンでは完全ファイルモード(Key=ディスク、Value=ディスク)で合っても再起動時は操作記録ログから | |
63 | - 全てのデータを復元するしかデータを前回停止前の状態に戻す方法はなかった。そのため、大量のデータを保存している | |
64 | - 場合は起動時に大量の操作記録ログを読み出す必要があり非常に時間がかかってしまう場合があった。 | |
65 | - そこで本機能はDataNode停止時のKey用、Value用のディスク上のファイル群がディスク上に残っていれば、再起動時に | |
66 | - そのファイル群を再度利用するように変更し、起動時間の短縮をおこなった。 | |
67 | - なお、Key用、Value用のディスク上のファイルが損傷している場合は可能な範囲で修復され、そもそもディスク上に | |
68 | - データがが残されていない場合は従来取り、操作記録ログから復元するプロセスとなる。 | |
60 | +■完全ファイルモード時にDataNodeを停止後、再起動した際に操作記録ログがなくても | |
61 | + 停止直前の状態に復元されるように起動時の挙動を変更。 | |
62 | + | |
63 | + 従来のバージョンでは完全ファイルモード(Key=ディスク、Value=ディスク)で合っても | |
64 | + 再起動時は操作記録ログから全てのデータを復元するしかデータを前回停止前の状態にす | |
65 | + 方法はなかった。そのため、大量のデータを保存している場合は起動時に大量の操作記録ログを | |
66 | + 読み出す必要があり非常に時間がかかってしまう場合があった。 | |
67 | + | |
68 | + そこで本機能はDataNode停止時のKey用、Value用のディスク上のファイル群がディスク上に | |
69 | + 残っていれば、再起動時にそのファイル群を再度利用するように変更し、起動時間の短縮をおこなった。 | |
70 | + なお、Key用、Value用のディスク上のファイルが損傷している場合は可能な範囲で修復され、 | |
71 | + そもそもディスク上にデータがが残されていない場合は従来取り、操作記録ログから復元するプロセスとなる。 | |
72 | + | |
69 | 73 | ※本機能により、完全ファイルモード時はローテーション済みの操作記録ログ(1.work.key1など最後に数値のついたファイル)を |
70 | 74 | 残す必要はなくなるが、定期的にバックアップをUtilClientによって取得することで保全性を高めることが出来る。 |
71 | 75 | 利用方法は特に意識する必要なく、本機能は有効となる。 |
72 | 76 | |
73 | 77 | |
74 | -・ディスクキャッシュ機能を追加 | |
78 | + | |
79 | +■ディスクキャッシュ機能を追加 | |
75 | 80 | 本機能はValueをディスクに保存している場合のみ有効となる。 |
76 | - okuyamaはValueの場所をディスクにした場合は、一定までのサイズのValueを全て1つのファイルで集中的に管理している。 | |
81 | + | |
82 | + okuyamaはValueの場所をディスクにした場合は、一定までのサイズのValueを全て1つの | |
83 | + ファイルで集中的に管理している。 | |
84 | + | |
77 | 85 | ここに保存している1Valueのデータはブロックデータと呼ばれる。 |
78 | - getなどの取得処理の場合は、このファイル上をシークしブロックデータを取り出している。SSDのようなシーク処理を | |
79 | - 必要としないディスクの場合は高速に稼働するが、HDDなどの場合はアクセスが集中しかつ、ValueのファイルがOSの | |
80 | - バッファサイズを超えるようになると、アクセス速度が低速化する。 | |
81 | - そこで本機能では、一度読みだしたブロックデータをHDDよりもランダムリードが高速なデバイスに一時的にキャッシュ | |
82 | - することでget処理を高速化するのが、本機能である。 | |
83 | - 一時的にキャッシュされるValueはレコード数で指定可能である。Defaultは1DataNode当たり、10000件となる。 | |
84 | - キャッシュに利用するディスクサイズの算出は、ブロックデータのサイズを利用して計算することが可能であり。 | |
85 | - そのブロックサイズはDefaultでは12888byteとなる。そのため、利用されるディスクサイズは、以下の計算式で求める | |
86 | - 12888byte × 10000件 = 128880000byte | |
86 | + getなどの取得処理の場合は、このファイル上をシークしブロックデータを取り出している。 | |
87 | + SSDのようなシーク処理を必要としないディスクの場合は高速に稼働するが、HDDなどの場合は | |
88 | + アクセスが集中しかつ、ValueのファイルがOSのバッファサイズを超えるようになると、 | |
89 | + アクセス速度が低速化する。 | |
90 | + | |
91 | + そこで本機能では、一度読みだしたブロックデータをHDDよりもランダムリードが高速な | |
92 | + デバイスに一時的にキャッシュすることでget処理を高速化するのが、本機能である。 | |
93 | + | |
94 | + 一時的にキャッシュされるValueはレコード数で指定可能である。Defaultは1DataNode当たり、 | |
95 | + 10000件となる。キャッシュに利用するディスクサイズの算出は、ブロックデータのサイズを | |
96 | + 利用して計算することが可能であり。そのブロックサイズはDefaultでは12888byteとなる。 | |
97 | + そのため、利用されるディスクサイズは、以下の計算式で求める | |
98 | + -------------------------------------------------------------------- | |
99 | + [12888byte × 10000件 = 128880000byte] | |
100 | + -------------------------------------------------------------------- | |
87 | 101 | このブロックサイズはDataNodeの起動引数である「-s]を利用して「-s 8192」のように変更が可能である。 |
88 | 102 | |
89 | 103 | キャッシュ用の有効化及び、キャシュファイルの作成場所指定は、DataNode.propertiesの「KeyManagerJob*.cacheFilePath=」 |
90 | 104 | 要素を指定し、ファイルパスを記述することで有効化される。利用しない場合はこの要素そのものを消すか、ファイル指定を |
91 | 105 | 消すことで無効かされる。 |
106 | + -------------------------------------------------------------------- | |
92 | 107 | [DataNode.propertiesでの設定例] |
93 | 108 | 例) "KeyManagerJob1.cacheFilePath=/usbdisk/cachedata/cache1.data" |
94 | - | |
109 | + -------------------------------------------------------------------- | |
95 | 110 | キャッシュされるValueの件数はDataNodeの起動引数である「-mdcs」を利用して「-mdcs 50000」のように |
96 | 111 | キャッシュしたい件数を指定して変更可能である。デフォルトは前述の通り、10000件 |
97 | 112 |
@@ -100,7 +115,8 @@ | ||
100 | 115 | 自動的に再認識され、利用される。その際DataNodeの停止は伴わない。 |
101 | 116 | |
102 | 117 | |
103 | -・JavaのOkuyamaClientにObjectの新規登録を保証するsetNewObjectValueメソッドを追加 | |
118 | + | |
119 | +■JavaのOkuyamaClientにObjectの新規登録を保証するsetNewObjectValueメソッドを追加 | |
104 | 120 | setNewValueはValueにString型しか対応していなかったが、ValueをObjectとするバージョンを追加。 |
105 | 121 | 利用方法はsetNewValueと同様 |
106 | 122 | 利用例) |
@@ -123,17 +139,58 @@ | ||
123 | 139 | ------------------------------------------------------ |
124 | 140 | |
125 | 141 | |
142 | +■起動パラメータを以下の通り追加 | |
143 | + DataNode用の起動パラメータ | |
144 | + -crcm 記述:true/false | |
145 | + 説明:MasterNodeとDataNode間の処理に失敗した場合に強制的に1度だけ再処理を行うようにするかの設定 | |
146 | + Networkが不安定な場合や遅い場合はtrueにするとよいことがある | |
147 | + true/再接続する, false/再接続は自動 | |
148 | + デフィルトはfalse | |
149 | + 設定例: -crcm true | |
126 | 150 | |
127 | -・有効期限を30日以上に設定出来ないバグを修正 | |
128 | -・ノード追加に伴うデータ移行中にTagデータを新規登録すると、正しく取得出来ないバグを修正 | |
129 | -・DataNodeのリカバリー処理、ノード追加時のデータ再配置処理の堅牢性を向上 | |
130 | -・いくつかの性能向上 | |
151 | + -dcmuc 記述:整数(利用回数) | |
152 | + 説明:MasterNodeとDataNode間のSockeの最大再利用回数 (整数) 少ない値にすると接続コストがかかる | |
153 | + デフィルトは50000 | |
154 | + 設定例: -dcmuc 10000 | |
131 | 155 | |
156 | + -smbsmf 記述:整数(格納数) | |
157 | + 説明:SerializeMapのBucketサイズのJVMへのメモリ割当1MB単位への格納係数(整数) | |
158 | + デフィルトは400(レスポンスを向上したい場合は小さな値にすると良いが、メモリ当たりの格納数は減る) | |
159 | + 設定例: -smbsmf 200 | |
160 | + | |
161 | + -red 記述:true/false | |
162 | + 説明:完全ファイルモード時に既に存在するデータを再利用する設定 | |
163 | + デフィルトはtrue。 | |
164 | + falseにすることで停止前のデータを全て削除してトランザクションログからの起動を選択する | |
165 | + 設定例: -red false | |
166 | + | |
167 | + -wfsrf 記述:true/false | |
168 | + 説明:DataNode起動時に操作記録ログ(トランザクションログ)を読み込む設定 | |
169 | + trueの場合は読み込む(デフォルト) | |
170 | + falseの場合は読みこまない.この場合はデータは常に0件からの起動になる | |
171 | + 設定例: -wfsrf false | |
172 | + | |
173 | + | |
174 | +■PHP版のOkuyamaClient.class.phpで未実装だった以下のメソッドを実装。挙動はJava版と同様である | |
175 | + 1.getTagValues | |
176 | + 2.getMultiTagValues | |
177 | + 3.getMultiTagKeys | |
178 | + | |
179 | + ※以下のメソッドは未実装 | |
180 | + getTagKeysResult | |
181 | + getMultiTagKeysResult | |
182 | + | |
183 | + | |
184 | +■有効期限を30日以上に設定出来ないバグを修正 | |
185 | +■ノード追加に伴うデータ移行中にTagデータを新規登録すると、正しく取得出来ないバグを修正 | |
186 | +■DataNodeのリカバリー処理、ノード追加時のデータ再配置処理の堅牢性を向上 | |
187 | +■いくつかの性能向上 | |
188 | + | |
132 | 189 | ======================================================================================================== |
133 | 190 | [New - 新機能追加、不具合対応] |
134 | 191 | [[リリース Ver 0.9.1 - (2011/12/19)]] |
135 | 192 | |
136 | -・PHP版のOkuyamaClientの不具合対応 | |
193 | +■PHP版のOkuyamaClientの不具合対応 | |
137 | 194 | ・Key、Value、Tagの登録前サイズチェック周りの修正 |
138 | 195 | 登録可能なKeyおよび、Tagのバイト長を320byteに固定 |
139 | 196 | PhpTestSock.phpにテストコードを追加 |
@@ -143,7 +200,7 @@ | ||
143 | 200 | isset関数に置き換え |
144 | 201 | |
145 | 202 | |
146 | -・Java用のOkuyamaClientをプーリングするコネクションプールを追加 | |
203 | +■Java用のOkuyamaClientをプーリングするコネクションプールを追加 | |
147 | 204 | 本機能を利用すると接続処理、接続済みOkuyamaClientのプール、クローズ処理の管理を行うことが出来る |
148 | 205 | 接続済みのコネクションを即利用可能なため、接続処理のコスト削減、接続処理の共通化を行うことが可能 |
149 | 206 | 該当クラスは以下 |
@@ -174,7 +231,7 @@ | ||
174 | 231 | ------------------------------------------------------------------------------------------------------- |
175 | 232 | |
176 | 233 | |
177 | -・UtilClientにadddatanodeを追加 | |
234 | +■UtilClientにadddatanodeを追加 | |
178 | 235 | DataNodeを追加する際に従来はWebの管理画面からしか追加できなかったが、 |
179 | 236 | UtilClientから追加する機能を追加 |
180 | 237 | ※本機能によるokuyamaのサーバ側の変更は必要ありません。 |
@@ -188,16 +245,16 @@ | ||
188 | 245 | 5)thirddatanode:7555 : 追加を依頼するDataNodeのアドレスとPort番号(MasterNode.propertiesのThirdKeyMapNodesInfoの設定に該当。設定を行っていない場合は省略) |
189 | 246 | |
190 | 247 | |
191 | -・DataNodeの完全ディスクモードの性能を向上 | |
248 | +■DataNodeの完全ディスクモードの性能を向上 | |
192 | 249 | ファイルへの書き出しにメモリでのバッファリング領域を設けそちらへの書き出しが完了した時点でユーザ処理を |
193 | 250 | 完了とすることで応答速度向上。実際の書き出し処理は別スレッドで順次行われる。 |
194 | 251 | |
195 | 252 | |
196 | -・MasterNodeのIsolation機能(パーティション機能)利用時にgetTagKeysResult、getMultiTagKeysResultで発生する | |
253 | +■MasterNodeのIsolation機能(パーティション機能)利用時にgetTagKeysResult、getMultiTagKeysResultで発生する | |
197 | 254 | 不具合に対応 |
198 | 255 | |
199 | 256 | |
200 | -・起動パラメータを以下の通り追加 | |
257 | +■起動パラメータを以下の通り追加 | |
201 | 258 | DataNode用の起動パラメータ |
202 | 259 | -vidf 記述:true/false |
203 | 260 | 説明:有効期限切れのデータのクリーニングを行うかどうかの設定 true=行う false=行わない |
@@ -242,7 +299,7 @@ | ||
242 | 299 | 設定例: -dwmqs 15000 |
243 | 300 | |
244 | 301 | |
245 | -・DataNode.propertiesのDataSaveTransactionFileEveryCommit=false時の不具合を対応 | |
302 | +■DataNode.propertiesのDataSaveTransactionFileEveryCommit=false時の不具合を対応 | |
246 | 303 | |
247 | 304 | |
248 | 305 | ======================================================================================================== |