170 похожих чатов

А в качестве первичного ключа что лучше использовать: uuid или

Int?

35 ответов

24 просмотра

Я б не трогал uuid для учебных задач, если задача не в этом.

It depends. По-умолчанию лучше использовать int \ bigint если у тебя нет специфических требований.

Sigdra Xuaenbor
Почему?

Он приносит свои приколы при реализации, которые надо понимать.

Проксимов Прксимович
Какие?

Место жрёт, сортировки нет (при поиске каких-нибудь дублей может быть актуально), шардинг по модулю id идёт лесом. Ну и ещё пачка подобных нюансов.

Я бы даже сказал если у тебя постгрес, то следует использовать id BIGINT GENERATED ALWAYS AS IDENTITY

evle
Место жрёт, сортировки нет (при поиске каких-нибуд...

там в генерации ж таймстамп учавствует, сортировка работает

evle
Место жрёт, сортировки нет (при поиске каких-нибуд...

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

Проксимов Прксимович
Ну это нюансы, да. Но можно хранить и то и то. Для...

То пет, а то учебный. Банально пока дебажить будет, задолбается копипастить, чтобы разобраться, что к чему привязано.

evle
То пет, а то учебный. Банально пока дебажить будет...

Преувеличиваешь) у нас все на юидах, это не является какой-то проблемой

Проксимов Прксимович
Преувеличиваешь) у нас все на юидах, это не являет...

Не знаю, пока мы не строим что-то распределённое и не знаем, зачем ещё нам нужен uuid, я всё ещё считаю, что это оверкилл без каких-либо плюсов. Банально можно себе всрать производительность на ровном месте.

evle
Не знаю, пока мы не строим что-то распределённое и...

Я придерживаюсь мнению что возвращать наружу стоит почти всегда только ююид. Если ничего не возвращаешь наружу то пожалуйста, используй инты

evle
Зачем снаружи уид и что наружа будет с ним делать?

Представь что Ты делаешь апишку для клиентов. Стало понятнее?

Проксимов Прксимович
Представь что Ты делаешь апишку для клиентов. Стал...

It depends. Во-первых, кто сказал, что api должно где-то первичный ключ возвращать?

evle
It depends. Во-первых, кто сказал, что api должно ...

Я говорил про то что наружу надо отдавать юиды, а не про то что они должны быть первичным ключем

Проксимов Прксимович
Я придерживаюсь мнению что возвращать наружу стоит...

Я не вижу проблемы возвращать наружу инты, если у тебя контроль доступа не обеспечивается одними лишь идентификаторами

Alex
Я не вижу проблемы возвращать наружу инты, если у ...

А я слишком много видел и знаю что в любой достаточно большой системе неизбежны баги, и возможно в том числе с access control) Теория хаоса, все дела 😁

Это уже близко к security through obscurity.

evle
Это уже близко к security through obscurity.

В каком-то смысле да. Но вообще это всегда баланс. Обычно цена хранения юида не превышает дополнительных гарантий безопасности

Проксимов Прксимович
В каком-то смысле да. Но вообще это всегда баланс....

Но я в каком-то смысле предвзят, потому что занимался поиском таких уязвимостей) Это как полицейские видят везде преступников)

Проксимов Прксимович
В каком-то смысле да. Но вообще это всегда баланс....

Каких именно гарантий? Важно понять, от чего мы защищаемся и не делаем ли мы хуже. Например, часто уходят от последовательных ID чтобы скрыть порядок и время создания сущностей. И тут приходим мы с uuid. Но чтоб не разломать сортировку, мы делаем его ulid. В итоге — таймстемп читается прямо из уида. Круто?

evle
Каких именно гарантий? Важно понять, от чего мы за...

Я про ulid ничего не говорил это раз. Порядок создания сущностей, бизнес метрики, это все можно случайно спалить. Дальше - при проблемах с acces-control имеем IDOR. Весьма Неприятно в некоторых случаях

Проксимов Прксимович
Я про ulid ничего не говорил это раз. Порядок созд...

А я о том, что "отдавать уид" само по себе ничего не лечит, а может сделать хуже чем было (полный таймстемп вместо просто порядка). Важно понимать, что и от чего мы защищаем и исходя из этого выбирать меры.

evle
Каких именно гарантий? Важно понять, от чего мы за...

Спорное "круто", потому что время создание и обработки сущности становится выше, не говоря про другие возможные проблемы. Uuid, как и его разновидность ulid, не являются серебряной пулей...

evle
А я о том, что "отдавать уид" само по себе ничего ...

Вообще важно понимать что делаешь, тут не поспоришь 😁 Но если ты аргументом выбрал что «можно накосячить», то это ровно тот же самый аргумент который можно применить и в мою пользу)

Проксимов Прксимович
Вообще важно понимать что делаешь, тут не поспориш...

Ну, решение с UUID заведомо сложнее и создаёт видимость защиты от чего-то. Так что нет, нельзя применить.

evle
Ну, решение с UUID заведомо сложнее и создаёт види...

Я не вижу какой-то значительной сложности в использовании ююида. Idor’ы почти всегда плохо.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта