Является ли осколок эффективным для небольших коллекций?

Похоже, что оштрафование базы данных отлично, если у меня есть огромные коллекции. Что делать, если у меня много коллекций довольно большого размера? Предположим, что для 1 сборника из 100 000 000 документов (не очень больших комментариев) эффект ошпаривания эффективен. Это также эффективно для 10 000 коллекций с 10 000 документов каждый?

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

11 голосов | спросил João Pinto Jerónimo 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 05 Sep 2011 00:52:20 +0400 2011, 00:52:20

2 ответа


5
  

Это также эффективно для 10 000 коллекций с 10 000 документов каждый?

У большинства людей есть проблема с «большой большой коллекцией», и поэтому осколки явно полезны для уменьшения головных болей при балансировании этих данных.

Однако, когда у вас есть 10 000 небольших коллекций, ваша головная боль, вероятно, не «балансирует данные». С этим множеством небольших коллекций ваша проблема, вероятно, связана с отслеживанием этих коллекций. В зависимости от размера вашего документа вы даже не можете сломать нижний предел для осколков, чтобы на самом деле произойти.

Для действительно небольших коллекций вы можете использовать малоизвестную команду movePrimary для управления местоположением ваших данных.

Конечно, другой способ взглянуть на это: почему у вас есть коллекции 10k? Коллекция не нуждается в однородных объектах и ​​с коллекциями 10k, которые должны быть сгенерированы. Вполне возможно хранить различные «типы» данных в одной коллекции, уменьшать количество коллекций и затем включать тип как часть ключа осколка.

ответил Gates VP 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 06 Sep 2011 12:47:19 +0400 2011, 12:47:19
4

MongoDB sharding работает, разбивая коллекцию на более мелкие «куски» и распределяя их равномерно по нескольким машинам. Размер блока по умолчанию, который, как правило, наиболее эффективен, составляет 200 МБ. Таким образом, если коллекция не будет намного больше, чем 200 МБ, она не будет разбита на куски и, следовательно, не будет иметь права на осколки, поэтому никаких преимуществ не будет.

В общем случае, осколки данных по нескольким машинам - очень эффективный способ масштабирования чтения, записи и запросов. Вы получаете преимущества нескольких процессоров, жестких дисков и памяти, работающих параллельно с чтением, записью и обработкой данных. Масштабирование памяти особенно важно для MongoDB, где высокая производительность очень чувствительна к привязке данных в памяти.

ответил Chris Fulstow 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 05 Sep 2011 03:51:19 +0400 2011, 03:51:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132