2

私はすべての Web アプリ開発に (MongoLab 経由で) MongoDB を使用しており、その使いやすさと AngularJS との統合を気に入っています。しかし最近では、かつて MongoDB のエバンジェリストだった私が一緒に働いている多くの人々が遠ざかり始めています。私の SYSADMINS の 1 人は、「Mongo を使用しないでください。Mongo を使用しないでください。主な理由は、データが実際にディスクに書き込まれることを確認できないためです」と具体的に言いました。

これは大きな問題であることがわかりました。それ以来、私はとてもクールだと思う CouchDB を調べました。これは引き続き JSON を使用し、GUI (Futon) と基本的な CLI も提供します。Mongo には強力なフォロワー、ユーザー ベース、およびコミュニティがあるように見えるので、これは私を困惑させます。Mongo から Couch へのプロジェクトの開発と移行を実際に開始する前に、これが単なる FUD なのか、それとも実際の懸念事項なのかを判断するために、開発者が何を使用しているかを知りたいと思いました。

4

2 に答える 2

1

MongoDB は速度に重点を置いていますが、これは、データがディスクに書き込まれたかどうかを確認できないという意味ではありません。

接続オブジェクトでは、オプションを指定して、書き込みに関する問題を調整できます。より重要なものは次のとおりです。

  • w : mongo クライアントが待機するマシンの数を表します。これをNに設定すると、mongo クライアントはN台のマシンがこのデータをディスクに書き込むまで待機します。このオプションは、レプリカ セットがある場合に便利です。
  • j : 操作がジャーナルに書き込まれるまで mongo クライアントが待機する必要があるかどうかを表します。

編集:

Python は非常に高水準の言語であるため、Python ドライバーへのリンクを配置しましたが、これらのオプションはすべての MongoDB ドライバーで使用できます。

EDIT2:

@asya-kamsky が述べたように、 w > 0を選択した場合でも、MongoDB はmmap されたファイルのみを更新し、変更は syncDelay の後にディスクに fsync されるだけです

とにかく、耐久性を向上させる必要がある場合は、レプリカ セットを使用して単一障害点を減らす必要があります。

于 2013-05-15T00:05:06.850 に答える