MongoDBのトランザクションはどうなっているのか

MongoDBってトランザクションないよね?上司に聞かれたので、私はそう認識していると回答しておいたのですが自信がないので調査してみます。

そもそもトランザクションとは?

そもそも、私はトランザクションの理解が曖昧です。

現状では、データベースを操作する処理の単位と認識しています。

まずはここからはっきりさせておこうと思い、調査してみると。。。

用語「トランザクション (transaction)」の意味を何となく説明しています。

やはり処理単位のようですね。トランザクションは分けることの出来ない処理の単位です。そして、データベースを操作する上でよく用いられる用語というのも正解。しかし、データベースだけでなく色々な処理の単位を示すようです。

MongoDBはトランザクションを持っているのか

それを踏まえた上で、MongoDBはトランザクションを持っているのか調査してみます。インターネットをあさってみたところ、初心者がとっつきやすそうな「MongoDBの薄い本」を確認してみると

MongoDB はトランザクションを持っていません。

ということで、やはりトランザクションは無いようですね。いくつかの対応策はあるようですが。

トランザクションが無いと何が問題?

処理Aと処理Bを包括する処理C(トランザクション)があったときに、処理Aが成功して処理Bが失敗したときに処理Cを失敗として処理Aを廃棄できるのがトランザクションの良いところですね。中途半端な処理になってしまうと、後処理が面倒ですので最初からやり直しできた方がいいです。

そういった特性をまとめているのがACID特性なるものですね。「wikipedia

しかし、今年の夏にトランザクション機能を実装した版を公開するようです!

Let's share SNS