Size: a a a

2020 December 12

ДТ

Дмитрий Тремасов... in Laravel Pro
хотя мог перепутать и я
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
и реально предлагаю сделать nested set но назвали nested tree
источник

🎃

🎃 Даниил ◠‿◠✿... in Laravel Pro
Дмитрий Тремасов
и реально предлагаю сделать nested set но назвали nested tree
в гугле это одно и то же понятие
источник

M

Maxx in Laravel Pro
zVlad Nesquik
Привет!
Хочу сделать файлы пользователя.
Т.е. пользователи загружают файлы в свои папки и управляют ими.  По спец. ссылке файл доступен и другим пользователям.
Так как огранизовать по папкам это все?
В публичной папке или в приватной?
Поделитесь своим мнением или если кто делал такое, то опишите в двух словах.
файлы только приватные. в БД хранишь пути к ним, и раздаёшь доступ юзерам.
по запросу, если у юзера есть права, просто делаешь Storage::download()
если будешь класть файлы через Storage::put(), они все будут лежать в одной папке, когда кол-во достигнет десятков тысяч, будет трудно в поддержке.
поэтому лучше каждому файлу назначить уникальный ИД, и строить папку вида AA/BB/CCDDDEE...
желательно хранить в базе также sha1_file() хэш каждого файла. если кто-то загружает файл, который уже есть, можно просто сделать ссылку, не создавая копии.
источник

zN

zVlad Nesquik in Laravel Pro
🎃 Даниил ◠‿◠✿
Сделать в базе nested tree для папок, и крепить к каждой папке файл, например через spatie/laravel-medialibrary
Спасибо, но от этого Спати не хочу ничего ставить))) У него все закручено очень. Хотя можно это и самому сделать за такое время, которое потратится на подключение его модулей.
Но, спасибо, гляну его наработки.
источник

M

Maxx in Laravel Pro
если БД — постгрес, сделай поле UUID, оно хранится в виде двух 64-битных чисел, и быстро обрабатывается в кач-ве PK.
источник

🎃

🎃 Даниил ◠‿◠✿... in Laravel Pro
Maxx
если БД — постгрес, сделай поле UUID, оно хранится в виде двух 64-битных чисел, и быстро обрабатывается в кач-ве PK.
в mysql же тоже можно, через binary
источник

M

Maxx in Laravel Pro
тот же UUID, кстати, по размеру точно равен md5-хэшу, т.е. в нём можно хэши хранить тоже
источник

zN

zVlad Nesquik in Laravel Pro
Maxx
файлы только приватные. в БД хранишь пути к ним, и раздаёшь доступ юзерам.
по запросу, если у юзера есть права, просто делаешь Storage::download()
если будешь класть файлы через Storage::put(), они все будут лежать в одной папке, когда кол-во достигнет десятков тысяч, будет трудно в поддержке.
поэтому лучше каждому файлу назначить уникальный ИД, и строить папку вида AA/BB/CCDDDEE...
желательно хранить в базе также sha1_file() хэш каждого файла. если кто-то загружает файл, который уже есть, можно просто сделать ссылку, не создавая копии.
За хеш спасибо!!!
А так "тысячи файлов" не будет. Т.к. у кажого пользователя своя папка и обьем файлов.
источник

M

Maxx in Laravel Pro
zVlad Nesquik
За хеш спасибо!!!
А так "тысячи файлов" не будет. Т.к. у кажого пользователя своя папка и обьем файлов.
хаха, все говорят "тысяч файлов не будет"... а потом со временем оно так засрётся, что взвоешь =)
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Maxx
если БД — постгрес, сделай поле UUID, оно хранится в виде двух 64-битных чисел, и быстро обрабатывается в кач-ве PK.
а int медленно?
источник

zN

zVlad Nesquik in Laravel Pro
Maxx
хаха, все говорят "тысяч файлов не будет"... а потом со временем оно так засрётся, что взвоешь =)
Не нее)) Каждому пользователю можно до 30мб загружать. И у каждого пользователя своя папка.
Вот и не будет тысячи файлов в одной папке :)
источник

zN

zVlad Nesquik in Laravel Pro
Maxx
если БД — постгрес, сделай поле UUID, оно хранится в виде двух 64-битных чисел, и быстро обрабатывается в кач-ве PK.
Спасибо, учту!
источник

ЕК

Евгений Кырмызы... in Laravel Pro
/stat@combot
источник

C

Combot in Laravel Pro
Total messages: 447673
источник

🎃

🎃 Даниил ◠‿◠✿... in Laravel Pro
zVlad Nesquik
Не нее)) Каждому пользователю можно до 30мб загружать. И у каждого пользователя своя папка.
Вот и не будет тысячи файлов в одной папке :)
тысячи файлов по килобайту
источник

M

Maxx in Laravel Pro
Дмитрий Тремасов
а int медленно?
наоборот, очень быстро, но int — это скорее serial, т.е. ИД у каждого файла будут идти по-порядку, что не есть айс: юзер будет у УРЛе подменять ИДшки, чтоб посмотреть, есть ли там чо
источник

ЕК

Евгений Кырмызы... in Laravel Pro
/link@yetanotherstatsbot
источник

M

Maxx in Laravel Pro
UUID для того и рекомендуется, чтоб ИД были непоследовательны.
причём, никто не мешает держать PK в SERIAL/BIGSERIAL, а рядом другое поле UUID, которое в ларке пропишешь как slug для модели
источник

M

Maxx in Laravel Pro
я у себя, кстати, предпочитаю именно этот вариант с двумя полями
источник