JSON バッチ処理
バッチ処理 とは、各 JSON ドキュメントを個別に送信する代わりに、複数の JSON ドキュメントを累積し、それらをまとめて JSON ストアに送信することです。 JSON API は、バッチ処理を実行するプログラマチックな方法を提供します。 バッチ処理の主な利点は、パフォーマンスの向上です。
以下のタイプのバッチ処理がサポートされています。
- 同種バッチ処理
- バッチに含まれる JSON ドキュメントが同じコレクションに属し、すべてのドキュメントに同じ操作が適用される場合に行われます。
- 異種バッチ処理
- バッチに含まれる JSON ドキュメントが異なるコレクションに属する、またはドキュメントに異なる操作が適用される場合に行われます。
バッチの開始点にマークを付けるには、startBatch() メソッドを使用します。 ドキュメントに対する挿入、更新、削除、または保存操作をトリガーするには、endBatch() メソッドを使用します。 バッチ内の 1 つの操作が失敗した場合、そのバッチ内の次の操作で処理が続行されます。
- 例 1:
- 以下の例では、同種バッチ処理を使用して、1 つのコレクションに 3 つのドキュメントを挿入します。
DBCollection batch = db.getCollection("batch"); BasicDBObject dbObj1 = new BasicDBObject("name", "Joe1"); dbObj1.put("_id", 1); BasicDBObject dbObj2 = new BasicDBObject("name", "Joe2"); dbObj2.put("_id", 2); BasicDBObject dbObj3 = new BasicDBObject("name", "Joe3"); dbObj3.put("_id", 3); db.startBatch(); batch.insert(dbObj1); batch.insert(dbObj2); batch.insert(dbObj3); db.endBatch(); - 例 2:
- 以下の例では、異種バッチ処理を使用して、コレクション batch1 に 3 つのドキュメントを、コレクション batch2 に 2 つのドキュメントを挿入します。
// Get collection batch1 DBCollection batch1 = db.getCollection("batch1"); // Create three documents to insert in collection batch1 BasicDBObject dbObj1 = new BasicDBObject("name", "Joe1"); dbObj1.put("_id", 1); BasicDBObject dbObj2 = new BasicDBObject("name", "Joe2"); dbObj2.put("_id", 2); BasicDBObject dbObj3 = new BasicDBObject("name", "Joe3"); dbObj3.put("_id", 3); // Get collection batch2 DBCollection batch2 = _db.getCollection("batch2"); // Create two documents to insert in collection batch2 BasicDBObject dbObj4 = new BasicDBObject("name", "Joe4"); dbObj4.put("_id", 4); BasicDBObject dbObj5 = new BasicDBObject("name", "Joe5"); dbObj5.put("_id", 5); db.startBatch(); // Insert three documents into collection batch1 batch1.insert(dbObj1); batch1.insert(dbObj2); batch1.insert(dbObj3); // Insert two documents into collection batch2 batch2.insert(dbObj4); batch2.insert(dbObj5); db.endBatch();