Сценарий MongoDB для 10 миллионов записей занимает 30 минут - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть проект, над которым я работаю, и мне нужно заполнить базу данных с 10 миллионами случайных строк, что я успешно сделал.Однако это займет около 30 минут, что ожидается, но я знаю, что это может быть быстрее.Я хотел бы заставить его работать еще быстрее и найти способ заставить его набирать 10 миллионов случайных записей менее чем за 10 минут, предпочтительно при использовании mongodb / mongoose.Это мой текущий начальный файл, какие-нибудь советы по его ускорению?Первый раз выкладываю сюда, просто к вашему сведению.спасибо!

Я использую 'node database / seed.js' для запуска этого файла в терминале.

const db = require("./index.js");
const mongoose = require("mongoose");
const faker = require("faker");

const productSchema = mongoose.Schema({
  product_name: String,
  image: String,
  price: String
});

let Product = mongoose.model("Product", productSchema);

async function seed() {
  for (let i = 0; i < 10000000; i++) {
    let name = faker.commerce.productName();
    let image = faker.image.imageUrl();
    let price = faker.commerce.price();

    let item = new Product({
      product_name: `${name}`,
      image: `${image}`,
      price: `$${price}`
    });

    await item
      .save()
      .then(success => {})
      .catch(err => {});
  }
}
seed();

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Использовать InsertMany

Вставка / обновление всегда занимает время во всех базах данных.попытайтесь уменьшить количество вставок.

Вставьте что-нибудь на каждую 1000 или зациклите один раз

Model.insertMany(arr, function(error, docs) {});
0 голосов
/ 28 февраля 2019

Вы можете создать пакет из 1 миллиона записей и использовать функцию insertMany для вставки большого количества данных в базу данных.

...