Я тестирую атлас MongoDB и по сравнению с тем, как мой код работает в Docker в локальной сети, что-то не так.
Вот журнал моего времени вставки докера;
Called Add for INInvoiceData
Adding 511 for INInvoiceData
Added
Time elapsed: 00:00:02
Finished add/update for INInvoiceData
Called Add for OEOrderData
Adding 427 for OEOrderData
Added
Time elapsed: 00:00:01
Finished add/update for OEOrderData
Total Time elapsed: 00:01:12
Здесь используется платный кластер 2 ГБ
Logged in
Called Add for INInvoiceData
Adding 511 for INInvoiceData
Added
Time elapsed: 00:00:59
Finished add/update for INInvoiceData
Called Add for OEOrderData
Adding 427 for OEOrderData
Added
Time elapsed: 00:00:48
Finished add/update for OEOrderData
Time elapsed: 00:03:00
Я в Новой Зеландии, а база данных находится в Орегоне (AWS) в США. Я использую InsertMany (), чтобы добавить около 500 документов.
Документы в среднем составляют около 11 КБ каждый, и как только коллекции сделаны, это только 5,9 МБ! У меня есть 500 МБ загрузки на соединение, в котором я сейчас нахожусь.
Вот пример кода
static void AddMongo(IMongoDatabase MongoDB, List<DocumentUpdate> documents, string objectName)
{
Console.WriteLine($"Called Add for {objectName}");
var collection = MongoDB.GetCollection<BsonDocument>(objectName);
// initialise write model to hold list of our upsert tasks
List<BsonDocument> bsonList = new List<BsonDocument>();
Console.WriteLine($"Adding {documents.Count} for {objectName}");
// Create new stopwatch.
Stopwatch stopwatch = new Stopwatch();
// Begin timing.
stopwatch.Start();
// Loop docs and add our PK
for (var i = 0; i < documents.Count; i++)
{
var bsonDoc = BsonDocument.Parse(documents[i].json);
bsonDoc["_id"] = documents[i].keyValue;
bsonList.Add(bsonDoc);
};
collection.InsertMany(bsonList);
Console.WriteLine("Added");
// Stop.
stopwatch.Stop();
// Write hours, minutes and seconds.
Console.WriteLine("Time elapsed: {0:hh\\:mm\\:ss}", stopwatch.Elapsed);
}
Есть идеи?
EDIT:
После некоторой настройки я могу записать это, вставив один в цикл. Однако это не идеально.
static void AddMongo(IMongoDatabase MongoDB, List<DocumentUpdate> documents, string objectName)
{
Console.WriteLine($"Called Add for {objectName}");
var collection = MongoDB.GetCollection<BsonDocument>(objectName);
// initialise write model to hold list of our upsert tasks
List<BsonDocument> bsonList = new List<BsonDocument>();
Console.WriteLine($"Adding {documents.Count} for {objectName}");
// Create new stopwatch.
Stopwatch stopwatch = new Stopwatch();
// Begin timing.
stopwatch.Start();
// Loop docs and add our PK
for (var i = 0; i < documents.Count; i++)
{
var bsonDoc = BsonDocument.Parse(documents[i].json);
bsonDoc["_id"] = documents[i].keyValue;
collection.InsertOneAsync(bsonDoc);
//bsonList.Add(bsonDoc);
};
//collection.InsertMany(bsonList);
Console.WriteLine("Added");
// Stop.
stopwatch.Stop();
// Write hours, minutes and seconds.
Console.WriteLine("Time elapsed: {0:hh\\:mm\\:ss}", stopwatch.Elapsed);
}