Size: a a a

Software Design/Architecture/Zen

2021 February 08

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
Roman
Если только uuid v1, а не v4
какая разница, технически это все uint128
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
индекс же строится по полю
источник

В

Виктор in Software Design/Architecture/Zen
Roman
Спроси его про плюсы генерации ID автоинкрементом и задай на эти "плюсы" вопросы, на которые он не сможет ответить, делов  то
Было бы здорово где-то набраться мудрости и заранее подготовить формулировки. Я и сам не гуру далеко.
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Виктор
Неочевидно, как представить плюсы генерации id в коде тимлиду, который никогда не работал с подобным. Надо кардинально изменить взгляды человека.
Если создавать сущность без айдишки, она:
1. Не валидна, и становится валидной только после сохранения в базе, и имеет nullable поле id, что немного противоречит определению сущности
2. Не может производить действия завязанные на id: продюсить ивенты, создавать новые сущности с общей айдишкой, или банально записать в лог айдишку сущности сразу
источник

R

Roman in Software Design/Architecture/Zen
Алексей Гевондян
какая разница, технически это все uint128
Технически не будет никакого смысла делать > < по полю, которое неупорядоченно
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
Roman
Технически не будет никакого смысла делать > < по полю, которое неупорядоченно
с первичными ключами такое бывает?
источник

R

Roman in Software Design/Architecture/Zen
Алексей Гевондян
с первичными ключами такое бывает?
Ты гуглил cursor pagination?
источник

В

Виктор in Software Design/Architecture/Zen
Алексей Гевондян
какая разница, технически это все uint128
v4 же рандомен, нет гарантии, что добавляемое значение больше предыдущего
источник

R

Roman in Software Design/Architecture/Zen
Но на самом деле, это не столько проблема. Достаточно добавить поле timestamp и сделать cursor pagination по нему. И сделать на него индекс (лучше кластерный)
источник

SB

Sergei Beilin in Software Design/Architecture/Zen
Виктор
Доброго дня.
Кто-нибудь может подкинуть литературу на тему проблем, связанных с использованием автоинкремента в качестве id сущности?
Автоинкремент - это штука специфическая для RDBMS. Поэтому ваши сущности оказываются завязаны на БД. Поэтому я тоже голосую за uuid, как вариант наиболее универсальный. Это не отменяет возможности иметь autoincrement primary key, если это удобно или требуется вашим ORM. Why not both?
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Можно перкд созданием сущности ходить в бд и дергать сиквенс
источник

R

Roman in Software Design/Architecture/Zen
Dmitriy Tkachenko
Можно перкд созданием сущности ходить в бд и дергать сиквенс
Чтобы получить состояние гонки?
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Гонки за что?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Виктор
v4 же рандомен, нет гарантии, что добавляемое значение больше предыдущего
по этой причине есть всякие CUID (https://github.com/ericelliott/cuid) и прочие UUIDv6 (https://tools.ietf.org/html/draft-peabody-dispatch-new-uuid-format-00)
источник

R

Roman in Software Design/Architecture/Zen
Dmitriy Tkachenko
Гонки за что?
За последний айдишник
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Roman
Чтобы получить состояние гонки?
секвенсы гарантируют что значение получит только один. Это ж сиквенсы. Просто в mysql такого нет.
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Сиквенс автоинкрементить при запросе
источник

ак

аминоуксусная кислот... in Software Design/Architecture/Zen
Виктор
Доброго дня.
Кто-нибудь может подкинуть литературу на тему проблем, связанных с использованием автоинкремента в качестве id сущности?
Почему бы хеш не использовать?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
в postgresql это просто select nextval(my_sequence) и нет ни гонок ни проблем
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Да, главное не текущее значение
источник