Быстро ли GRIDF и достаточно надежна для производства?
Вопрос
Я разработаю новый веб-сайт, и я хочу использовать GRIDFS в качестве хранения для всех загруженных пользователей, потому что он предлагает много преимуществ по сравнению с обычным хранением файловой системы.
Тесты с GRIDFS, обслуживаемые Nginx, указывают, что он не так быстро, как обычная файловая система, обслуживаемая Nginx.
Кто-нибудь там, кто использует GRIDFS уже в производственной среде, или будет использовать его для нового проекта?
Решение
Я использую GRIDFS на работе на одном из наших серверов, которые являются частью веб-сайта сравнения цен с почетной статистикой трафика (Gronound 25K посетителей в день). Сервер имеет не так много RAM, 2GIGS, и даже ЦП не очень быстро (Core 2 Duo 1,8 ГГц), но сервер имеет много места для хранения: 10TB (SATA) в конфигурации RAID 0. Работа, которую делает сервер, очень просто:
Каждый продукт на нашем цене-компакторе имеет изображение (есть около 10 миллионов продуктов в соответствии с нашим продуктом DB), а рабочие серверы состоит в том, чтобы загрузить изображение, разместить его, сохранить его на GRIDFS и доставьте его в браузер посетителей. .. Если он не присутствует в сетке ... или ... доставить его в браузер посетителей, если он уже хранится в сетке. Итак, это можно назвать как «традиционная схема CDN».
Мы сохранили и обработали 4 миллиона изображений на этом сервере, так как он работает и работает. Изменение размера и хранения веществ выполняется простым сценарием PHP ... Но наверняка, сценарий Python или что-то вроде Java может быть быстрее.
Текущий размер данных: 11,23 г
Текущий размер хранения: 12,5 г
Индексы: 5.
Размер индекса: 849,65 м
О надежности: это очень надежно. Сервер не загружается, размер индекса в порядке, запросы быстро
О скорости: Конечно, это не быстро, как локальное хранилище файлов, возможно, на 10% медленнее, но достаточно быстро, чтобы его использоваться в реальном времени, даже если изображение необходимо обрабатывать, который находится в нашем случае, очень зависимый от PHP. Техническое обслуживание и время разработки также были уменьшены: он стал таким простым удалением одного или нескольких изображений: просто запрашивайте DB с помощью простой команды удаления. Еще одна интересная вещь: когда мы перезагрузили наш старый сервер, с локальным хранилищем файлов (так миллионом файлов в тысячах папок), иногда висит на часы, потому что система выполняет проверку целостности файлов (это действительно заняло часы ...). У нас нет этой проблемы больше с GRIDFs, наши изображения теперь хранятся в больших кусках Mongodb (2 ГБ файлы)
Итак ... На мой взгляд ... Да, Gridfs быстро и надежно для производства.
Другие советы
Как уже упоминалось, это может быть не так быстро, как обычная файловая система, но тогда это дает вам преимущества человека Обычные файловые системы Что я думаю, стоит отказаться от немного скорости.
В конечном итоге, с капюшоном, вы можете достичь точки, однако, когда хранение GRIDF на самом деле становится более быстрой опцией, а не обычной файловой системой и одним узлом.
Модуль NGINX-GRIDFS MDIROLF является отличным и довольно легко получить настройку. Мы используем его в производстве в рисовать Подавать все картины, и там не было проблем.
Heads-up На ремонте для более крупных DBS - новая система, которую мы разрабатываем, Mongo не выходила, и ремонтируя Gridfs 7TB выглядит так, как будто она займет 130 часов.
Из-за этого я думаю, что я посмотрю на переход на переход на openStack Swift или Ceph. Тем не менее, до тех пор это было хорошо. И модуль NGINX-GRIDFS сладкий.
Я не рекомендую использовать GRIDF, если вы не знаете, что вы делаете. GRIDFS - это просто слой абстракции, который разбивает файлы для кусков и хранит файлы в двух коллекциях. Больше файлов - больше накладных расходов. Если вы ожидаете, что файлы будут довольно одинаковым размером, не более 32 м или около того - вы находитесь в правильном пути. Не пытайтесь хранить большие файлы на GRIDFS. Почему?
- Драйверы на разных языках могут прочитать весь файл. (Например, куски) при чтении небольшой части файла.
- Изменение файла может повлиять на все куски и увеличить нагрузку базы данных, если ваша файловая система растет, вам придется решить ощутить GRIDF. Будь осторожен! Консистенция не гарантируется, когда Sharding инициализируется!
Если вы думаете о нагруженном проекте по чтению - рассмотрите загрузку файлов в документы напрямую (если 16 м или меньше размера) или выберите другие кластеры и ссылку имени файла / inode к вашей логике.
Надеюсь это поможет.