LINUX.ORG.RU

Нужны мысли по организации хранения файлов.

 , , , ,


3

4

Задача — утягивать файлы по url (видео, картинки) и складировать в хранилище. Так, чтобы впоследствии по url можно бы было получить сразу локальный файл. Без БД.

Файлов много, десятки, сотни тысяч. Количество год от года растёт.

Первый, много лет назад вариант был тупым — берём md5(url), разбиваем на две вложенности по два символа и сохраняем файл — storage/dd/75/dd753e96f09cf8afedc9882da55977a2.jpg

Попутно можно там же положить одноимённый .txt со ссылкой на исходный файл для обратного поиска.

Вариант всем хорош для небольших объёмов. На больших, да ещё под ext4, которая по мере старения на таких структурах начинает чудовищно тормозить, получился ад при любых работах по бэкапу/настройкам. rsync, занимающий десятки минут — это жесть. Если для аналогичного подхода с аттачами, имеющими дату вопрос решается просто — Мысли вслух. Предостережение от наступления на грабли. , то для произвольных ссылок так уже не поступить.

Кроме того, в таком виде крайне неудобно работать, если требуется ручная разборка архива. Посмотреть, с каких сайтов чаще грузятся данные и т.п.

Вторая версия была устроена чуть иначе. Файлы кладутся в каталоги, напоминающие исходные домены и пути. Например, storage/ru/li/linux.org.ru/tango/img/opensource-logo.png

Как ни странно, такая структура даже чуть легче при копировании, гораздо удобнее при анализе. Но всё равно очень избыточна и тяжела. Кроме того, возникают проблемы с URL, содержащими сложные для имён файлов символы — get-запросы и т.п.

Сейчас стоит задача сделать что-то подобное с нуля и можно подумать над более оптимальным решением. В голову всё равно ничего более толкового не приходит. Тем более, что вопрос «человекочитаемости» хранящихся данных в новой задаче становится даже более высоким, чем ранее.

Есть мысли, куда копать?

Update из темы:

— Задача: «архивирование Интернета». Через 5..10..15 лет остаётся очень мало доступных картинок, видео, аудио, на которые ссылаются на форумах. Хочется это дело эффективно кешировать, да ещё и раздавать потом через btsync желающим, тем более, что форумы планируется переводить на распределённый формат — Распределёные форумы/блоги. Продолжаем разговор. Нужен совет.

— Подразумевается использование в рамках p2p-системы на базе btsync или будущих аналогов. Т.е. никаких файлоспецифичных вещей, метаданных, спецсимволов и т.п. Должно работать хоть на vfat.

— Желательно, чтобы система могла уметь дробиться на отдельные архивы/репозитории.

— Вопрос индексирования мало актуален, т.к. данная система подразумевается бэкендом. Перед фронтедом может стоять кеширующая полноценная БД.

— Желателен человекочитаемый формат, чтобы можно было разгребать систему вручную.

— Участники обмена должны иметь возможность передавать данные в т.ч. из-за «серых NAT», потому и ориентируюсь на btsync и аналоги.

Так как-то.

★★★★★

Последнее исправление: KRoN73 (всего исправлений: 2)
Ответ на: комментарий от anonymous

а как-же остальные известные сервисы умудряются?

Х.з. Но у них нет тех задач, что я сейчас ставлю :) Если бы тупо всё только под себя рассчитывать, то проблем бы не было. БД с репликацией, rsync/lsyncd и/или gluster — и голова бы не болела.

Но нужна система, которая позволит обеспечить доступ к данным хоть из под домашней винды юзера средней квалификации. И которую можно дробить на компоненты, чтобы заинтересованному только в части данных не тянуть сотни гигабайт мусора.

...

В какой-то степени это можно считать одним из механизмов «нового ФИДО» :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

представь что находишься в роли гугла, флицкера, инстаграммы, на фазе роста...

Если бы у меня была деловая хватка Брина или Цукерберга, то история Интернета развивалась бы немного иначе :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

В какой-то степени это можно считать одним из механизмов «нового ФИДО» :)

ещё глянь IPFS.io и Iris (их papers про устройство)

поверх этого элементано пишется такая простая вещь, как ii — «тоже фидо».

а там и до нормального, векторного и гипертекстового недалеко :-)))

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.