Вставка оперативных данных в MongoDB с использованием ASP.Net Core 2.0 C # - PullRequest
0 голосов
/ 09 июня 2018

Я новичок в MongoDB и пытаюсь вставить оперативные данные, которые я получаю от большого количества датчиков в MongoDB.Поскольку я имею дело с большим объемом данных, я попробовал 2 разных подхода для вставки данных в базу данных.Сначала я делал это один за другим, когда получил данные и вставил их в базу данных.Второй подход - я собираю данные и использую таймер для вставки многих данных каждую 1 секунду.Первый подход был слишком медленным, но второй был лучше и быстрее с меньшим количеством подключений к БД.Это часть кода, который я разработал:

_timer.Stop();
            System.Threading.Monitor.Enter(_lockObject);
            try
            {
                Task t1 = Task.FromResult(0);
                Task t2 = Task.FromResult(0);
                Task t3 = Task.FromResult(0);

                if (Data1.Count > 0)
                {
                    t1 = Collection1.InsertManyAsync(Data1);
                }
                if (Data2.Count > 0)
                {
                    t2 = Collection2.InsertManyAsync(Data2);
                }
                if (Data3.Count > 0)
                {
                    t3 = Collection3.InsertManyAsync(Data3);
                }               

                Task.WhenAll(t1, t2, t3);

            }
            catch (Exception)
            {
            }
            finally
            {
                Data1.Clear();
                Data2.Clear();
                Data3.Clear();
                System.Threading.Monitor.Exit(_lockObject);
                _timer.Start();
            }

Мой вопрос: если я хочу собрать запрос и вставить его в виде списка из 1000 элементов, как я могу это сделать, не потеряв оперативные данные.Я знаю, что мне нужно заблокировать мой список при вставке в базу данных, но в это время я потеряю живые данные, потому что мой список заблокирован?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...