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

Существует uuid v7, выше упоминался. Он тоже упорядоченный, что мешает

использовать его?

55 ответов

52 просмотра

он некрасивый и с дефисами

Artur Karapetov
он некрасивый и с дефисами

что значит некрасивый? следует научиться различать данные и их представление.

Alex
что значит некрасивый? следует научиться различать...

да причем здесь это? если с ULID в качестве PK нет проблем - я убиваю 2 зайца. если есть проблемы - я делаю PK как UUID, а для юзера отдельное поле с типом ULID.

Artur Karapetov
да причем здесь это? если с ULID в качестве PK не...

Юзеру думаю пое@@ь он и слов то таких не знает

Artur Karapetov
да причем здесь это? если с ULID в качестве PK не...

> если есть проблемы - я делаю PK как UUID, а для юзера отдельное поле с типом ULID. зачем? какой в этом смысл?

Artur Karapetov
какой смысл в чем?

делать два 128 битных идентификатора вместо одного?

Alex
делать два 128 битных идентификатора вместо одного...

там есть слово “если”. если есть проблемы с ULID в качестве PK.

Artur Karapetov
там есть слово “если”. если есть проблемы с ULID в...

ну окей, если есть проблемы с ULID, и предполагается использовать UUID в качестве PK, нахрена там еще второе поле с ULID ?

Alex
ну окей, если есть проблемы с ULID, и предполагает...

он красивый и уникальный - его я буду отдавать юзеру

Alex
Что значит красивый?

uuid длинный, там дефисы. хуже выглядит для юзеров.

Artur Karapetov
uuid длинный, там дефисы. хуже выглядит для юзеров...

Ух... я не понимаю как эти люди с явными пробелами фундаментальных знаний компьютерных наук и недостатком интеллекта пытаются разрабатывать софт... Вы ведь в курсе что da0e7b25-0c01-4b40-ac97-af48a9d7f65b da0e7b250c014b40ac97af48a9d7f65b 2g57JQwBS0Csl69Iqdf2Ww 3IHHWJIMAFFUBLEXV5EKTV7WLM это буквально одно и то же число?

Alex
Ух... я не понимаю как эти люди с явными пробелами...

да. по сути ULID это UUID + TIMESTAMP откуда, кстати, инфа про проблемы с computer science?

Artur Karapetov
да. по сути ULID это UUID + TIMESTAMP откуда, к...

Потому что говорить что UUID некрасивый, потому что там дефисы, а ULID красивый, потому что дефисов нет, может только идиот, уж простите за прямоту

Artur Karapetov
ну ок. значит я идиот)

Ты же понимаешь чем отличаются данные от их представления?

Arkady Strugatsky
Ты же понимаешь чем отличаются данные от их предст...

не вижу смысла продолжать диалог, мне минут 10 назад в других чатах ответили про ULID и подтвердили что он красивее чем UUID спасибо за помощь

Artur Karapetov
не вижу смысла продолжать диалог, мне минут 10 наз...

Делайте уж сразу new uuid, но это так офтопик

Arkady Strugatsky
Ты же понимаешь чем отличаются данные от их предст...

я бы понял этот вопрос, если бы я мог в бд держать uuid а отдавать ulid и vice versa логика, но так нельзя насколько я понял.

Artur Karapetov
я бы понял этот вопрос, если бы я мог в бд держать...

Кто сказал что нельзя? О чем по-вашему я тут распинаюсь?

Artur Karapetov
я бы понял этот вопрос, если бы я мог в бд держать...

И UUID и ULID это 128 битное число, 32 октета. Они имеют одинаковый размер. UUID канонически кодируется в текстовом виде как 4 группы в 16-ричном представлении. ULID же кодируется в base32. Никто не запрещает при выводе пользователю кодировать это число как угодно и никто не заставляет использовать каноничное представление. UUID можно закодировать хоть как base32 хоть как base64, хоть в виде десятичного числа то же самое верно и для ULID.

Alex
Кто сказал что нельзя? О чем по-вашему я тут распи...

я где-то прочел что нельзя. видимо здесь и ошибся. раз можно, тогда проблем вообще нет.

Artur Karapetov
я где-то прочел что нельзя. видимо здесь и ошибся....

Есть, почему нет. Вы не поняли примерно ни слова из того, что вам говорили. Это проблема. Но как её решать — я не знаю :-(

Дефисы и скрыть можно

V K
Дефисы и скрыть можно

ну ты что, это же не консистентный интерфейс у юзера получится! там же оно поди как же - юзер может взять этот айдишник, скопировать и отправить в ТП. а если в айдишнике есть дефисы, то его не получится скопировать двойным кликом (!!!sic). а если из uuid убрать дефисы, то что с ним будет ТП делать? только не говори что вставлять дефисы обратно. это называется добро пожаловать в реализацию EAV для only бизнес юзеров, фронтендеры то дорогие

Nickelodeona K
ну ты что, это же не консистентный интерфейс у юзе...

Вроде как не комильфо раскрывать наружу внешние идшники. Для юзеров можно завести легкочитаемые external_id.

Александр
Вроде как не комильфо раскрывать наружу внешние ид...

Ну, это тожэ такое себе ограничение. С одной стороны — какие-то векторы атаки опять. С другой, если эти векторы работают — у вас и так всё дырявое...

Ilya Anfimov
Есть, почему нет. Вы не поняли примерно ни слова ...

что я не понял? что UUID и ULID это все представление 128 битного числа? что есть еще и другие представления? я задавал конкретные вопросы. единственное, в чем я ошибся, что можно их конвертить туда-сюда. где-то прочел что нельзя, и поэтому возник этот вопрос.

Artur Karapetov
что я не понял? что UUID и ULID это все представл...

нет, UUID и ULID это способы генерации 128 битного числа. К представлению они не имеют никакого отношения.

Ilya Anfimov
Ну, это тожэ такое себе ограничение. С одной стор...

- У нас дыра в безопасности! - Ну хоть что-то у нас в безопасности…

Artur Karapetov
что я не понял? что UUID и ULID это все представл...

Их нельзя конвертить туда-сюда (между uuid и ulid).

Ilya Anfimov
Их нельзя конвертить туда-сюда (между uuid и ulid)...

тогда я тем более не понимаю, в чем я не прав.

Artur Karapetov
тогда я тем более не понимаю, в чем я не прав.

Все еще не различаете данные и их представление.

так если их конвертировать туда-сюда нельзя, как я могу хранить uuid, а возвращать ulid ?

Artur Karapetov
так если их конвертировать туда-сюда нельзя, как я...

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

Artur Karapetov
тогда я тем более не понимаю, в чем я не прав.

Нельзя конвертировать данные. То есть идентификатор полученный при помощи UUID не будет являться корректным идентификатором ULID и наоборот, корректный ULID не будет являться корректным UUID. Несмотря на то что они имеют одинаковый размер, у них разная внутренняя структура ULID состоит из двух половинок (таймстемп + случайная часть) UUID зависит от версии, но например в 6-7 октеах кодируется версия Поэтому нельзя один идентификатор преобразовать в другой. Они между собой бинарно несовместимы. Для приложений, которые работают с идентификаторами не как с тупой последовательностью байт это может иметь значение. Однако, и тот и другой идентификатор можно представить в различных представлениях. И UUID и ULID могут быть записаны в этом формате: f95ae052-5bc8-11ee-ac65-18c04d09ca7e И UUID и ULID могут быть записаны в кодировке base32 (с обрезанным паддингом): 7FNOAUS3ZAI65LDFDDAE2COKPY Или если очень хочется в виде числа 331449627452577736724109337311442487934 В примерах выше это три разных способа записи одного и того же значения. Для того чтобы вывести красивый идентификатор пользователю не важно каким алгоритмом он был получен.

Artur Karapetov
так если их конвертировать туда-сюда нельзя, как я...

Всё там можно конвертировать. Там единственный тонкий момент - это то, что в каноническом uuid по RFC зарезервированно несколько бит под номер версии, и в этом смысле ulid не является 100% стандартным uuid'ом. Но базе на это глубоко пофиг, для неё это просто 128 битный int. Внутри БД делай PK uuid, а юзерам отдавай как ulid. И наоборот - получил ulid, сконвертил в byte[16] и сохранил в БД как uuid. Вот и всё.

Sergey K
Всё там можно конвертировать. Там единственный тон...

я так и хотел, мне в этом чате начали рассказывать что я идиот и другие сказки =)

Alex
Нельзя конвертировать данные. То есть идентификато...

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

Artur Karapetov
ну вы зачем-то одно и тоже разными словами, разной...

Это было до или после чепухи о том что UUID некрасивые и с дефисами, а ULID красивые и без дефисов?

Alex
Это было до или после чепухи о том что UUID некрас...

какая разница? факт есть факт. uuid не красивый. ulid красивый хочу ulid

Sergey K
Всё там можно конвертировать. Там единственный тон...

вы первый, кто адекватно ответил в этом чате. в остальных чатах, где я это спросил, подобный ответ был получен через 10 минут. и да, ulid красивее uuid, хочется его в качестве PK

Artur Karapetov
какая разница? факт есть факт. uuid не красивый....

Што тот, что этот фиг запомнишь, разницы никакой

Artur Karapetov
вы первый, кто адекватно ответил в этом чате. в ...

На самом деле похер. В PostgreSQL uuid это [16]byte https://github.com/postgres/postgres/blob/master/src/include/utils/uuid.h#L22 как и в нашем любимом Go https://github.com/google/uuid/blob/master/uuid.go#L20 как и ulid https://github.com/oklog/ulid/blob/main/ulid.go#L48

Dmitry M
На самом деле похер. В PostgreSQL uuid это [16]byt...

мой изначальный вопрос был следующий: не будет ли подводных камней в постгре если PK сделать ULID. Возможно что это медленнй чем UUID, для которого почему-то есть свой тип UUID. Я не сварщик в БД, по этому решил уточнить.

Artur Karapetov
мой изначальный вопрос был следующий: не будет ли ...

Тут нужно вкуривать версию UUID. От uuid v4 PostgreSQL может быть плохо https://ru.wikipedia.org/wiki/UUID https://habr.com/ru/companies/ozontech/articles/564520/ https://www.2ndquadrant.com/en/blog/sequential-uuid-generators/. Появились UUIDv 6-7 https://habr.com/ru/articles/572700/

Dmitry M
Тут нужно вкуривать версию UUID. От uuid v4 Postgr...

v7 чтобы, там что-то с упорядоченностью связано, надо вспоминать

Konstantin Zaitsev
Он не утвержден(

Кому это когда-то мешало🤣

Artur Karapetov
вы первый, кто адекватно ответил в этом чате. в ...

Если надо "красиво", то можно взять стандартный uuid и кодировать его в base32 без паддинга. Будет ещё красивее )) 💃 Этот кодер есть в стандартной гошной библиотеке. А про ulid лучше забыть, потому что есть новый draft RFC, и там как раз описан uuid v7, который всё тоже самое, что ulid (т.е. привязанный ко времени, монотонно возрастающий, исключающий конфликты), но только будущий стандарт. Либа gofrs/uuid умеет генерить uuid v7. И для PG есть сишное расширение pg_uuidv7 для быстрой генерации в БД и выдергивания из них времени. https://www.ietf.org/archive/id/draft-ietf-uuidrev-rfc4122bis-03.html

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Карта сайта