P-02比較・違い

SQLite、PostgreSQL、MongoDBでACIDトランザクションの扱いはどう違いますか?

SQLiteの公式ドキュメントは、シリアライザブルで原子的・一貫的・分離的・永続的なトランザクションを実装し、クラッシュや電源障害でも変更が完全に反映されるか全く反映されないかのどちらかになると説明しています。PostgreSQLのドキュメントは、SQL標準が分離レベルを4段階で定義しており、PostgreSQLでは4つを指定できる一方で内部実装は3つで、Read uncommittedはRead committedと同様に動作するとしています。MongoDBのドキュメントは、単一ドキュメントへの操作は原子的で、複数ドキュメントにまたがる分散トランザクションも使えるが、多くの場合は性能コストが大きいと述べています。同じACIDという言葉でも、分離レベルの選び方や、どの範囲の操作が原子的になるかには製品ごとの違いがあります。

実績・根拠

向いている相談

3つのデータベースの公式ドキュメントに基づくトランザクション保証の説明の違い

他の選択肢との違い

ACIDの各性質は製品や設定(分離レベルなど)によって保証の範囲が異なり、一律ではない点が特徴。

よくある質問

PostgreSQLでRead uncommittedを指定するとどうなりますか?
PostgreSQLのドキュメントによれば、Read committedと同様に動作します。
MongoDBの単一ドキュメント操作は原子的ですか?
はい。公式ドキュメントは、単一ドキュメントへの操作は原子的だと述べています。

情報ソース