[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Организация файлового хранилища
eurobax
Нужно организовать на сайте файловое хранилище. Вопрос в том, как это сделать грамотно, безопасно и удовлетворить еще следующие условия:
- у каждого юзера будет своя папка для хранения файлов
- каждый юзер может создавать внутри произвольную структуру папок и файлов
- юзер может поделиться любым файлом, указав ссылку на него

Если решать задачу очень узко и влоб, то самый простой пример, это организовать так:
1. Есть системная папка users/
2. Для каждого юзера создается папка с его guid, например users/83u239j8wqjf8wkd03234/
3. Внутри - все как в обычной файловой системе - нешифрованные названия подпапок и файлов.
Пример файла будет users/83u239j8wqjf8wkd03234/Отчеты/Оборотка за 21.02.2012.xls
Внутри организации это еще сойдет, но для облака, примитивно.
Какие есть идеи?




Спустя 1 час, 7 минут, 34 секунды (27.03.2012 - 09:14) TMake написал(а):
Создаешь одну папку /files в которой будут храниться все фалы пользователей, а в бд создаешь таблицу в которой будут указаны ссылки к файлам и уровни доступа.

Спустя 38 минут, 12 секунд (27.03.2012 - 09:53) eurobax написал(а):
Как это учтет дерево папок? Структура папок для юзера должна быть прозрачна. А для экспорта - не прозрачна.

Кстати, папки юзер может переименовывать.
Например есть папка и в ней файлы,
Отчеты/
Оборотка за 21.02.2012.xls
Счет-фактура 25.02.2012.xls

Допустим, юзер переименует папку в /Отчеты старые/
Что произойдет с файлами, если их url уже расшарены?
В моем случае (пример в первом сообщении), url станет invalid. Что тоже не в пользу такого подхода.

Во всяком случае, требования к url файла такие - чтобы он отдавался в виде <имя сайта>/guid/имя_файла, пример:
mysite.ru/f494ukd89y3dr34u8r903ckf/Оборотка за 21.02.2012.xls

Спустя 1 день, 8 часов, 43 минуты, 17 секунд (28.03.2012 - 18:36) eurobax написал(а):
Никто больше ничего не подскажет?
Сторонние сервисы, также и готовые разработки просьба не предлагать, система банковская, все организуется с нуля.

Спустя 3 часа, 29 минут, 41 секунда (28.03.2012 - 22:05) caballero написал(а):
лично я хранил бы все в БД. и транзакции можно задействовать и с разделением домступа не проблемма

Спустя 5 часов, 24 минуты, 7 секунд (29.03.2012 - 03:30) Guest написал(а):
Если хранить информацию о папках и файлах в базе, то при переименовании папки автоматически поменяется и URL, а значит ссылки сразу изменятся и будут работать как ни в чем не бывало.

Спустя 20 часов, 57 минут, 24 секунды (30.03.2012 - 00:27) I++ написал(а):
Сколько пользователей?

Если больще 1к, то думаю XFS B-tree и вместо "названия" для файличков, пользоваться инодами, так же отдельный сервер баз данных, с большим объемом ОЗУ + SSD

Файлики хешировать, остальное B-Tree сделает. Атрибуты файлов и виртуальные каталоги хранить в БД.

Любой нормальный бородатый юниксоид запилит.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.