MongoDB gridFS - длина файла, индексирование, производительность - PullRequest
2 голосов
/ 24 января 2012

Я изучаю gridFS и у меня есть несколько вопросов.

1) gridFS автоматически индексирует файлы по сгенерированному _id. Но большую часть времени я получаю файлы по имени файла, так что мне самому создавать индекс для «имени файла»?

2) gridFS не имеет папок, только имена файлов, но я могу имитировать папки, используя имена файлов с косой чертой '/images/avatars/35.jpg', верно?

3) Если я индексирую по «имени файла» - лучше ли с точки зрения производительности использовать короткие имена файлов? Я имею в виду - если я использую _id пользователя длиной 24 символа + суффиксы, например "/images/avatar_4f1d36b58e42ba3836ed178e_t.jpg", не замедлится ли индексация в таком длинном поле моей системы? Было бы лучше (быстрее) использовать короткий логин пользователя вместо _id?

Ответы [ 3 ]

2 голосов
/ 24 января 2012

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

2) Да.

3) Индексы b-дерева в mongodb не используют хэши. Большая строка будет занимать больше места в индексе, таким образом, занимая больше оперативной памяти, но я не думаю, что на производительность это сильно повлияет (если только вы не рассчитываете использовать больше оперативной памяти как снижение производительности). Хорошее практическое правило для mongodb заключается в том, что ваши индексы (и ваш «рабочий набор») должны помещаться в ОЗУ. Если вы можете переработать приложение, чтобы запросить _id вместо имени файла, вам не придется беспокоиться о месте для этого индекса.

2 голосов
/ 24 января 2012

1) Я бы очень удивился, если бы имя файла не было проиндексировано. Он используется в API, и я предполагаю, что он проиндексирован.

2) Да, вы можете, но в действительности не подразумевается под ними никаких каталогов. Список файлов / каталогов немного сложнее. Другими словами, это просто ярлык.

3) В индексах используются хэши или строки фиксированной длины, поэтому индексировать длинный ключ так же легко, как и длинный.

0 голосов
/ 23 февраля 2013

GridFS имеет индекс по умолчанию на _id (очевидно) и составной индекс на filename и uploadDate.

...