Size: a a a

2021 February 04

AZ

Alexander Zelenyak in Moscow Python
Монговый ObjectId это кармический брат UUID.
источник

AZ

Alexander Zelenyak in Moscow Python
Собственно, и в любой базе никто не мешает использовать нормальные айдишники, а не секвенсы. Но про это мало кто знает.
источник

AS

Alexey Starkov in Moscow Python
Ivan
Привет, при использовании паттерна репозиторий хочу id сущности привязать к id в базе данных, проблема в том что я не знаю какой id у сущности когда та создается в логике, потому что она еще не сохранена в базе.  Как быть в такой ситуации? Оставлять id не заполненным тогда надо следить когда он есть когда его нет, сделать id в форме uuid ударит по перфомансу, а где получить актуальный id я тоже не знаю(((
id в базе и id в коде это разные вещи, id в коде обеспечивается уникальностью объекта в памяти, id в базе возникает после сохранения в базу и в логике он не нужен, соответственно и помнить о нем не надо и доступ к нему иметь нельзя, иначе это будет текущая абстракция
источник

AS

Alexey Starkov in Moscow Python
то что иногда используют id из базы как id объекта это просто ленивое проектирование
источник

AZ

Alexander Zelenyak in Moscow Python
Хм... Интересно оценить вероятности коллизий, если айдишником брать питонячий id(...). Понятно, что зависит от объёма памяти...
источник

AZ

Alexander Zelenyak in Moscow Python
Наркомания, да.
источник

AS

Alexey Starkov in Moscow Python
Alexander Zelenyak
Хм... Интересно оценить вероятности коллизий, если айдишником брать питонячий id(...). Понятно, что зависит от объёма памяти...
не надо так :)
источник

ПМ

Павел Мальцев... in Moscow Python
мне вот интересно, можно ли быть настолько невезучим, чтобы напороться на 2 одинковых uid
источник

AZ

Alexander Zelenyak in Moscow Python
Очевидно, что не надо. Но вечело же.
источник

AS

Alexey Starkov in Moscow Python
Павел Мальцев
мне вот интересно, можно ли быть настолько невезучим, чтобы напороться на 2 одинковых uid
зависит от типа uuid, полностью случайные - да, хотя вероятность _крайне мала_, а которые мак + таймштамп используют не могут пересечься
источник

AZ

Alexander Zelenyak in Moscow Python
Павел Мальцев
мне вот интересно, можно ли быть настолько невезучим, чтобы напороться на 2 одинковых uid
Это легко оценивается. По большому счёту, в наших с тобой условиях эта вероятность стремиться к нулю, так как в этом айдишнике есть время (пусть с квантованием до секунды) и хеш хоста (или случайное число). Т.е. должно очень сильно неповезти.
источник

I

Ivan in Moscow Python
Alexey Starkov
id в базе и id в коде это разные вещи, id в коде обеспечивается уникальностью объекта в памяти, id в базе возникает после сохранения в базу и в логике он не нужен, соответственно и помнить о нем не надо и доступ к нему иметь нельзя, иначе это будет текущая абстракция
не я не про id(...) я про id модели как идентификатор сущности
источник

AZ

Alexander Zelenyak in Moscow Python
Alexey Starkov
зависит от типа uuid, полностью случайные - да, хотя вероятность _крайне мала_, а которые мак + таймштамп используют не могут пересечься
Могут пересечься, конечно же. Если ты в рамках секунды два айдишника сгенеришь.
источник

AZ

Alexander Zelenyak in Moscow Python
Можно оценить, сколько их надо генерить, чтобы хотя бы раз в год получить коллизию. У меня нет такого хайлоада даже близко. Да и, думаю, ни у кого в этом чате нет.
источник

ПМ

Павел Мальцев... in Moscow Python
Alexander Zelenyak
Это легко оценивается. По большому счёту, в наших с тобой условиях эта вероятность стремиться к нулю, так как в этом айдишнике есть время (пусть с квантованием до секунды) и хеш хоста (или случайное число). Т.е. должно очень сильно неповезти.
звучит логично, это надо очень много писать, чтобы встретить проблему
источник

AS

Alexey Starkov in Moscow Python
Alexander Zelenyak
Могут пересечься, конечно же. Если ты в рамках секунды два айдишника сгенеришь.
в рамках 100нс, но да
источник

ПМ

Павел Мальцев... in Moscow Python
вот зачем нужно писать на питоне, чтобы коллизию не словить))
источник

AZ

Alexander Zelenyak in Moscow Python
Alexey Starkov
в рамках 100нс, но да
Зависит от реализации. Я больше на монговский ObjectId ориентируюсь. У нас секунда.
источник

I

Ivan in Moscow Python
Alexey Starkov
id в базе и id в коде это разные вещи, id в коде обеспечивается уникальностью объекта в памяти, id в базе возникает после сохранения в базу и в логике он не нужен, соответственно и помнить о нем не надо и доступ к нему иметь нельзя, иначе это будет текущая абстракция
Да меня тоже это немного смущает, но во всех примерах поголовно в репозиториях есть метод get_by_id. ну и поиск по нему быстрее
источник

AS

Alexey Starkov in Moscow Python
Ivan
не я не про id(...) я про id модели как идентификатор сущности
я тоже не про id(), я про общее понятие identity объекта :)
источник