Mercurial > hg > Papers > 2023 > matac-sigos
changeset 31:3723507bd8e4
rollback
author | matac42 <matac@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 May 2023 16:52:58 +0900 |
parents | ce4af0b4df9d |
children | d6fc7c32dd01 |
files | marp-slide/slide.md |
diffstat | 1 files changed, 21 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/marp-slide/slide.md Fri May 12 16:40:52 2023 +0900 +++ b/marp-slide/slide.md Fri May 12 16:52:58 2023 +0900 @@ -106,30 +106,32 @@ - しかしながら,SSDはランダムアクセスによってデータにアクセスするため,RedBlackTreeでなくB-Treeを用いる利点は少ないと考える - データ構造を統一することで,ディスク上とメモリ上のデータのやりとりは単純なコピーで実装できる -<!-- --- +--- + +## データのロールバックとバックアップ + +- RDBのロールバックは,コミットするまではトランザクションの開始時点に戻ることができる機能を持つ +- ロールバックはコミットが完了するとそれ以前の状態に戻すことはできないが,データのバックアップをとっておくことで復元を行う +- このような,ロールバックとバックアップの仕組みをファイルシステムに実装したい + +--- ## データのロールバックとバックアップ -DBの重要な機能の一つにロールバックがある. -RDBのロールバックは, -コミットするまではトランザクションの開始時点に戻ることができる機能を持つ. -コミットが完了するとそれ以前の状態に戻すことはできないが, -データのバックアップをとっておくことで復元を行う. -このような,ロールバックとバックアップの仕組みをファイルシステムに実装したい. +- RedBlackTreeのルートノードがデータのバージョンの役割を果たしていることを利用する +- 非破壊的なTree編集はアップデートのたびに,ルートノードを増やす +- つまり,ルートノードはアップデートのログと言えその時点のデータのバージョンを表していると考えることができる +- よって,ロールバックを行いたい場合は参照を過去のルートノードに切り替える + +--- -今回は,RedBlackTreeのルートノードがデータのバージョンの役割を果たしていることを利用し, -データの復元が行える仕組みを構築することを考える. -非破壊的なTree編集はアップデートのたびに,ルートノードを増やす. -つまり,ルートノードはアップデートのログと言えその時点のデータのバージョンを表していると考えることができる. -よって,ロールバックを行いたい場合は参照を過去のルートノードに切り替える. +## データのロールバックとバックアップ -ルートノードはデータのアップデート時に増えるため, -データが際限なく増加していく問題がある. -この問題はCopyingGCを行うことによって解決する. -まず,RedBlackTreeを丸ごとコピーして最新のルートを残して他のルートは削除する. -その後,コピーしたものはバックアップないしログとしてディスクに書き込む. -そうすることで,データの増加によるリソースの枯渇を防ぎ, -かつデータのログ付きバックアップを作成することで信頼性の向上が期待できる. --> +- ルートノードはデータのアップデート時に増えるため,データが際限なく増加していく問題がある +- この問題はCopyingGCを行うことによって解決する +- まず,RedBlackTreeを丸ごとコピーして最新のルートを残して他のルートは削除する +- その後,コピーしたものはバックアップないしログとしてディスクに書き込む +- データの増加によるリソースの枯渇を防ぎ,かつデータのログ付きバックアップを作成することで信頼性の向上が期待できる ---