はじめに
DBスペシャリスト試験の勉強中の保守系ESです。
勉強していて「初めからこう言ってくれれば分かりやすかったのに!」というところをまとめていくシリーズ第2弾。
直列可能性とは?
ChatGPTに聞いてみた。
## 直列可能性(Serializability)とは?
直列可能性(Serializability) とは、
データベースのトランザクション処理における整合性を保証するための重要な概念であり、
複数のトランザクションを並行して実行する際に、
結果が何らかの直列(シリアル)な実行と同じになることを指します。
言いたいことは、「並列実行しても、直列実行しても、同じ結果が得られる」ということでしょう。
「直列可能性」という表現の違和感
前提の違い
ChatGPTの回答も、上記の私のまとめの一文もそうですが、一般的には以下のようにとらえるのが普通だと思います。
- 直列実行が前提
- そのうえで、並列実行しても、直列実行した時と結果が同じ
にもかかわらず、この「直列可能性」という表現は以下のような視点で作られています。
- 並列実行が前提
- そのうえで、直列実行しても、並列実行した時と結果が同じ
なぜ並列実行が前提なのか?
本質的には、 並列処理のことを考えた時に初めて「直列実行した時と結果が同じ」かどうかを考える必要があるから だと思います。
言い換えれば、比較対象が「直列実行か、並列実行か」ではなく、「(並列実行時に)直列実行した時と同じになるか、同じにならないか」というイメージでしょうか。
和訳の問題
「Serializability」
という単語をかなり安直に訳してしまっています。
英語で見れば、まだ 「ability」=「できること、能力」 というところから、 「直列実行することもできる」 という意味が捉えやすいです。
しかし、この 「ability」を「可能性」と訳してしまったことで、「possibilities」と誤認しやすく 、意味が分かりにくくなっていると思います。
日本語で言い換えれば、 「可能性」=「物事が実現できる見込み」であって、誰も「可能(である)性(質)」とは読みません。
「直列等価性」とすべき
これであれば、端的に「直列実行した時と結果が同じ」を表せますよね…。
「Serializability」なんてシステム用語でしか使わないでしょうし、流行らないかな…。