2017-04-04 3 views
0

MongoをプライマリDBとして使用している私のアプリケーションの1つがあり、うまく動作し、自分のデータに合っています。MongoDBコレクションをタスクキューとして信頼できますか?

これで、バックグラウンドでタスクを処理する別のプロセスをアプリケーションに追加する必要があります。

何も起こりません。は同じタスクで2回実行されます。
意味:タスクのためにデータベースを再度照会すると、(完了したとマークされた後でも(0.0001ミリ秒前にマークされていても)、ステータスが正しいことを確認します。

PostgreSQLまたはMySQLを使用するときはいつもうまく動作しましたが、実際に後で実行されるようにインサートをステージングするため、MongoDBは信頼できません。

私の場合は心配する必要がありますか?

答えて

0

db.collection.findAndModify()を使用すると、高いレベルのアトミック性が保証されます。以下のようなもの。これにより、すでに完了とマークされているドキュメントで作業していることを確認し、他のプロセスがそのドキュメントをフェッチできないようにします。

db.car.findAndModify({ 
    query: { task : 'new' }, 
    sort: { _id : 1 }, 
    update: { $set: { task: 'done'} } 
}); 

hereを参照してください。

+0

コレクションを処理するプロセスが1つしかないと仮定すると、 'findAndModify'を実行しなくてもそれを取り除くことはできますか?私のORMはそれをサポートしていません。 – user3134477

+0

あなたはどのORMを使用していますか? – titogeo

+0

私はpythonのmongoengineを使用しています... – user3134477

関連する問題