ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Asakusa Framework 0.9.0のthreads.commit

2016-12-14 00:00:00 | PG(分散処理)

Asakusa Framework Advent Calendar 2016の14日目です。
今日は、2016/12/6にリリースされたAsakusaFW 0.9.0のちょいネタ、threads.commitについてです。

AsakusaFWはトランザクションの考え方を持っていて、Direct I/Oでファイルを出力するとき、一旦一時領域にファイルを出力し、全て出力し終わったら最終格納場所へ移動するという仕組みになっています。
これにより、簡易的なトランザクション(処理が成功したときだけ出力し、失敗したときは何も出力しない(中途半端な状態を残さない))を実現しているわけです。

この一時領域の場所や、そもそもこの仕組みを使うかどうか等はデータソースの定義で変更することが出来ます。
この定義に、AsakusaFW 0.9.0でthreads.commitというプロパティーが追加になっていました。
一時領域から最終格納場所への移動はシングルスレッドで行われていますが、このプロパティーを設定することで、マルチスレッドで実行されるようです。
とはいえ、普通は移動はメタデータの変更だけなのでほとんど時間はかからないはずで、シングルスレッドで充分だと思います。が、一時領域が最終格納場所と別ファイルシステムだったりMapRで別ボリュームだったりすると、移動ではなく転送(コピー&削除)になって時間がかかることがあるので、複数ファイルの転送を行うならマルチスレッドにした方が速くなることがあるのかもしれません。 


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Asakusa Framework 0.9.0のVa... | トップ | Asakusa Framework 0.9.0のWi... »
最新の画像もっと見る

コメントを投稿

PG(分散処理)」カテゴリの最新記事