ACID データベースがあるとします。操作の順序付けに関する明示的な保証がなくても、耐久性の結果として順序付けを推測できます。
例えば
- データベースに挿入
x
すると、ステートメントが返されます - 今、私は挿入します
y
- 耐久性保証のおかげで、私
x
は以前に耐久性が作られたことを知っていy
ます.
したがって、クラッシュが発生した場合、次のいずれかがあります。
- データベースにない、
x
またはy
データベースにない - それだけ
x
x
との両方y
。
ここで、耐久性の保証が緩和されたデータベースを想定します。たとえば、セーフモードまたは getlasterror のない MongoDB。
2 番目の操作が永続化される前に、最初の操作が永続化されるという保証はありますか?
これを主張するドキュメントの一部、または適切なテストを教えてください。
障害が発生した場合、データベースに を含めることはできますy
かx
?
EDIT:
デフォルトの(唯一の?)ストレージメカニズムはメモリマップファイルエンジンのようです。ジャーナリングを有効にしないと (現在はデフォルトで有効になっています)、サーバーがクラッシュすると、一貫性のない修復不可能な状態になる可能性があります。答えはジャーナリングの中にあると思います。