UUID
-
- Сообщения: 109
- Зарегистрирован: 2017.06.22, 10:43
UUID
Я новичок в Yii2 ....вопрос по генерации уникального id...т.е. UID ...если заложенные функции в фраемворке для генерации красивого UID из цифр и букв или же делать это на стороне сервера Mysql?
Я хочу сделать генерацию по ФИО и дате рождения и current time. Покажите на примере если есть такая функция пожалуйста!
Я хочу сделать генерацию по ФИО и дате рождения и current time. Покажите на примере если есть такая функция пожалуйста!
Re: UUID
uuid uid уникальный id по фио, дата рождения, time - определитесь уже.
Re: UUID
У меня вот такое расширение для генерации UUID.
https://packagist.org/packages/nex-otak ... uuid-tools
Использовать либо так
либо подключить бихевиор UuidBehavior из того же пакета.
P.S. Поле в БД для хранения UUID лучше всего сделать BINARY(16).
https://packagist.org/packages/nex-otak ... uuid-tools
Использовать либо так
Код: Выделить всё
$newUuid = nex_otaku\uuid\helpers\uuid::binUuid();
P.S. Поле в БД для хранения UUID лучше всего сделать BINARY(16).
-
- Сообщения: 109
- Зарегистрирован: 2017.06.22, 10:43
Re: UUID
Чем рандомный-то не устраивает?
Ну сделай тогда просто хеш, например
Ну сделай тогда просто хеш, например
Код: Выделить всё
$uuid = md5($fio . $birthDate . $timestamp);
Re: UUID
Использую вот это решение https://github.com/ramsey/uuid
Код: Выделить всё
// Generate a version 4 (random) UUID object
$uuid4 = Uuid::uuid4();
echo $uuid4->toString() . "\n"; // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a
Re: UUID
коллеги, пожалуйста, прежде чем мусорить ссылками, выясните что человек конкретно хочет.
PS всем кто кидает ссылки на либы, генерирующие uuid4, посчитайте сколько весит либа, сколько имеет строк кода, какой выхлоп вы получаете, и сравните с кодом, достаточным для генерации:
PS всем кто кидает ссылки на либы, генерирующие uuid4, посчитайте сколько весит либа, сколько имеет строк кода, какой выхлоп вы получаете, и сравните с кодом, достаточным для генерации:
Код: Выделить всё
$bytes = random_bytes(16);
$bytes[6] = chr((ord($bytes[6]) & 0x0f) | 0x40);
$bytes[8] = chr((ord($bytes[8]) & 0x3f) | 0x80);
$hex = bin2hex($bytes);
$fields = [
'time_low' => substr($hex, 0, 8),
'time_mid' => substr($hex, 8, 4),
'time_hi_and_version' => substr($hex, 12, 4),
'clock_seq_hi_and_reserved' => substr($hex, 16, 2),
'clock_seq_low' => substr($hex, 18, 2),
'node' => substr($hex, 20, 12),
];
return vsprintf(
'%08s-%04s-%04s-%02s%02s-%012s',
$fields
);
Re: UUID
Пошли мериться строками кода )
Фриз, моя версия тоже Рэмси использует, просто через удобную обёртку.
Фриз, моя версия тоже Рэмси использует, просто через удобную обёртку.
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: UUID
UUID в коде
1. Создал объект
2. Записал в БД
UUID через БД
1. Создал объект
2. Записал в БД
3. Прочитал(!) из БД, чтобы узнать UUID
1. Создал объект
2. Записал в БД
UUID через БД
1. Создал объект
2. Записал в БД
3. Прочитал(!) из БД, чтобы узнать UUID
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: UUID
ты говоришь про БД, но показываешь mysql.
Re: UUID
на моей жизни?vitalik1183 писал(а): ↑2017.07.24, 09:31А вдруг коллизия выскочит?UUID в коде
1. Создал объект
2. Записал в БД
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: UUID
не понял, это к чему и о чем? речь про mysql и шла вышеты говоришь про БД, но показываешь mysql.
сугубо ваши сложностина моей жизни?
Yii2!
Re: UUID
это к тому, что хорошим тоном является не выносить логику в БД, тем более это работает по-разному на разных БД.vitalik1183 писал(а): ↑2017.07.24, 10:18не понял, это к чему и о чем? речь про mysql и шла вышеты говоришь про БД, но показываешь mysql.
это у вас сложности - у меня осталось uuid без коллизий на несколько моих жизней (а может на сотни лет - лень считать)
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: UUID
ну про логику да. но в mysql есть же готовая функция.это к тому, что хорошим тоном является не выносить логику в БД, тем более это работает на разных БД.
у меня нет сложностей, рад за вас, что у вас осталось что вам нужно без коллизий.это у вас сложности - у меня осталось uuid без коллизий на несколько моих жизней (а может на сотни лет - лень считать)
Yii2!
- Cacatuidae
- Сообщения: 65
- Зарегистрирован: 2017.01.08, 17:39
Re: UUID
Я бы на месте автора реализовал генерацию ID по методу как это реализовано в Mongodb - objectID
https://docs.mongodb.com/manual/referen ... escription
https://docs.mongodb.com/manual/referen ... escription
Re: UUID
без обоснования? забавно.Cacatuidae писал(а): ↑2017.07.24, 11:02 Я бы на месте автора реализовал генерацию ID по методу как это реализовано в Mongodb - objectID
https://docs.mongodb.com/manual/referen ... escription
- Cacatuidae
- Сообщения: 65
- Зарегистрирован: 2017.01.08, 17:39
Re: UUID
Мне нравится тем, что первые биты гарантируют сортировку по такому ID, правда, в пределах одной секунды (если не ошибаюсь)zelenin писал(а): ↑2017.07.24, 11:07без обоснования? забавно.Cacatuidae писал(а): ↑2017.07.24, 11:02 Я бы на месте автора реализовал генерацию ID по методу как это реализовано в Mongodb - objectID
https://docs.mongodb.com/manual/referen ... escription
Другие либы по генерации не изучал, возможно там тоже такие фишки есть.