Я пытаюсь создать сайт для загрузки файлов как побочный проект, и я никогда не создавал ничего такого, что могло бы обрабатывать большое количество таких файлов.Насколько я могу судить, существует три основных варианта хранения и извлечения файлов (обратите внимание, что на загрузку может быть несколько файлов, например, website.com/a23Fc может позволить вам загрузить один или несколько файлов, в зависимости отна сколько пользователь изначально загрузил - похоже на imgur.com):
- Поместите все файлы в один огромный каталог файлов и используйте (реляционную) БД, чтобы выяснить, какие файлы принадлежат каким URL, а затем вернуть список имен файлов в зависимости от этого.Пример: пользователь загружает website.com/abcde, поэтому он запрашивает в БД все файлы, относящиеся к загрузке в abcde, возвращает их имена файлов, и сайт выводит их.
- Используйте CouchDB, поскольку он позволяет фактически прикреплять файлык отдельным записям в БД, поэтому каждый URL / загрузка может быть записью БД с прикрепленными к ней файлами.Например, пользователь загружает website.com/abcde, CouchDB захватывает документ с идентификатором abcde, захватывает файлы, прикрепленные к этому документу, и передает их пользователю.
- Полностью откажитесь от использования БД идля каждой загрузки создайте новый каталог и вставьте в него файлы.Пример: пользователь загружает website.com/abcde, сайт ищет каталог / files / abcde /, извлекает все файлы оттуда и передает их пользователю, поэтому база данных вообще не задействуется.
Что из этого кажется наиболее масштабируемым?Как я уже сказал, у меня очень мало опыта в этой области, поэтому, если я полностью отключен или есть очевидный 4-й вариант, я более чем открыт для этого.Наличие тысяч или миллионов файлов в одном каталоге (т. Е. Вариант 1) не кажется очень разумным, но наличие тысяч или миллионов каталогов в каталоге (т. Е. Вариант 3) не выглядит намного лучше.