FitTech
@FitTech

Большой массив для записи в MongoDB?

Здравствуйте! Подскажите, пожалуйста, как правильно сделать, у меня есть большой файл(допустим на 15 гб), этот файл обрабатывается и данные пишутся в массив, а после BatchInsert зписи в Mongo(в одну коллекцию).

Например, в массиве соберется 200 тысяч записей и это нужно записать в mongo. Как правильно сделать, не создавать огромный массив, а лучше сразу, строчка из файла обработалась и записать в монго и тд или же лучше собрать огромный массив и сделать batchInsert?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
@Giperoglif
если оперативная память позволяет - делайте по максимуму, хоть все.
у меня есть в одном проекте похожая задача, делаю batchInsert по 1000 объектов, чтобы не слишком загружать оперативку сервера.

гружу из большого обменно файла, как-то так:
while (($line = fgets($handle)) !== false) {
				$objects[] = json_decode($line);
				//Для ускорения грузим пачками, по сколько влезает в оперативку(кол-во объектов настраивается в конфиге)
				if ($count === Yii::$app->objects->insertBatchCount) {
					Yii::$app->mongodb->createCommand()->batchInsert('objects', $objects);
					$count = 0;
					$objects = [];
				}
				$count++;
			}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы