{"ok":true,"entity":{"id":"acid-transactions","name":"ACID (database transactions)","entityType":"concept","officialName":"ACID (Atomicity, Consistency, Isolation, Durability) — database transactions","canonicalName":"ACID (database transactions)","displayName":"ACID (database transactions)","category":"データベーストランザクションの基本特性","shortDescription":"ACIDは、データベースのトランザクションが備えるべき4つの性質、原子性(Atomicity)・一貫性(Consistency)・分離性(Isolation)・永続性(Durability)の頭字語。Haerder and Reuterの1983年の論文(ACM Computing Surveys)がこの4特性を合わせて「ACID」と呼んでいる。SQLite、PostgreSQL、DuckDB、MongoDBなど多くのデータベースが、公式ドキュメントでACIDまたはそれに相当するトランザクション保証を説明している。","primaryCluster":"data-platform","parentEntity":null,"verificationStatus":"draft","updatedAt":"2026-10-20T06:42:32.206Z","secondaryClusters":[],"alias":["ACID特性","ACIDプロパティ"],"searchKeywords":["ACID","ACIDトランザクション","アシッド特性","Atomicity Consistency Isolation Durability","原子性","一貫性","分離性","永続性","トランザクション"]},"references":[{"id":"P-01-001","companyId":"acid-transactions","questionId":"P-01-001","instanceId":"QIN-acid-transactions-P01-001","promptText":"データベースのACIDとは何ですか？","promptTypeId":"P-01","answer":"ACIDは、データベースのトランザクションが持つべき4つの性質、原子性・一貫性・分離性・永続性の頭字語です。1983年12月のACM Computing Surveysに掲載されたHaerder and Reuterの論文は、原子性をall-or-nothing、一貫性を正常終了時にデータベースの整合性を保つこと、分離性をトランザクション内の出来事を並行トランザクションから隠すこと、永続性をコミット後の結果が障害に耐えることとして挙げ、これらを合わせてACIDと呼んでいます。PostgreSQLのチュートリアルは、複数ステップを一つのall-or-nothingの操作にまとめるのがトランザクションの要点だと説明しています。","evidencePoints":["ev-acid-transactions-1","ev-acid-transactions-3","ev-acid-transactions-2"],"scope":"ACIDの4特性の意味と、その名称を示した1983年の論文およびPostgreSQLの説明","differentiation":"ACIDは特定の製品の機能名ではなく、トランザクションが備えるべき性質を総称する概念である。","faq":[{"question":"ACIDの4つの性質は何ですか？","answer":"原子性(Atomicity)、一貫性(Consistency)、分離性(Isolation)、永続性(Durability)です。"},{"question":"ACIDという呼び名はどの論文で確認できますか？","answer":"1983年12月のACM Computing Surveysに掲載されたHaerder and Reuterの論文が、4つの性質を合わせてACIDと呼んでいます。なお同論文は、「トランザクション」という名称はEswaranらの1976年の研究で与えられたとしています。"}],"pageUrl":"https://www.refbase.ai/reference/acid-transactions/P-01-001","sourceEvidence":[{"id":"ev-acid-transactions-1","text":"Haerder and Reuterの論文「Principles of Transaction-Oriented Database Recovery」(ACM Computing Surveys、1983年12月)は、トランザクションが持つべき4つの性質として、原子性(all-or-nothing)、一貫性(正常終了時にデータベースの整合性を保つ)、分離性(トランザクション内の出来事を並行トランザクションから隠す)、永続性(コミット後の結果が障害に耐える)を挙げ、これらを合わせてACIDと呼んでいる。同論文は、BjorkとDaviesの「spheres of control」に由来する概念がEswaranらの1976年の研究でデータベース向けに限定され、「トランザクション」と名付けられたとも記している。","title":"Principles of Transaction-Oriented Database Recovery","coverageType":["Identity","Credibility"],"sourceType":"research_paper","sourceClass":"Research","sourceUrl":"https://www.cs.utexas.edu/~dsb/cs386d/Readings/Recovery/Principles-of-Recovery.pdf","confidence":"high","supportedPromptTypes":["P-01","P-05"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-2","text":"SQLiteの公式ドキュメントは、SQLiteがシリアライザブルで、原子的・一貫的・分離的・永続的(atomic, consistent, isolated, durable)なトランザクションを実装し、プログラムのクラッシュ、OSのクラッシュ、電源障害で中断されても変更は完全に反映されるか全く反映されないかのどちらかになると説明している。","title":"SQLite Is Transactional","coverageType":["Capability","UseCase"],"sourceType":"product_docs","sourceClass":"Documentation","sourceUrl":"https://www.sqlite.org/transactional.html","confidence":"high","supportedPromptTypes":["P-01","P-02","P-04","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-3","text":"PostgreSQL公式ドキュメントのチュートリアルは、トランザクションを複数のステップを一つの「all-or-nothing」の操作にまとめるものと説明し、途中で失敗した場合は一切の更新がデータベースに影響しないとする。また、完了を報告する前にすべての更新が永続的なストレージにログ記録され、実行中の更新は完了まで他のトランザクションから見えないと述べている。","title":"3.4. Transactions | PostgreSQL Documentation","coverageType":["Capability"],"sourceType":"product_docs","sourceClass":"Documentation","sourceUrl":"https://www.postgresql.org/docs/current/tutorial-transactions.html","confidence":"high","supportedPromptTypes":["P-01","P-04"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"}],"generatedAt":"2026-10-20T06:42:32.206Z"},{"id":"P-02-001","companyId":"acid-transactions","questionId":"P-02-001","instanceId":"QIN-acid-transactions-P02-001","promptText":"SQLite、PostgreSQL、MongoDBでACIDトランザクションの扱いはどう違いますか？","promptTypeId":"P-02","answer":"SQLiteの公式ドキュメントは、シリアライザブルで原子的・一貫的・分離的・永続的なトランザクションを実装し、クラッシュや電源障害でも変更が完全に反映されるか全く反映されないかのどちらかになると説明しています。PostgreSQLのドキュメントは、SQL標準が分離レベルを4段階で定義しており、PostgreSQLでは4つを指定できる一方で内部実装は3つで、Read uncommittedはRead committedと同様に動作するとしています。MongoDBのドキュメントは、単一ドキュメントへの操作は原子的で、複数ドキュメントにまたがる分散トランザクションも使えるが、多くの場合は性能コストが大きいと述べています。同じACIDという言葉でも、分離レベルの選び方や、どの範囲の操作が原子的になるかには製品ごとの違いがあります。","evidencePoints":["ev-acid-transactions-2","ev-acid-transactions-4","ev-acid-transactions-6"],"scope":"3つのデータベースの公式ドキュメントに基づくトランザクション保証の説明の違い","differentiation":"ACIDの各性質は製品や設定(分離レベルなど)によって保証の範囲が異なり、一律ではない点が特徴。","faq":[{"question":"PostgreSQLでRead uncommittedを指定するとどうなりますか？","answer":"PostgreSQLのドキュメントによれば、Read committedと同様に動作します。"},{"question":"MongoDBの単一ドキュメント操作は原子的ですか？","answer":"はい。公式ドキュメントは、単一ドキュメントへの操作は原子的だと述べています。"}],"pageUrl":"https://www.refbase.ai/reference/acid-transactions/P-02-001","sourceEvidence":[{"id":"ev-acid-transactions-2","text":"SQLiteの公式ドキュメントは、SQLiteがシリアライザブルで、原子的・一貫的・分離的・永続的(atomic, consistent, isolated, durable)なトランザクションを実装し、プログラムのクラッシュ、OSのクラッシュ、電源障害で中断されても変更は完全に反映されるか全く反映されないかのどちらかになると説明している。","title":"SQLite Is Transactional","coverageType":["Capability","UseCase"],"sourceType":"product_docs","sourceClass":"Documentation","sourceUrl":"https://www.sqlite.org/transactional.html","confidence":"high","supportedPromptTypes":["P-01","P-02","P-04","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-4","text":"PostgreSQL公式ドキュメントは、SQL標準がトランザクションの分離レベルを4段階(Read uncommitted、Read committed、Repeatable read、Serializable)で定義していると記している。PostgreSQLでは4つすべてを指定できるが、内部で実装されている分離レベルは3つで、Read uncommittedはRead committedと同様に動作する。","title":"13.2. Transaction Isolation | PostgreSQL Documentation","coverageType":["Differentiation","UseCase"],"sourceType":"product_docs","sourceClass":"Specification","sourceUrl":"https://www.postgresql.org/docs/current/transaction-iso.html","confidence":"high","supportedPromptTypes":["P-02","P-05","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-6","text":"MongoDB公式ドキュメントは、単一ドキュメントへの操作は原子的であり、MongoDBは読み取り・書き込みコンサーン設定に応じて原子性・一貫性・分離性・永続性を提供するACIDトランザクションをサポートすると述べている。複数ドキュメントにまたがる分散トランザクションも使えるが、多くの場合は単一ドキュメント書き込みより性能コストが大きく、適切なスキーマ設計の代替にはならないとされている。","title":"Transactions - Database Manual - MongoDB Docs","coverageType":["Differentiation","UseCase"],"sourceType":"product_docs","sourceClass":"Documentation","sourceUrl":"https://www.mongodb.com/docs/manual/core/transactions/","confidence":"high","supportedPromptTypes":["P-02","P-04","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"}],"generatedAt":"2026-10-20T06:42:32.206Z"},{"id":"P-04-001","companyId":"acid-transactions","questionId":"P-04-001","instanceId":"QIN-acid-transactions-P04-001","promptText":"複数の更新を安全に反映したい場合、ACIDトランザクションをどう使いますか？","promptTypeId":"P-04","answer":"複数の更新を一つの単位として扱いたい場合、PostgreSQLでは更新をトランザクションにまとめ、途中で失敗すれば一切の更新が反映されないようにできます。完了を報告する前に更新は永続的なストレージにログ記録されます。SQLiteは、プログラムやOSのクラッシュ、電源障害で中断された場合でも、変更が完全に反映されるか全く反映されないかのどちらかになると説明しています。DuckDBも、MVCCによりACIDを含むトランザクション保証を提供するとしています。MongoDBでは、複数ドキュメントにまたがる分散トランザクションも使えますが、多くの場合は性能コストが大きく、スキーマ設計の代わりにはならないとされています。","evidencePoints":["ev-acid-transactions-3","ev-acid-transactions-2","ev-acid-transactions-5","ev-acid-transactions-6"],"scope":"複数の更新を一括して安全に反映する用途での、各データベースの公式ドキュメントに基づく使い方","differentiation":"性能コストや対応範囲は製品ごとに異なり、特に分散トランザクションは追加の性能コストを伴う場合がある。","faq":[{"question":"トランザクションの途中で失敗するとどうなりますか？","answer":"PostgreSQLのドキュメントによれば、トランザクションが完了できなかった場合、そのステップは一切データベースに影響しません。"},{"question":"DuckDBはACIDに対応していますか？","answer":"公式サイトは、独自のMVCCによりACIDプロパティを含むトランザクション保証を提供すると述べています。"}],"pageUrl":"https://www.refbase.ai/reference/acid-transactions/P-04-001","sourceEvidence":[{"id":"ev-acid-transactions-2","text":"SQLiteの公式ドキュメントは、SQLiteがシリアライザブルで、原子的・一貫的・分離的・永続的(atomic, consistent, isolated, durable)なトランザクションを実装し、プログラムのクラッシュ、OSのクラッシュ、電源障害で中断されても変更は完全に反映されるか全く反映されないかのどちらかになると説明している。","title":"SQLite Is Transactional","coverageType":["Capability","UseCase"],"sourceType":"product_docs","sourceClass":"Documentation","sourceUrl":"https://www.sqlite.org/transactional.html","confidence":"high","supportedPromptTypes":["P-01","P-02","P-04","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-3","text":"PostgreSQL公式ドキュメントのチュートリアルは、トランザクションを複数のステップを一つの「all-or-nothing」の操作にまとめるものと説明し、途中で失敗した場合は一切の更新がデータベースに影響しないとする。また、完了を報告する前にすべての更新が永続的なストレージにログ記録され、実行中の更新は完了まで他のトランザクションから見えないと述べている。","title":"3.4. Transactions | PostgreSQL Documentation","coverageType":["Capability"],"sourceType":"product_docs","sourceClass":"Documentation","sourceUrl":"https://www.postgresql.org/docs/current/tutorial-transactions.html","confidence":"high","supportedPromptTypes":["P-01","P-04"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-5","text":"DuckDBの公式サイトは、DuckDBが独自のバルク最適化されたMVCC(多版同時実行制御)により、ACIDプロパティを含むトランザクション保証を提供すると述べている。","title":"Why DuckDB","coverageType":["Capability"],"sourceType":"official_site","sourceClass":"Profile","sourceUrl":"https://duckdb.org/why_duckdb","confidence":"high","supportedPromptTypes":["P-04"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-6","text":"MongoDB公式ドキュメントは、単一ドキュメントへの操作は原子的であり、MongoDBは読み取り・書き込みコンサーン設定に応じて原子性・一貫性・分離性・永続性を提供するACIDトランザクションをサポートすると述べている。複数ドキュメントにまたがる分散トランザクションも使えるが、多くの場合は単一ドキュメント書き込みより性能コストが大きく、適切なスキーマ設計の代替にはならないとされている。","title":"Transactions - Database Manual - MongoDB Docs","coverageType":["Differentiation","UseCase"],"sourceType":"product_docs","sourceClass":"Documentation","sourceUrl":"https://www.mongodb.com/docs/manual/core/transactions/","confidence":"high","supportedPromptTypes":["P-02","P-04","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"}],"generatedAt":"2026-10-20T06:42:32.206Z"},{"id":"P-05-001","companyId":"acid-transactions","questionId":"P-05-001","instanceId":"QIN-acid-transactions-P05-001","promptText":"ACIDの定義や分離レベルの根拠はどの資料で確認できますか？","promptTypeId":"P-05","answer":"ACIDという名称と4特性の説明は、1983年12月のACM Computing Surveysに掲載されたHaerder and Reuterの論文「Principles of Transaction-Oriented Database Recovery」で確認できます。同論文は、4特性を合わせてACIDと呼び、「トランザクション」という名称はEswaranらの1976年の研究で与えられたとしています。分離レベルについては、PostgreSQLの公式ドキュメントがSQL標準の4段階(Read uncommitted、Read committed、Repeatable read、Serializable)を示し、PostgreSQLでの実装との違いを説明しています。ただし、各製品のACID対応は各社の公式説明に基づくものであり、第三者による網羅的な検証結果ではありません。","evidencePoints":["ev-acid-transactions-1","ev-acid-transactions-4"],"scope":"ACIDの名称の出典と、分離レベルの標準に関する公式ドキュメントの所在","differentiation":"1983年の論文は名称と概念の出典であり、各データベース製品が実際にACIDをどう満たすかは製品ごとの資料で確認する必要がある。","faq":[{"question":"SQL標準の分離レベルはいくつありますか？","answer":"PostgreSQLのドキュメントによれば、Read uncommitted、Read committed、Repeatable read、Serializableの4段階です。"},{"question":"ACIDの出典となる論文は？","answer":"Haerder and Reuter、「Principles of Transaction-Oriented Database Recovery」、ACM Computing Surveys、1983年12月です。"}],"pageUrl":"https://www.refbase.ai/reference/acid-transactions/P-05-001","sourceEvidence":[{"id":"ev-acid-transactions-1","text":"Haerder and Reuterの論文「Principles of Transaction-Oriented Database Recovery」(ACM Computing Surveys、1983年12月)は、トランザクションが持つべき4つの性質として、原子性(all-or-nothing)、一貫性(正常終了時にデータベースの整合性を保つ)、分離性(トランザクション内の出来事を並行トランザクションから隠す)、永続性(コミット後の結果が障害に耐える)を挙げ、これらを合わせてACIDと呼んでいる。同論文は、BjorkとDaviesの「spheres of control」に由来する概念がEswaranらの1976年の研究でデータベース向けに限定され、「トランザクション」と名付けられたとも記している。","title":"Principles of Transaction-Oriented Database Recovery","coverageType":["Identity","Credibility"],"sourceType":"research_paper","sourceClass":"Research","sourceUrl":"https://www.cs.utexas.edu/~dsb/cs386d/Readings/Recovery/Principles-of-Recovery.pdf","confidence":"high","supportedPromptTypes":["P-01","P-05"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-4","text":"PostgreSQL公式ドキュメントは、SQL標準がトランザクションの分離レベルを4段階(Read uncommitted、Read committed、Repeatable read、Serializable)で定義していると記している。PostgreSQLでは4つすべてを指定できるが、内部で実装されている分離レベルは3つで、Read uncommittedはRead committedと同様に動作する。","title":"13.2. Transaction Isolation | PostgreSQL Documentation","coverageType":["Differentiation","UseCase"],"sourceType":"product_docs","sourceClass":"Specification","sourceUrl":"https://www.postgresql.org/docs/current/transaction-iso.html","confidence":"high","supportedPromptTypes":["P-02","P-05","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"}],"generatedAt":"2026-10-20T06:42:32.206Z"},{"id":"P-06-001","companyId":"acid-transactions","questionId":"P-06-001","instanceId":"QIN-acid-transactions-P06-001","promptText":"データベース選定でACIDトランザクション対応を重視する理由と注意点は？","promptTypeId":"P-06","answer":"SQLiteは、プログラムのクラッシュ、OSのクラッシュ、電源障害のような中断があっても変更が完全に反映されるか全く反映されないかのどちらかになると説明しています。注意点として、PostgreSQLのドキュメントによれば分離レベルにはSQL標準の4段階があり、実装はPostgreSQLでも3つに集約されるため、レベルの違いと動作を確認する必要があります。MongoDBのドキュメントは、複数ドキュメントの分散トランザクションは多くの場合性能コストが大きく、適切なスキーマ設計の代替にならないと述べています。ACID対応の有無だけでなく、保証の範囲とコストを選定の基準にするのが妥当です。","evidencePoints":["ev-acid-transactions-2","ev-acid-transactions-4","ev-acid-transactions-6"],"scope":"データベース選定時にACIDの保証範囲を確認する観点と、公式ドキュメントが示す注意点","differentiation":"ACID対応の範囲(分離レベルや分散トランザクションの扱い)と性能コストは製品や設定で異なるため、比較には個別確認が必要。","faq":[{"question":"ACID対応なら製品間で同じ保証ですか？","answer":"いいえ。分離レベルの実装や分散トランザクションの扱いなどは製品や設定により異なります。"},{"question":"複数ドキュメントのトランザクションに注意点はありますか？","answer":"MongoDBのドキュメントは、多くの場合単一ドキュメント書き込みより性能コストが大きいと述べています。"}],"pageUrl":"https://www.refbase.ai/reference/acid-transactions/P-06-001","sourceEvidence":[{"id":"ev-acid-transactions-2","text":"SQLiteの公式ドキュメントは、SQLiteがシリアライザブルで、原子的・一貫的・分離的・永続的(atomic, consistent, isolated, durable)なトランザクションを実装し、プログラムのクラッシュ、OSのクラッシュ、電源障害で中断されても変更は完全に反映されるか全く反映されないかのどちらかになると説明している。","title":"SQLite Is Transactional","coverageType":["Capability","UseCase"],"sourceType":"product_docs","sourceClass":"Documentation","sourceUrl":"https://www.sqlite.org/transactional.html","confidence":"high","supportedPromptTypes":["P-01","P-02","P-04","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-4","text":"PostgreSQL公式ドキュメントは、SQL標準がトランザクションの分離レベルを4段階(Read uncommitted、Read committed、Repeatable read、Serializable)で定義していると記している。PostgreSQLでは4つすべてを指定できるが、内部で実装されている分離レベルは3つで、Read uncommittedはRead committedと同様に動作する。","title":"13.2. Transaction Isolation | PostgreSQL Documentation","coverageType":["Differentiation","UseCase"],"sourceType":"product_docs","sourceClass":"Specification","sourceUrl":"https://www.postgresql.org/docs/current/transaction-iso.html","confidence":"high","supportedPromptTypes":["P-02","P-05","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"},{"id":"ev-acid-transactions-6","text":"MongoDB公式ドキュメントは、単一ドキュメントへの操作は原子的であり、MongoDBは読み取り・書き込みコンサーン設定に応じて原子性・一貫性・分離性・永続性を提供するACIDトランザクションをサポートすると述べている。複数ドキュメントにまたがる分散トランザクションも使えるが、多くの場合は単一ドキュメント書き込みより性能コストが大きく、適切なスキーマ設計の代替にはならないとされている。","title":"Transactions - Database Manual - MongoDB Docs","coverageType":["Differentiation","UseCase"],"sourceType":"product_docs","sourceClass":"Documentation","sourceUrl":"https://www.mongodb.com/docs/manual/core/transactions/","confidence":"high","supportedPromptTypes":["P-02","P-04","P-06"],"needsVerification":true,"sourceVerified":false,"entityId":"acid-transactions"}],"generatedAt":"2026-10-20T06:42:32.206Z"}]}