2011-11-07 9 views
2

ACIDデータベースがあるとします。操作順序について明示的な保証がない場合でも、耐久性の結果として順序付けを推測できます。耐久性なしで保証されている操作は何ですか(mongo)?

  1. 私はデータベースにxを挿入し、文が
  2. を返す今、私はので、耐久性の保証のy
  3. を挿入し、私はxy前に、耐久性のある作られた知っています。

したがって、クラッシュ時に、私はどちらかは持っている:データベースのみx

  • 両方xy
  • xまたはy

    1. なし。

    耐久性が緩和されたデータベースを想定します。例えばsafemodeまたはgetl​​asterrorのないMongoDB。

    2回目の操作が耐久性を持たせる前に、最初の操作が耐久性があるという保証はありますか?
    これを主張する文書の一部または適切なテストを教えてください。
    私のデータベースにはyが含まれていますが、xは含まれていませんか?

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

  • 答えて

    2

    。具体的には、ジャーナルはwrite-ahead REDOログです。ジャーナリングで

    は、ジャーナル・ファイルは、選択したデシベルパスの下ジャーナル/ サブディレクトリに作成され、有効になって。これらのファイルは、先読みの REDOログです。さらに、最後のシーケンス番号ファイル、journal/lsnは になります。クリーンシャットダウンはジャーナル/の下にあるすべてのファイルを削除

    出典:保証はありませんhttp://www.mongodb.org/display/DOCS/Journaling#Journaling-JournalFiles

    ジャーナリングなし(私は見つけるか、理解することができます)。 MongoDBはメモリマッピングされたファイルをプライマリストレージエンジンとして使用します。メモリへの書き込みは、直ちにファイルシステムに反映されません。 OSクラッシュ(たとえば)の場合、ファイルは一貫性がなく、回復不可能な状態にある可能性があります。

    1

    ユースケースによっては、コレクション内のオブジェクトの挿入順序を維持するMongoのCapped Collectionsを使用することができます。ただし、いくつかの制限がありますが、ドキュメントをチェックしてください。あなたはまた、Sorting and Natural Orderingからより多くの洞察を得ることができます

    :であることが保証されていない、注文がしばしば挿入オーダーに近いですが、ので、標準テーブルの場合

    を、自然な順序は特に有用ではありません。ただし、Cappedコレクションの場合、自然順序が挿入順序であることが保証されています。

    ジャーナリングとの保証はあり:自分の質問に答えるために

    +0

    ありがとうございますが、これは私が求めているものではありません。私は挿入命令で物事を見つけたくありません。私が見つけにくい*挿入順序と耐久性についての保証*が欲しい。私は、失敗時のデータベースの状態/一貫性について懸念しています。私はいくつかの関連情報を見つけたので、私自身の質問に答えました。 – z5h

    +0

    ジャーナリングは_耐久性があります。したがって、質問の表現方法は少し誤解を招くことがあります。 – tolitius

    +0

    私はあなたが言っていることを知っています。私にとって重要なポイントは、ジャーナリングなしでは、記憶メカニズムが定期的なフラッシュを伴うOS実装/管理のメモリマップファイルであることです。データベースが矛盾したり修復不能になる可能性があることを意味します。レプリケーション(ジャーナリングなし)の場合でも、データベースが不整合または修復不可能になる可能性はありますが、そうは思われません。したがって、ジャーナリング - >耐久性と発注は、逆ですが真実ではありません。 MongoDBの耐久性(ジャーナルなし)はそれほど意味するものではありません。 – z5h

    関連する問題