Size: a a a

2021 July 18

AA

Anri Asaturov in ctodailychat
Есть ещё секьюрные варианты?
источник

AO

Alexander Ovchinniko... in ctodailychat
Первый вариант, если идти по нему, вероятно, приведёт к получению слишком длинных токенов символов по 42+
источник

AO

Alexander Ovchinniko... in ctodailychat
Ну, то есть шифровать значение
источник

ΠΣ

Παύλος ☃️ Σ... in ctodailychat
Ну первый вариант будет не 100 символов, но все же длинный URL
источник

ΠΣ

Παύλος ☃️ Σ... in ctodailychat
А второй - дополнительный индекс
источник

ΠΣ

Παύλος ☃️ Σ... in ctodailychat
Это уж только из задачи решать что лучше хуже
источник

AR

Anton Revyako in ctodailychat
uuid
1) почти везде есть на уровне нативного типа
2) энтропия в расчете на байт гораздо выше (длинна алфавита vs 256 )
3) выглядит солиднее :)

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


hashids:
1) не понимает большие числа (нужно разбивать)
2) принимает только инты
3) восьмибайтное число (разбитое на два) приобразует в 15 символов
источник

AO

Alexander Ovchinniko... in ctodailychat
UUID как тип норм, а вот алгоритмов генерации маловато, хотелось бы иметь что-то типа Timeflake’а универсально на всех ЯП
источник

D

D0znpp in ctodailychat
Uuid есть 4 версий, кстати. 1-2 ломаются очень легко https://www.uuidtools.com/uuid-versions-explained
источник

AP

Alexander Panko in ctodailychat
если ключ общий на все это не секьюрность, уникальные в этом месте - гемморой, поэтому вариант 2 самое то
источник

IV

Igor V in ctodailychat
Hashids позволяет тебе сгенерировать external_id и положить его в индексируемую колонку рядом.   Это же аля slug
источник

AR

Anton Revyako in ctodailychat
конечно 4. С другой стороны это приводит это приводит к блоату индексов, но тут это... что-то одно )
источник

AR

Anton Revyako in ctodailychat
тогда почему не положить uuid и не юзать лишние либы? )
источник

A

Alex in ctodailychat
сделать "секьюрную" "криптографию" которая будет превращать int-ы в короткие (!) красивые (!) url-френдли (!) строчки практически невозможно. Просто информационная емкость "секьюрной криптографии" такая, что в короткую-красивую строчку она тупо не влезет.

сделай красивый хеш и храни пару ID-hash гдето
источник

IV

Igor V in ctodailychat
Ну положи если хочешь. Проблемы с uuid в базе известны. Вопрос же был другой :)
источник

СА

Сергей Аксёнов... in ctodailychat
Я стараюсь, чтобы айдишники имели прикладной смысл. Если есть уникальный и неизменный логин, email, DNS-хост - использую их. Если надо генерить - использую или MongoDB ID, или буквенную строку, как у YouTube.
источник

AO

Alexander Ovchinniko... in ctodailychat
+
источник

AO

Alexander Ovchinniko... in ctodailychat
Продолжение этой идеи - генерировать name, как рекомендует делать гугл в своих гайдах по gRPC
источник

A

Alex in ctodailychat
и еще: URL - это часть UX. Не надо туда пожалуйста uuid)) Лучше чтото типа uSzQtH
источник

СА

Сергей Аксёнов... in ctodailychat
Ну да, например из title, если сущность - это статья или запись в блоге.
источник