Подтвердить что ты не робот

Sharding GridFS на MongoDB

Я документирую GridFS и возможность очертить его между разными машинами.

Считывая документацию здесь, предлагаемый осколочный ключ - chunks.files_id. Этот ключ будет связан с _id коллекции файлов, таким образом, этот _id является инкрементным. Каждый новый файл, который я сохраняю в Grid, будет иметь новый инкрементный _id.

В книге O'Reilly "Scaling MongoDB" использование инкрементного ключа осколка не рекомендуется, чтобы избежать HotSpots (последний осколок получит все записи и чтение).

Каково ваше предложение по сборке коллекции GridFS?
Кто-нибудь испытал проблему с HotSpot?

спасибо.

4b9b3361

Ответ 1

Вы должны окопаться на files_id, чтобы объединить фрагменты файлов, но вы правы, что это создаст точку доступа. Если вы можете, используйте что-то другое, кроме ObjectId для _id в коллекции fs.files(вероятно, MD5 лучше, чем ObjectIds).

Мы добавим хеширование для sharding, которое решит это, но не до тех пор, пока не будет 2.0.

Ответ 2

Вы можете обрезать данные gridfs, потому что gridfs это всего два экземпляра: куски и файлы. И gridfs обманывают его очень полезное и замечательное. Что касается ключа gridfs shard, он всегда плохо выбирает случайный или инкрементный ключ осколка, потому что данные не равномерно распределяются по осколкам. В случае инкрементного ключа осколка все записи переходят к последнему осколку, и он растет, а раз разность между 10 или более кусками, балансировка перемещает данные в другие осколки. Перемещение данных на другой осколок всегда является трудной задачей, которую следует избегать, насколько это возможно.
Поэтому, когда вы выбираете ключ осколка, вы должны заботиться о равномерном распределении данных.
Также, если вам удастся создать mb-автора " Scaling MongoDB" kristina (отличный специалист по клавишам осколка), ответьте на ваш вопрос. < ш > В документации говорится, что в обычных случаях вы должны выбрать индекс по умолчанию fileId:1,n:1 как ключ осколка:

Существуют различные способы, с помощью которых GridFS могут быть отложены, в зависимости от необходимости. Один общий способ осколки, основанный на ранее существовавшие индексы:

"files" коллекция не опечатана. Все записи файлов будут жить в 1 осколке. Это настоятельно рекомендуется сделать это осколок очень упругий (не менее 3 nodeнабор реплик) коллекция "кусков" с использованием существующего индекса "files_id: 1, n: 1". Некоторые файлы на конец диапазонов может иметь свои куски разделить по осколкам, но большинство файлов будет полностью тот же осколок.

Ответ 3

В настоящее время MongoDB с версии 1.8.1 поддерживает только очертание в поле "file_id", из-за использования md5 для проверки загрузки, но это не пока работайте через осколки. Таким образом, вы не можете разделить один файл на осколки. Ответ на группу google 7