|
|
|
UUID в NUMBER(38)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть сторонняя система, из которой приходят данные с идентификатором типа uuid (128 бит). Его нужно положить в базу данных, которая поддерживает максимум number(38), который тоже 128 бит, но сам тип знаковый, соответственно его максимальное значение несколько меньше возможного uuid. Можно ли как-нибудь обрезать этот uuid, так, чтобы осталась очень низкая вероятность того, что они совпадут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2014, 19:32 |
|
||
|
UUID в NUMBER(38)
|
|||
|---|---|---|---|
|
#18+
daunito, 1) Переведите в hex или base64 и храните в виде строки. Хотя вообще-то наиболее популярные СУБД имеют выделенный тип для UUID 2) Ну и касательно обрезки - в теории, если все ID генерятся на одном компе, то можно из UUID вырезать биты которые берутся из аппаратного адреса сетевой карты (48 бит) . Формат по идее стандартный https://tools.ietf.org/html/rfc4122 Но лучше см. п.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2014, 20:59 |
|
||
|
UUID в NUMBER(38)
|
|||
|---|---|---|---|
|
#18+
daunito, обычно number это числа не двоичные, и знак там не входить в число общих "бит". т.е. 38 десятичных чисел там, и плюс еще отдельно знак. друг дело, что и "биты" там тоже не двоичные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2014, 01:38 |
|
||
|
UUID в NUMBER(38)
|
|||
|---|---|---|---|
|
#18+
2b63619c-02a6- 4 37b-9439-a62ade2a8b47 4 - версия гуида, ей можете пренебреч ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2014, 01:46 |
|
||
|
UUID в NUMBER(38)
|
|||
|---|---|---|---|
|
#18+
ZeroMQА что СУБД-то? Есть только одна СУБД, использующая слово "NUMBER" вместо стандартного "NUMERIC". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2014, 15:29 |
|
||
|
UUID в NUMBER(38)
|
|||
|---|---|---|---|
|
#18+
В varchar2 надо его хранить. В bin-hex кодировании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2014, 15:44 |
|
||
|
UUID в NUMBER(38)
|
|||
|---|---|---|---|
|
#18+
daunito, зачем вам хранить его в number? Зачем вам вообще хранить его как число? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2014, 16:05 |
|
||
|
UUID в NUMBER(38)
|
|||
|---|---|---|---|
|
#18+
JeStone, А небось для того, чтобы провести с GUID`ами математические операции. Ну там на >,<,=,<> проверить. Или сложить к примеру. Если учесть то, что GUID`ы - они генерируются на основе случайных чисел - так вообще простор для творчества. ... а может на битах экономят ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2014, 17:46 |
|
||
|
UUID в NUMBER(38)
|
|||
|---|---|---|---|
|
#18+
Объективно польза-бы существовала в расчёте на уменьшение индекса. 128 bit = 16 байт = 32 bin-hex символа Или еще +4 символа дефис для совместимости с 6041271 16 байтного целого в ораклах нету. Есть NUMBER а это - другое с точки зрения storage на диске. Еще интересен вопрос по какому алгоритму берется УУИД. Есть оракловый SYS_GUID. Есть java.util.UUID.randomUUID() или вариации на эту тему из сторонних библиотек. Если аргументами в функцию мы пихаем Mac сетевушки то возникают вопросы "какой сетевушки" ? И какое время учитываем? Системное? Глобальное? Какой ГПСЧ берём? Их тоже бывает много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2014, 18:06 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38839243&tid=1341132]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 442ms |

| 0 / 0 |
