InfoQ

News

ファイルシステムトランザクション-まだ障害となっていますか?

作者 Alexander Olaru, 翻訳者 編集部 投稿日 2008年1月14日 午後6時19分

コミュニティ
.NET,
Java,
Architecture
トピック
トランザクション処理
タグ
トランザクション
歴史的なトランザクション-プロセッシングシステムは、全体的にではないにせよ、第一に、トランザクション化される必要のあるIOアクティビティのACID的 な側面に対応するためにデータベースに依存していた。ファイルシステム操作のトランザクション用のサポートはライブラリ・フレームワーク、言語、もしくは ファイルシステムレベルにおいて劣っていた。最近この状況に改善の兆しが見え始めている。

ある特定のファイルシステム操作(ファイルリネーム、削除、等)は個別に考えた場合にはアトミックであるが、今までトランザクションベースのコンテキスト内で一式のファイルIO操作をサポートするために、総括的なAPI一式を提供するための代替策はほとんど存在していなかった。トランザクションの一部として連続的に実行される必要のあるファイルオペレーション伴うアプリケーション(作成、修正、リネーム、ファイルの削除)は、システム・アプリケーションのクラッシュかもしくは同時進行アクセスのイベント内の不一致な状態になる傾向を減らすため、カスタムビルドソリューションに頻繁に依存する必要があった。

アプリケーション一式はファイルシステム用のより強固なフル機能のトランザクションサポートから利点を得ることができる。

  • ”オフィス”アプリケーション(ワードプロセッサ、スプレッドシート、等)-膨大な数の読み取り、書き込み、削除ファイル操作が行われるところ
  • インストーラ-クラッシュかもしくはエラーのイベント内でオリジナルのファイルシステムステートにリストアを要する事が可能
  • 強力な”SQLライク"の検索能力を必要としない-いくつかのデータがフラットなファイルかもしくはデータベースにストアされていればより速く動作するかもしれない
  • ドキュメントとコンテントマネジメントシステム-ファイルIO操作を非常に頻繁に使用する

この分野の進展において最も注目すべき取り組みは下記のとおりである。

  • トランザクショナル NTFS(TxF) (source)-ウィンドウズファイルシステム
  • コモンズトランザクション(source)-Apache Java Project

MSDN Magazineの記事の中でMicrosoftのTechnicalエバンゲリストであるJason Olson氏は、トランザクションファイル操作をWindows Vistaと次世代のWindows Server('Longhorn')の概念を取り込んだ新たな機能であるTxFの主要機能(source)に関して説明した。Jason氏によるとその主なる目標は下記の通りである。

向上したアプリケーションスタビリティ:

トランザクショナルNTFSは、与えられたアプリケーションのために書かれ、保持される必要のあるエラー処理コードの量を減らすかもしくは削除する事によって、より良いアプリケーションスタビリティを可能にしている。これは究極にアプリケーションの複雑性を減らし、そのテストをし易くするのである・・・トランザクショナルファイルオペレーションなしでは、プロセス中にオペレーティングシステムがクラッシュする可能性を含めて失敗した時用のシナリオに頼るのは不可能に近い。

向上したプラットフォームスタビリティ:

・・・これはマイクロソフトがその独自のテクノロジにおいてTxFを使用している方法によって実現されている。現在Transactional NTFSを使用しているWindows VistaとWindows Server"Longhorn"内の機能には3つ主要なものがある。Windows Update、System RestoreとTask Schedulerである。これらの全ては電源が落ちたことよるシステムリブートのような例外において、ロールバック、コミットを処理するためにトランザクションのスコープ内でファイルをファイルシステムに記述するためTxFを使用している。

増加したイノベーション:

TxFはSQLコール外のトランザクションを使用するために、フレームワークを提供することによってイノベーションを促進している。最終的にトランザクショナルNTFSはデベロッパ達がより強固なコードを作るのを可能にするのと共に、彼らがアプリケーションを書く方法を根本的に変えることができる。あなたのデ ザインにトランザクションを取り込むことによって、起こり得る障害を考慮する必要なしにコードを書くことができるのである。

TxFはKernel Transaction Manager(KTM)の上に成り立っているので、KTMはMicrosoft Distributed Transaction Coordinatorと直接的に作用することができる。Jason氏はデベロッパがXAを使用している他のテクノロジでトランザクション化されたファイルオペレーションをリストアップできることを述べている。SQL操作、WS-Atomic TransactionかもしくはMSMQオペレーションを介したWebサービスコールである。それゆえにファイルシステムがXA Transactionに参加することを可能にする。

TxFに似た概念はVistaのLonghornのTransactional Registryで実装されている。この記事においてパフォーマンスに及ぼされる影響に関しても述べられている。TxFは厳格なpay-to-playモデルを備えている。もしあなたがトランザクション化されたファイルオペレーションを使用していないのなら経費はかからない。また彼は"TxFはコミット用に最適化されている"ことを付け加えた。

ApacheプロジェクトのCommons Transactionは、他の事項の中でもファイルシステムプロバイダ・実装にとらわれない方式でファイルシステムにトランザクショナルアクセスを提供する事を一番の目標としている。これはAPIが悲観的ロックスキーマを使用してファイルシステム上にACIDトランザクションをフィーチャするJavaライ ブラリによって実現されている。またmyjavatricks.com(サイト・英語)のブログには、Common Transactionの概念とJava内でトランザクション方式でベーシックなファイル操作を行う例(source)がいくつか提示されている。

Commons Transactionコンテキストの中心的なコンポーネントは、それがトランザクションを管理、準備、コミットするリソース・ファイル上でトランザクション、ファイル操作(コピー、作成、削除、移動、記述)をコーディネートするファイル操作のトランザクションと、コーディネートを開始するファイルリソースマネジャーである。初期化する際にFileResourceManagerには下記のものが提供される。

  • メインデータがコミットの後を追うディレクトリ
  • トランザクションが一時的なデータ(ワーキングディレクトリ)を保管しているディレクトリ
  • パスがURLエンコードされるべきかどうかを表示するブールフラグ
  • FileResourceManagerによって使用されるロガー

スタートアップするにあたって、FileResourceManagerはトランザクションを処理させようと試みる場合において、システムがクラッシュした時かもしくは回復不可能な障害に遭遇した時に、コミットを行うプロセスにそれがない限り未完成のトランザクションをどれでもロールバックしようと試みる。トランザクションが回復されない場合において(例:後転させる事も前転させ ることもできない)、全体的なワーキングディレクトリがファイルリソースマネジャーによって”汚れている”としてマークされていて、またその問題が解消されるまで変更が許されていない。ファイルリソースマネジャーが初期化される際に提供されるロガーは典型的に”汚れている”ステートからのマニュアルでのリカバリを可能にする情報を提供する。

もしもCommons TransactionがファイルシステムをXAコンプライアントリソースに変換しなくても、ファイルシステムトランザクションがアプリケーションに必要 でも、ブログ著者の意見ではライブラリは”多分考えられ得るどんなカスタムメカニズムよりも優れているのである”。

ファイルシステム内のトランザクションがデータベース環境にサポートされるのが可能になるまでの道のりはまだまだ長いが、少なくともいくつかの実装が姿を現し始めていて、それはデベロッパたちにとって未だ障害となっているこの分野に対するより実践的なソリューションを提供する準備が整っているようだ。

原文はこちらです:http://www.infoq.com/news/2008/01/file-systems-transactions

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。