はじめに
日立製作所の西谷淳平です。ずいぶん間が開いてしまいましたが、投稿を再開しようと思います。
前回までは、分散トランザクションを構築するための理屈の部分に重点をおきつつ、SagaやTwo-Phase Commitの欠点に対して言及してきました。今回は、投稿のリハビリも兼ねて、そもそもITにおけるトランザクションとは、何を指しどういう意味空間を持つ言葉なのかを説明します。
本シリーズの予定
- マイクロサービストランザクションの動向
- トランザクションの原則:ACID特性とCommitment Ordering前編
- トランザクションの原則:ACID特性とCommitment Ordering後編
- 合意理論から見る2Phase commitとMicroservice
- トランザクションとはなんだろうか(今回)
- Paxos Commit
経緯
分散トランザクションにかかわる活動を通して、たまに「そのそもトランザクションとは何か?」という議論が起こります。なぜかといえば、テクノロジー分野ではACID属性を担保するデータベーストランザクション以外にも、ブロックチェーンやメッセージブローカーといった技術分野でもトランザクションという用語が使われており、かつ分野によって別の機能を指していたりします。
同時に、トランザクションは、法務やファイナンスの文脈でも使われる用語です。分野によって実態が違う単語というのは、イメージをつかみづらくなるので、この疑問が沸くのはもっともだと思います。とはいえ、同じ単語が充てられている以上、何か通底する意味空間が存在しているとも考えられるわけです。
「Transaction」という言葉が持つ意味空間
ではまず、語源にあたってみましょう。transactionは「trans」と「acton(行う)」という語源から成り立ちます。
transは他にも「transfer(移動する)」や「transform(変形する)」「translate(翻訳する)」という言葉にも充てられているとおり、「(何かを)超えて変化する」というニュアンスがあります。よく、デジタルトランスフォーメーションを「DX」と略しますが、トランスフォーメーションに「X」を当てているのも実は同じ理由です。
「trans」が持つ、何かを超えるというクロスするイメージを、英語の慣習として「X」という記号で表現しているのですね。
したがって、Transacitonとは「何かを超えて変化する行動」というイメージを持つことになります。
語源的な意味を念頭において、Transactionの意味を辞書を引くと「業務・取引」といった言葉が充てられています。英語では、「a business deal or action, such as buying or selling something」とも説明されており、何かを売買するときの行動そのものを指す言葉ということになります。売買とはすなわち、「金銭を物やサービスと交換することで成立する契約行為」です。

語源的なイメージとも一致しますね。お金が契約を超えて「りんご」という物に変化しているわけです。このようなイメージでとらえると、トランザクションが発生するITシステムは何を取り扱っているか類推可能になると思います。
例えば、
- 旅行の予約:お金を引き換えとして、飛行機にのって、博物館に行き、ホテルに宿泊する権利を契約する
- 株式の売買:株と買い付け余力を交換する
- Eコマーズで物品を購入する:物品の購入ボタンで確定したのち、在庫を引き当て、物流に乗せ、受け取る。
それぞれがトランザクションであり、契約のタイミングでものやサービスを受け取れることが確定します。
実はこの契約という行為そのものが、ITで扱うトランザクションの世界と接続するポイントになります。
現実世界とIT世界のトランザクションを接続する
データベースの大家であるJim Gray先生は、彼の著作である「The Transaction Concept:Virtues and Limitations」の冒頭(INTRODUCTION: What is a transaction?)にて以下のように述べています。
Transaction(取引)とは、もともと契約法から生まれました。契約を結ぶときのことを少し想像してみましょう。複数の当事者は、まず話し合い、最終的に「これで合意しよう」と当事者間で決めます。その合意は、書類へのサインであったり、握手やうなずきといった行為で成立します。例えばキリスト教の結婚式を例にすると以下のようになります。
- 新郎新婦は長い時間をかけて関係を築き、結婚式を挙げる
- 結婚式で牧師は、異議のある人がいないことを確認したうえで、新郎新婦に「結婚に同意しますか?」と尋ねる
- 両名が「はい」と答えたら、牧師が正式に夫婦と認める

このような「契約(=contract=transaction)」は、近代法律上は最初から違法だった場合しか契約を無効にできませんから、事実上一度契約が成立すると覆すことができません。したがって、契約に問題が生じた場合は、追加で補償する契約(Compensation Transaction)を新たに締結することによって調整することになります。
このような人間の慣習から派生した契約行為には次のような特徴があります。
- 取引は法的な手続きに従っている必要がある
- 取引は成功するか失敗するかの二者択一であり、契約の全当事者が拘束されるか、拘束されないかのいずれかになる。夫婦のうち夫だけ結婚しているということはあり得ない
- 一度確定した取引は何があっても取り消すことができない
トランザクションを扱うエンジニアであればもう感づいたと思いますが、契約行為の特徴は、実はACID特性そのものです。
契約 | ACID特性 |
---|---|
取引は法的な手続きに従っている必要がある | 一貫性(Consistency) |
取引は成功するか失敗するかの二者択一であり、契約の全当事者が拘束されるか、拘束されないかのいずれかになる。 | 原子性(Atomicity) |
一度確定した取引は何があっても取り消すことができない | 永続性(Durability) |
つまり、ITの用語と思われがちなACID特性は、実は現実世界の契約行為に関する慣習から導きだされています。
補足1 永続性
Durabilityに関しては今まで言及していませんでしたが、簡単に言えば、計算機の電源を落とした結果、契約が吹っ飛ぶと困るわけですから、契約を締結した瞬間にしっかり契約書といった紙であったり、信頼性のあるディスクだったり、そういったものにしっかり保存しましょう、ということになります。これはブロックチェーンでいう「ファイナリティー」と意味論上同じです。
補足2 トランザクション周辺の諸技術
Saga の文脈で補償(Compensation)トランザクションが語られますが、これは契約を新しい契約で覆すことを意味しますから、契約行為そのものを実現するオンライントランザクションと用途が異なるということになります。
また、オフライントランザクションは、締結した契約を粛々とシステムに反映させていく処理そのものとなりますから、その世界観の中で「バッチ処理」という技術が構築されていきます。このあたりはいずれまた説明します。
まとめ
この投稿では、法務・ファイナンス・ITという、一見異なる分野で使われている「トランザクション」という用語が、実は契約行為に関する人々の慣習を通してイメージが通底していることを示しました。
そして、現代においてはこの契約行為がコンピュータ・ITシステム上で行われますから、契約行為を成立させる電子計算機上の機能を生み出していくことになります。それが先に紹介したAtomicityを成立させるAtomic Commitmentであったり、契約の順番を制御するCommitment Ordering -> Isolationになるというわけです。
そして、Atomic Commitment やCommitment Orderingといった理屈を適用するITシステムの環境が変われば、ACID特性を実現するテクノロジーが変わります。
そんなわけで、次はPaxos Commitというトランザクション管理方式を説明します。