Задать вопрос

Файловая система для авaтарок?

Стоит задача хранения, сотен тысяч мелких изображений, в базе не хочу хранить. В ext3 тоже не хочу. Что посоветуете? Может есть какой демон или файлоая система которая это предназначена для этого?
  • Вопрос задан
  • 2841 просмотр
Подписаться 7 Оценить Комментировать
Решения вопроса 1
@vgrayster Автор вопроса
Гугл ничего не выдает, наверное готового нету. Пока на коленке родилось следующее решение.

1) В основной базе (mysql) храним всю мета информацию + ключ для картинки. Ключом является (имя файла sqlite + id)

2) Есть куча небольших (100-200мб) файлов sqlite в которых в блобах хранятся изображения.

Так как запись идет append only и предыдущие не будет меняться — то в ежедневный бекап будет попадать только последний sqlite файл.

Что скажите? бред?
Ответ написан
Пригласить эксперта
Ответы на вопрос 10
kashey
@kashey
Программирую большую половину жизни
А бы я честно посоветовал бы базу, недавно копировал свои эти самые «маленькие изображения» — 600к их там — заняло день. А дел то было — толи на два, толи на три гига
Еще отчень хорошо отрабатывала tarfs — но она совсем реадонли
Ответ написан
@great_boba
давным давно ответом на этот вопрос мог быть reiserfs
Ответ написан
Комментировать
@fallen
Btrfs + хранение нескольких картинок в одном файле и указанием позиции в урл или еще где. Почитайте про архитектуру facebook и контакта, там много полезной информации.
Ответ написан
@Demetros
Задумайтесь о том, что аватарки — это скорее всего много запросов на чтение.
При отдаче их из базы вы будете насиловать дисковую подсистему, в то время как при отдаче с диска _все_ аватарки (в зависимости от объема памяти сервера) могут быть закешированы системой в памяти и их отдача будет турбореактивной.
Ответ написан
liaren
@liaren
Фрилансер, опенсорсер, тех лид
Картинки нужно хранить на жёстком диске и никакая база данных тут не подойдёт т.к. создаётся неоправданная нагрузка на сервер. А вот насчёт как именно хранить, я бы рекомендовал разбивать на подпапки по id-фото таким образом: если фоток < 100k, то достаточно /ff/32123e21.jpg. Если > 100k && < 2m, то /ff/ff/321312312.jpg, ну и c /ff/ff/ff/321312312.jpg можно сразу в космос…
Ответ написан
asm0dey
@asm0dey
А еще, в зависимости от потребностей можно использовать базу данных типа Derby — она сама по себе всегда состоит из десятков файлов, независимо от количества таблиц в ней
Ответ написан
Комментировать
@lalibu
предположительно эта задача для couchDB
Ответ написан
@sevmax
Посмотрите в сторону S3+CloudFront. И вам не надо будет заморачиваться с локальным хранением.
Ответ написан
Комментировать
pentarh
@pentarh
MogileFS ливжурналом была изначально создана для этой цели.
Ответ написан
Комментировать
Shtirlits
@Shtirlits
Может не совсем в тему, но вот тут sasgis.ru/forum/viewtopic.php?f=2&t=540 обсуждается схожая проблема, суть перенос сотен тысяч — миллионов тайлов от карт гугла и тп в программе сасгис, если кратко, то по крайней мере для переноса на флэш, пока 2 решения на уровне ФС, трукрипт с минимальным размером блока в контейнере(трукрипт по дефолту шифрует,… собака) и архивация tar\gzip, (который не запрашивает список файлов перед операцией архивирования, а сразу начинает архивировать т.е. скорость архивирования ~= скорости копирования).
может поможет

ээээх еслиб в винде можно было подключить таровсий архив как truecrypt или хотябы как iso…, потом одним архивом кидай куда хочешь…
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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