2

ACID データベースがあるとします。操作の順序付けに関する明示的な保証がなくても、耐久性の結果として順序付けを推測できます。

例えば

  1. データベースに挿入xすると、ステートメントが返されます
  2. 今、私は挿入しますy
  3. 耐久性保証のおかげで、私xは以前に耐久性が作られたことを知っていyます.

したがって、クラッシュが発生した場合、次のいずれかがあります。

  1. データベースにない、xまたはyデータベースにない
  2. それだけx
  3. xとの両方y

ここで、耐久性の保証が緩和されたデータベースを想定します。たとえば、セーフモードまたは getlasterror のない MongoDB。

2 番目の操作が永続化される前に、最初の操作が永続化されるという保証はありますか?
これを主張するドキュメントの一部、または適切なテストを教えてください。
障害が発生した場合、データベースに を含めることはできますyx?

EDIT:
デフォルトの(唯一の?)ストレージメカニズムはメモリマップファイルエンジンのようです。ジャーナリングを有効にしないと (現在はデフォルトで有効になっています)、サーバーがクラッシュすると、一貫性のない修復不可能な状態になる可能性があります。答えはジャーナリングの中にあると思います。

4

2 に答える 2

1

ユースケースによっては、コレクション内のオブジェクトの挿入順序を維持する Mongo のCapped Collectionsを使用できます。ただし、いくつかの制限がありますが、ドキュメントを確認してください。

Sorting と Natural Orderingからさらに洞察を得ることができます。

標準テーブルの場合、自然順序は特に有用ではありません。順序は挿入順序に近いことがよくありますが、確実であるとは限らないためです。ただし、Capped Collections の場合、挿入順序は自然順序であることが保証されます。

于 2011-11-07T20:05:47.543 に答える