Mercurial > hg > Papers > 2023 > matac-sigos
comparison Paper/paper.tex @ 6:cd057d7a1772
...
author | matac42 <matac@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 15 Apr 2023 18:52:04 +0900 |
parents | 40cda6dcc16e |
children | 07b274fbdfda |
comparison
equal
deleted
inserted
replaced
5:40cda6dcc16e | 6:cd057d7a1772 |
---|---|
280 その後,コピーしたものはバックアップとしてディスクに書き込む. | 280 その後,コピーしたものはバックアップとしてディスクに書き込む. |
281 そうすることで,データの増加によるリソースの枯渇を防ぎ, | 281 そうすることで,データの増加によるリソースの枯渇を防ぎ, |
282 かつデータのバックアップを作成することで信頼性の向上が期待できる. | 282 かつデータのバックアップを作成することで信頼性の向上が期待できる. |
283 | 283 |
284 | 284 |
285 \section{ルートノードのトランザクション} | 285 \section{トランザクション} |
286 | 286 |
287 データをアップデートする際, | 287 ルートノードはデータをリード,ライトする時に増やす. |
288 % ルートノードのトランザクション | 288 それにより,ルートノードは一つのスレッドを表現する. |
289 % リードとライト分けて考える | 289 スレッドがデータのアップデートを行う際は,他のスレッドとの競合を防ぐ必要がある. |
290 | 290 スレッドはルートノードからアップデート対象のノードまで辿るようにロックを獲得していく. |
291 \section{スキーマ} | 291 その際,子ノードのロックを獲得した後は親ノードのロックを手放して良いことにする. |
292 データのアップデートが完了し,ロックを解除後,ルートノードの切り替えを行う. | |
293 このような操作によって,トランザクションを実現する. | |
294 しかし,このままだとアップデートによってデータの一貫性を損なう場合がある. | |
295 常に最新のデータを持ったルートノードを選択する仕組みが必要になる. | |
296 | |
297 なお,リードする際はその時点で最新のルートノードを元にリード用のルートノードを作成する. | |
298 リードは木を変更することがないので, | |
299 作成したリード用ルートノードの数だけ同時にリード可能となる. | |
300 | |
301 \section{スキーマレスな実装} | |
302 | |
303 従来のSQLのようなスキーマの定義が存在すると, | |
304 個別にバックアップなどを取らない限り | |
305 スキーマの変更以前にロールバックすることができない. | |
306 しかしながら,実際運用する上でスキーマを変更することは多々ある. | |
307 また,DB上のデータ構造とプログラム上で扱うデータ構造に差が生まれる | |
308 インピーダンスミスマッチが発生し,DBのデータをプログラムが扱う際に | |
309 その差を埋めるような変換を必要とする場合が生まれる. | |
310 これらは,データの信頼性を低下させると考える. | |
311 よって今回は,スキーマレスなDBとしてのファイルシステムを実装することを考える. | |
312 | |
313 | |
292 \section{インデックス} | 314 \section{インデックス} |
293 \section{今後の課題} | 315 \section{今後の課題} |
294 \section{まとめ} | 316 \section{まとめ} |
295 | 317 |
296 \nocite{*} | 318 \nocite{*} |