2013-08-18 4 views
0

В моем приложении я собираюсь сохранить некоторые файлы в БД. Я видел дискуссию о том, сохранять ли в файловой системе \ db и сохранять файлы в базе данных.mongoDB делает огромную коллекцию влияет на подготовку других коллекций?

моя база данных для проекта - mongoDB.

Я хотел бы знать, могу ли я сказать 20 коллекций в моем mongoDB, и точно один из них чрезвычайно велик. Я увижу влияние производительности, когда я работаю над другими (менее крупными) коллекциями?

Если я должен отделить эту коллекцию от других коллекций? (создать еще одну БД для этой огромной коллекции)?

Имеет ли мой-sql тот же эффект?

спасибо.

+0

это будет зависеть от доступности аппаратного обеспечения, оценки чтения/записи в базу данных, пропускной способности ввода-вывода, размера файлов и т. Д. Лучший ответ на ваш вопрос - путем бенчмаркинга ... – kmfk

ответ

0

Есть два основных соображения здесь:

  1. Убедитесь, что working set помещается в памяти. Это будет означать, что ваша доступная память должна превышать, по крайней мере, общий размер индексов, используемых для чтения.
  2. MongoDB имеет database level write lock после версии 2.2. Это означает, что во время любой операции записи вся база данных блокируется для чтения. Таким образом, для больших объемных вставок в одну коллекцию, которая может занять некоторое время, все остальные коллекции блокируются на время объемной вставки. Поэтому, если вы отделите свою большую коллекцию в отдельную базу данных, ваше ключевое преимущество будет заключаться в том, что вставки в эту коллекцию не будут блокировать чтение в коллекциях в других базах данных.

Я бы предложил сначала убедиться, что у вас достаточно памяти для вашего рабочего набора, а во-вторых, я бы выделил большую коллекцию в отдельную БД, если вы намереваетесь написать ей много.