Об UUIDах или век живи - век учись, дураком помрешь

Aug 14, 2014 17:24

Столкнулся с проектом, в котором в качестве синтетических ключей используются uuid-ы. Надо сказать, я к такому подходу всегда относился очень скептически, но мне неожиданно здорово понравилось ( Read more... )

Leave a comment

Comments 14

vp August 14 2014, 13:35:03 UTC
А что знаичит "если уж нашлась"? Вы их что, в тексте находите? Запись находится в таблице по своему ключу, если эта таблица собак, то код тут имеет смысл тольков этой таблице.

С другой стороны, что человеко-читаемые ключи много приятнее для глаза. Но гуиды к ним ну никак не относятся.

Reply

metaclass August 14 2014, 14:07:36 UTC
Не, можно сдуру сделать что-нибудь вида Users.FindByPK(dog_id) и пока глазами все не пересмотришь - не заметишь, если юзеров и собак одинаковое количество :)

Reply

vp August 14 2014, 15:58:11 UTC
О, я понял! Это когда юзеров они сджоинят с собаками, а поля еще везде классически все будут называться "id" и никак иначе - тут да, глаза сломаешь.

Reply

plumqqz August 16 2014, 19:10:23 UTC
Запись находится в таблице по своему ключу, если эта таблица собак, то код тут имеет смысл тольков этой таблице.
Нет. Я могу сделать такое view:

select uuid, 'man' as type, 'Name:' || full_name || ', occupation:' || occupation as description from man
union all
select uuid, 'dog' as type, 'Name:' || name || ', owner:' || (select m.name from men m where m.uuid=d.owner_uuid) from dog
union all
select uuid, 'cat' as type, 'Name:' || name || ', owner:' || (select m.name from men m where m.uuid=d.owner_uuid) from cat
union all
...
не заморачиваясь с придумыванием ключей.

Reply


occuserpens August 14 2014, 13:38:24 UTC
Действительно, почему бы и нет

Reply


bydlorus August 14 2014, 13:42:48 UTC
Это, кстати, одно из удобств при импорте данных из легаси базы (была одна такая, MS Commerce Server). Если есть uuid - значит, есть и тип данных, т.к. такой uuid будет только в одной из таблиц.

Reply

plumqqz August 16 2014, 19:06:18 UTC
Ну да, о чем я и говорю.

Reply


krivda August 14 2014, 13:46:10 UTC
главная мегафича гуидов как синт ключей - это если есть несколько баз данных, которые реплицируются собщениями (которые идут попутными верблюдами, а не онлайн). Типично: центр и региональные филиалы в пердях.

Reply


avnik August 14 2014, 17:56:05 UTC
индекс по uuid'ам только корежить будет. (в смысле что он будет пустой тратой памяти).

Посмотрите на twitter snowflake (лучше на какой нибудь безсерверный клон),
почти так же хорошо как uuid, но они монотонно увеличиваются, следовательно потроха баз с ума не сходят

Reply

plumqqz August 16 2014, 18:59:58 UTC
почти так же хорошо как uuid, но они монотонно увеличиваются, следовательно потроха баз с ума не сходят
??

Reply


Leave a comment

Up