Size: a a a

2020 January 04

SK

Suren Kirakosyan in pro.elixir
Denis Kharchuk
С changeset уже не сработает, сначала нужно делать insert который возвращает {:ok, new_data}. И тепер в new_data есть нужный тебе ид. И тепер делаеш update поля name
А это не замедлит работу сервера, то ли базы данных?
источник

DK

Denis Kharchuk in pro.elixir
Suren Kirakosyan
А это не замедлит работу сервера, то ли базы данных?
Нет, я делал такие манипуляции не раз и упада в скорости не заметил
источник

АН

Алексей Новоселов in pro.elixir
Suren Kirakosyan
Всё это делается для создания версий загруженных файлов, сейчас я это отслеживаю с помощью  path + id + name.
1) отключи автогенерацию ид и создавай руками
2) используй ид string и клади туда path
3) обновляй запись в бд после записи и генерации ид (лишний запрос и лишниие тормоза при нагрузке)
источник

DK

Denis Kharchuk in pro.elixir
Алексей Новоселов
1) отключи автогенерацию ид и создавай руками
2) используй ид string и клади туда path
3) обновляй запись в бд после записи и генерации ид (лишний запрос и лишниие тормоза при нагрузке)
Если отключить автогенерацию ид, всеравно нужно делать запрос чтобы узнать последнюю ид
источник

АН

Алексей Новоселов in pro.elixir
Denis Kharchuk
Если отключить автогенерацию ид, всеравно нужно делать запрос чтобы узнать последнюю ид
ты можешь его хранить в генсервере/етс и не дергать бд
источник

P

Pavel in pro.elixir
Сделай поле uuid генерируй его сам, запихивай в name то, что нагенерировал с путём, id не трогай. Апдейт после инсерта может упасть будет много обработок этого кейса
источник

P

Pavel in pro.elixir
Хранение и само-инкремент ид - плохая идея, как-только будет несколько нод. Для этого есть uuid который гарантирует уникальность с достаточно большим процентом
источник

DK

Denis Kharchuk in pro.elixir
Я был на лекции одного из кор разработчиков elixir, и все говорили что генсервер в этом случаи не надежен
источник

P

Pavel in pro.elixir
Не надо делать работу БД. А генерировать ссылки с айпишниками в пути не безопасно, ибо простой перебор даёт тебе раскрытие путей
источник

P

Pavel in pro.elixir
Потому uuid неплохо, хочешь избавиться от дубликатов файлов - получи sha/md5 хеш файла и его используй
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Denis Kharchuk
Я был на лекции одного из кор разработчиков elixir, и все говорили что генсервер в этом случаи не надежен
Один раз пишем в базу и один раз копируем файл в транзакции БД. Это максимально сейфово
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Все промежуточные данные можно хранить где угодно - нам насрать что они потеряются
источник

ŹR

Źmićer Rubinštejn in pro.elixir
stale данные все равно нужно чистить отдельными процедурами
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Поэтому нам на полную консистентность тоже насрать
источник

ŹR

Źmićer Rubinštejn in pro.elixir
единственное что важно - чтобы по path в бд был файл
источник

ŹR

Źmićer Rubinštejn in pro.elixir
К примеру, на то чтобы у каждого файла была запись в бд - нам насрать
источник

SK

Suren Kirakosyan in pro.elixir
Я, если не ошибаюсь, git работает следующим образом - создаёт хеш файла и хранит эти хеши, в роли версии. Может мне лучше сделать следущее: при загрузки файла через Plug.Upload получить имя файла, создать папку с таким именем и хранить в нём не имена файлов, а имена хешов этих файлов, а для базы данных просто сохранять хеши файлов, директорию хранения файлов + имя файлов.
источник

SK

Suren Kirakosyan in pro.elixir
Кстати говоря, в транзакцию я не копирую, так как файлы очень большие, почти гег. Есть ли другой, более надёжный способ, кроме хранения пути к файлу в базе данных?
источник

SK

Suren Kirakosyan in pro.elixir
Denis Kharchuk
С changeset уже не сработает, сначала нужно делать insert который возвращает {:ok, new_data}. И тепер в new_data есть нужный тебе ид. И тепер делаеш update поля name
Так тоже клёво. Думаю, чтобы не менять структуру сейчас воспользуюсь этим решением.
источник

SK

Suren Kirakosyan in pro.elixir
Pavel
Хранение и само-инкремент ид - плохая идея, как-только будет несколько нод. Для этого есть uuid который гарантирует уникальность с достаточно большим процентом
Ну сейчас это не делается для несколько тысяч подключений, но вообщем спасибо за идею.
источник