uuid что это на навигаторе
Что делать, если ключ Навител заблокирован?
Прежде всего не паниковать. Чтобы восстановить заблокированный ключ Навител нужно проделать следующие действия: Требуется узнать UUID устройства. Данный номер можно узнать в самом устройстве, выбрав раздел меню «О системе». Затем требуется узнать ключ Навител. Лицензия привязана к UUID-устройства и нигде больше не повторяется. Чтобы восстановить действие заблокированного лицензионного ключа потребуется писать в службу технической поддержки. После того как новую лицензию прислала техническая поддержка требуется произвести подключение устройства к ПК. Далее, в корневой папке устройства требуется создать текстовый файл, который будет называться RegistrationKeys. В него вносят 2 параметра:
Activation Key и Unlock Key – это следующие параметры, которые необходимо узнать. Для этого понадобится сайт activate.navitel.su. На этом ресурсе необходимо указать лицензию, которую прислала служба технической поддержки и серийный номер устройства. Необязательно указывать личные идентификационные сведения и почту.
Новые номера активации и устройства будут получены на этом сайте автоматически. Их-то и нужно сохранить в файл. Он помещается в корневую папку памяти устройства с названием NaviTelAuto_Activation_Key. Он же должен находится в папке каталога памяти устройства Navitel.Далее, устройство отключается от ПК и перезапускается. Всё должно работать в штатном режиме. Если есть какие-то проблемы, то действия необходимо повторить, пытаясь сделать всё правильно и без ошибок.
Как генерируются UUID
Вы наверняка уже использовали в своих проектах UUID и полагали, что они уникальны. Давайте рассмотрим основные аспекты реализации и разберёмся, почему UUID практически уникальны, поскольку существует мизерная возможность возникновения одинаковых значений.
Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
Теория
UUID (universally unique IDentifier) — это 128-битное число, которое в разработке ПО используется в качестве уникального идентификатора элементов. Его классическое текстовое представление является серией из 32 шестнадцатеричных символов, разделённых дефисами на пять групп по схеме 8-4-4-4-12.
Информация о реализации UUID встроена в эту, казалось бы, случайную последовательность символов:
Значения на позициях M и N определяют соответственно версию и вариант UUID.
Версия
Номер версии определяется четырьмя старшими битами на позиции М. На сегодняшний день существуют такие версии:
Вариант
Это поле определяет шаблон информации, встроенной в UUID. Интерпретация всех остальных битов в UUID зависит от значения варианта.
Мы определяем его по первым 1-3 старшим битам на позиции N.
1 0 0 0 = 8
1 0 0 1 = 9
1 0 1 0 = A
1 0 1 1 = B
Так что если вы видите UUID с такими значениями на позиции N, то это идентификатор в варианте 1.
Версия 1 (время + уникальный или случайный идентификатор хоста)
В этом случае UUID генерируется так: к текущему времени добавляется какое-то идентифицирующее свойство устройства, которое генерирует UUID, чаще всего это MAC-адрес (также известный как ID узла).
Идентификатор получают с помощью конкатенации 48-битного МАС-адреса, 60-битной временной метки, 14-битной «уникализированной» тактовой последовательности, а также 6 битов, зарезервированных под версию и вариант UUID.
Тактовая последовательность — это просто значение, инкрементируемое при каждом изменении часов.
Временная метка, которая используется в этой версии, представляет собой количество 100-наносекундных интервалов с 15 октября 1582 года — даты возникновения григорианского календаря.
Возможно, вы знакомы с принятым в Unix-системах исчислением времени с начала эпохи. Это просто другая разновидность Нулевого дня. В сети есть сервисы, которые помогут вам преобразовать одно временное представление в другое, так что не будем на этом останавливаться.
Хотя эта реализация выглядит достаточно простой и надёжной, однако использование MAC-адреса машины, на которой генерируется идентификатор, не позволяет считать этот метод универсальным. Особенно, когда главным критерием является безопасность. Поэтому в некоторых реализациях вместо идентификатора узла используется 6 случайных байтов, взятых из криптографически защищённого генератора случайных чисел.
Сборка UUID версии 1 происходит так:
Поскольку эта реализация зависит от часов, нам нужно обрабатывать пограничные ситуации. Во-первых, для минимизации коррелирования между системами по умолчанию тактовая последовательность берётся как случайное число — так делается лишь один раз за весь жизненный цикл системы. Это даёт нам дополнительное преимущество: поддержку идентификаторов узлов, которые можно переносить между системами, поскольку начальное значение тактовой последовательности совершенно не зависит от идентификатора узла.
Помните, что главная цель использования тактовой последовательности — внести долю случайности в наше уравнение. Биты тактовой последовательности помогают расширить временную метку и учитывать ситуации, когда несколько UUID генерируются ещё до того, как изменяются процессорные часы. Так мы избегаем создания одинаковых идентификаторов, когда часы переводятся назад (устройство выключено) или меняется идентификатор узла. Если часы переведены назад, или могли быть переведены назад (например, пока система была отключена), и UUID-генератор не может убедиться, что идентификаторы сгенерированы с более поздними временными метками по сравнению с заданным значением часов, тогда нужно изменить тактовую последовательность. Если нам известно её предыдущее значение, его можно просто увеличить; в противном случае его нужно задать случайным образом или с помощью высококачественного ГПСЧ.
Версия 2 (безопасность распределённой вычислительной среды)
Главное отличие этой версии от предыдущей в том, что вместо «случайности» в виде младших битов тактовой последовательности здесь используется идентификатор, характерный для системы. Часто это просто идентификатор текущего пользователя. Версия 2 используется реже, она очень мало отличается от версии 1, так что идём дальше.
Версия 3 (имя + MD5-хэш)
Если нужны уникальные идентификаторы для информации, связанной с именами или наименованием, то для этого обычно используют UUID версии 3 или версии 5.
Они кодируют любые «именуемые» сущности (сайты, DNS, простой текст и т.д.) в UUID-значение. Самое важное — для одного и того же namespace или текста будет сгенерирован такой же UUID.
Обратите внимание, что namespace сам по себе является UUID.
В этой реализации UUID namespace преобразуется в строку байтов, конкатенированных с входным именем, затем хэшируется с помощью MD5, и получается 128 битов для UUID. Затем мы переписываем некоторые биты, чтобы точно воспроизвести информацию о версии и варианте, а остальное оставляем нетронутым.
Важно понимать, что ни namespace, ни входное имя не могут быть вычислены на основе UUID. Это необратимая операция. Единственное исключение — брутфорс, когда одно из значений (namespace или текст) уже известно атакующему.
При одних и тех же входных данных генерируемые UUID версий 3 и 5 будут детерминированными.
Версия 4 (ГПСЧ)
Самая простая реализация.
6 битов зарезервированы под версию и вариант, остаётся ещё 122 бита. В этой версии просто генерируется 128 случайных битов, а потом 6 из них заменяется данными о версии и варианте.
Такие UUID полностью зависят от качества ГПСЧ (генератора псевдослучайных чисел). Если его алгоритм слишком прост, или ему не хватает начальных значений, то вероятность повторения идентификаторов возрастает.
В современных языках чаще всего используются UUID версии 4.
Её реализация достаточно простая:
Версия 5 (имя + SHA-1-хэш)
Единственное отличие от версии 3 в том, что мы используем алгоритм хэширования SHA-1 вместо MD5. Эта версия предпочтительнее третьей (SHA-1 > MD5).
Практика
Одним из важных достоинств UUID является то, что их уникальность не зависит от центрального авторизующего органа или от координации между разными системами. Кто угодно может создать UUID с определённой уверенностью в том, что в обозримом будущем это значение больше никем не будет сгенерировано.
Это позволяет комбинировать в одной БД идентификаторы, созданные разными участниками, или перемещать идентификаторы между базами с ничтожной вероятностью коллизии.
UUID можно использовать в качестве первичных ключей в базах данных, в качестве уникальных имён загружаемых файлов, уникальных имён любых веб-источников. Для их генерирования вам не нужен центральный авторизующий орган. Но это обоюдоострое решение. Из-за отсутствия контролёра невозможно отслеживать сгенерированные UUID.
Есть и ещё несколько недостатков, которые нужно устранить. Неотъемлемая случайность повышает защищённость, однако она усложняет отладку. Кроме того, UUID может быть избыточным в некоторых ситуациях. Скажем, не имеет смысла использовать 128 битов для уникальной идентификации данных, общий размер которых меньше 128 битов.
Уникальность
Может показаться, что если у вас будет достаточно времени, то вы сможете повторить какое-то значение. Особенно в случае с версией 4. Но в реальности это не так. Если бы вы генерировали один миллиард UUID в секунду в течение 100 лет, то вероятность повторения одного из значений была бы около 50 %. Это с учётом того, что ГПСЧ обеспечивает достаточное количество энтропии (истинная случайность), иначе вероятность появления дубля будет выше. Более наглядный пример: если бы вы сгенерировали 10 триллионов UUID, то вероятность появления двух одинаковых значений равна 0,00000006 %.
А в случае с версией 1 часы обнулятся только в 3603 году. Так что если вы не планируете поддерживать работу своего сервиса ещё 1583 года, то вы в безопасности.
Впрочем, вероятность появления дубля остаётся, и в некоторых системах стараются это учитывать. Но в подавляющем большинстве случаев UUID можно считать полностью уникальными. Если вам нужно больше доказательств, вот простая визуализация вероятности коллизии на практике.
«Вторая жизнь» или реанимация автонавигатора на NAVITEL.
Автолюбители рано или поздно едут в другие города на отдых, экскурсию, в гости или в командировку по работе и им на помощь приходит автонавигатор. Возвратившись домой, в родной город многие закидывают его в дальний ящик и не достают до следующей поездки. А ведь за это время версия программы и карт порядком устареет. Вот такая история была и со мной. Откопав купленный в далеком 2010 году автонавигатор JJ-CONNECT 2100WIDE, я обнаружил, что версия софта и карт очень устарела. Сегодня я расскажу, как реанимировать старый автомобильный навигатор на NAVITEL до актуального состояния.
Предисловие.
Для чего это вообще нужно делать, спросите вы? Для того, что строительство дорог не стоит на месте, появляются новые и закрываются старые, устанавливают новые знаки и светофоры, в следствие чего обновляются и карты для автонавигаторов. Новые карты не совместимы со старыми версиями программного обеспечения навигатора. А также новые версии NAVITEL (5.5; 7.0; 7.5) работают намного быстрее старых (3.2 и т.д).
Порядок обновления.
Для начала заходим на сайт navitel.ru и регистрируемся в правом верхнем углу. Для этого придумываем уникальное Имя и Пароль, а также указывает действующий адрес электронной почты, который понадобится для подтверждения регистрации. Также заполняем поля Страна и Город, помеченные звездочкой, они тоже являются обязательными.
Далее заходим в личный кабинет и выбираем Мои устройства.
Выбираем в текущем списке вашу модель навигатора и версию ПО. В моем случае модель и ПО написаны на задней крышке навигатора JJ-Connect 2100Wide, Windows CE 6.0.
Скачиваем прошивку для вашего устройства на жесткий диск. У меня это версия Navitel-5.5.1.107, у вас может быть другая. А также скачиваем актуальные карты под эту версию прошивки.
С помощью дата-кабеля подключаем навигатор к компьютеру.
Находим на компьютере место куда скачали файлы и разархивируем их в какую-либо папку.
Находим на навигаторе файл Navitel.exe или MobileNavigator.exe, который находится либо в папке Navitel, либо в MobileNavigator соответственно. Далее удаляем из этой папки (а лучше на всякий случай делаем резервную копию) все файлы, кроме NavitelAuto Activation Key.txt
Копируем в данную папку содержимое с новой программой, скачанной с сайта Навител.
Далее удаляем (или опять сначала делаем резервную копию, а потом удаляем) все содержимое карт из папки NavitelContent/Maps.
Если встроенной памяти хватает, копируем сюда новые карты. У меня встроенной памяти не хватило, поэтому я создал на флеш-карте папку NavitelContent/Maps и закачал карты на флешку.
На этом копирование закончено. Отключаем навигатор от компьютера и запускаем. Первое включение проходит дольше обычного, происходит индексация карт и выбор диктора для голосовых подсказок. Лицензионный ключ повторно вводить не нужно, потому что мы не удалили текстовый файл NavitelAuto Activation Key.txt.
Вот и все, мы успешно обновили старую версию 3.2.6.4914 на более актуальную и быструю в работе 5.5.1.109.
Uuid что это на навигаторе
4. Обновление программы и карт.
4.1. Личный кабинет
Для того, чтобы получить доступ к обновлениям и сравнить, актуальная у Вас установлена версия программы или нет, пожалуйста, зарегистрируйтесь в личном кабинете на сайте: http://navitel.su/au. n/registration/
Затем добавьте Ваше устройство в разделе «Мои устройства», указав название и лицензионный ключ на программу.
Возможные ошибки при этом:
• Сообщение: «Ключ не найден».
Причины:
• Ошибка ввода лицензионного ключа: при вводе используйте только латинские символы, обратите внимание на регистр букв, наличие знаков «-«, отсутствие лишних пробелов в строке ввода ключа
• Ключ «пиратский»: подробная информация об этом указана на http://navitel.su/su. t/counterfeit/.
Если ошибка продолжает появляться – отправьте письмо на support@navitel.su с просьбой проверить ключ.
• Сообщение: «Ключ добавлен в личном кабинете другого пользователя».
В этом случае вспомните, не просили ли Вы кого-нибудь из знакомых обновить программу, не регистрировались ли ранее на другой электронный адрес.
Если нет, то необходимо написать в техническую поддержку support@navitel.su, описать ситуацию, и к письму приложить фотографии документов, выданных при покупке, и фотографию экрана устройства с программой Навител, открытой на странице Меню/Информация /О программе.
После того, как Вы добавите устройство в личном кабинете, Вам откроется доступ к разделу «Доступные обновления».
Узнать версию установленной программы Навител можно в Меню/Информация/О программе. Также обратите внимание на серийный номер устройства, который указан здесь же. Если в серийном номере 32 символа – то программа на Вашем навигаторе устанавливается в память самого устройства. Если 5 или 12 – то на карту памяти.
Узнать версию установленных карт можно в Меню/Информация/О карте.
Далее в личном кабинете найти обновления именно для Вашей модели устройства: если версия установленной программы Навител ниже, чем в личном кабинете, то требуется обновление и программы, и карт.
4.2. Обновление программы.
Для обновления необходимо загрузить на ПК архив с версией программы Навител для Вашей модели (это архив размером 15-20 Мб), а затем разархивировать на Вашем ПК.
В зависимости от того, куда устанавливается программа, подключите либо сам навигатор к ПК ( в соответствии с инструкцией производителя), либо только карту памяти (через устройство чтения карт памяти).
В памяти навигатора (или на карте памяти) есть папка с программой – Navitel либо NaviOne/MobileNavigator/Navi. В распакованном ранее архиве есть точно такая же папка.
Для обновления зайдите в папку Navitel (NaviOne/MobileNavigator/Navi и др.) на устройстве/карте памяти и, за исключением файла NavitelAuto Activation Key.txt, удалите из нее все папки и файлы. Затем содержимое разархивированной папки Navitel (NaviOne/MobileNavigator/Navi и др.) скопируйте в папку на устройстве/карте памяти. На этом обновление программы закончено.
Несколько частных случаев:
Есть некоторые модели, которые маркируются одинаково, но на части устройств программа ставится во внутреннюю память, на другой – на карту памяти.
В личном кабинете для таких устройств есть разные архивы (и они не взаимозаменяемы).
Пример:
1. Название модели в ЛК: Explay PN-935 SD, PN-945 CE6 SD,
Название архива с обновлениями: NaviTel-5.0.0.1126.EXPLAY_PN945_CE6_SD.zip
2. Название модели в ЛК: Explay PN-935 INTERNAL,
Название архива с обновлениями: NaviTel-5.1.0.48.eXplay_PN-935.zip
Первый архив в этом случае для Explay PN-935, на котором программа установлена на карту памяти (пометка «SD»), второй – для устройства с внутренней памятью (пометка «INTERNAL»).
Пример:
Возможно указание только одной из маркировок:
1. Название модели в ЛК: Treelogic TL-4307 BGF,
Название архива с обновлениями: NaviTel-5.1.0.48.TREELOGIC_TL-4307 BGF.zip,
2. Название модели в ЛК: Treelogic TL-4307 BGF INTERNAL,
Название архива с обновлениями: NaviTel-5.1.0.48.Treelogic_TL-4307 BGF INTERNAL.zip
В данном случае первый архив – для устройств с SD-картой, второй – с внутренней памятью.
Для устройств, где программа устанавливается во внутреннюю память, Вы также можете встретить обозначения RF, ResidentFlash.
Есть модели, на которых установлены разные версии операционных систем (ОС): WinCE 5 или WinCE 6.
Для этих устройств в личном кабинете доступны разные версии программы, и в названии модели/архива с обновлениями указано, для устройств с какой версией ОС они предназначены.
Пример:
1. Название модели в ЛК: PROLOGY iMap-400M CE6,
Название архива с обновлениями: NaviTel-5.0.3.383.PROLOGY_IMAP_400M_CE60.zip
2. Название модели в ЛК: PROLOGY iMap-400M CE5,
Название архива с обновлениями: NaviTel-5.1.0.48.Prology_iMap-400M CE5.zip, 20.5 Mb
Если Вы затрудняетесь в определении модели, то внимательно изучите само устройство (модель, как правило, указана на передней или задней панели), документы, выданние при покупке, а также официальный сайт производителя (определение модели по внешним признакам). Версия ОС, чаще всего, указывается на наклейке на задней панели автонавигатора.
Если Вы не нашли Вашу модель в списке обновлений, то сообщите на электронный адрес support@navitel.su.
4.3. Обновление карт.
Файлы с картами Вы можете загрузить из личного кабинета.
Карты необходимо выбирать, исходя из установленной версии программы. Около каждого файла карт есть уточнение, с какой версией программы эта карта будет работать. Например, карты Q1 2011 (для версии 5.0.0.989 и выше) будут работать в программе версии 5.0.0.1127, 5.0.1.76, но не будут работать с программой версии 5.0.0.785. Если Вы поставите неподходящую версию карт, то при запуске программы будет выдаваться сообщение «не найдено карт в Атласе» либо возможны любые ошибки в ходе использования программы.
Если Вы используете карты нескольких государств, то релизы этих карт должны совпадать.
После того, как в личном кабинете Вы скачали файл карт, соответствующий версии программы Навител, установленной на автонавигаторе, подключите устройство к ПК или воспользуйтесь устройством чтения карт памяти.
Найдите в памяти устройства или на карте памяти папку NavitelContent, в ней папку Maps. Удалите из нее все содержимое (чтобы папка осталась пустая), а затем скопируйте новые скачанные карты в эту папку.
Важно! Обязательно сравнивайте размер скачанного файла карты и заявленный размер этого файла на сайте. Если карта скачалась не полностью, то она не будет работать. В этом случае рекомендуется отключить все антивирусные программы и файерволы, а затем повторить закачку, либо воспользоваться одной из программ-загрузчиков (например, Download Master).
UUID и браузеры. Почему фронтенд живет без страшных айдишников?
Решил я делать свой пет-проект по учету прочитанных книг на PWA. Покорять новые технологии и все такое. Расчет был на то, что с его выложу и установлю на телефон и вот у меня есть мобильное приложение, которое можно использовать оффлайн. Хочу я сгенерировать UUID, чтобы сохранить книгу, а не нахожу API. Предлагаю разобраться почему.
Что такое UUID
UUID — стандарт идентификации данных используемый, преимущественно, для распределенных систем. Его задача позволить генерировать ключи, которые не вызовут конфликтов при сохранении в то, или иное хранилище данных.
UUID представляет собой 16-байтное число в HEX’е формате:
Здесь я не буду вдаваться в подробности, что из этого что означает. С этим вы подробно можете ознакомиться в википедии.
Способы генерации UUID
Все способы генерации UUID сводятся к тому, что мы берем уникальные данные клиента прогоняем через хеш-функцию и получаем наш 128-битный ключик.
1 и 2 версии использовали время с точностью до 0.1 микросекунды + MAC адрес, что гарантировало практически полное отсутствие возможности получить дубликат. Чтобы полностью добить эту вероятность первая версия добавляет рандомную соль, а вторая ничего не делает (вторую версию мы не любим, она вообще может сгенерировать только 64 уникальных id за семь минут).
3 и 5 хешируют пространство имен (Url, FQDN, OID) + само имя. Таким образом в каждый момент времени мы получаем абсолютно идентичные UUID для одних и тех же входных параметров.
Отличие 3 и 5 версии только в том, что 3 использует для хеширования MD-5, а 5 — SHA-1.
4 же версия просто использует рандом ¯_(ツ)_/¯.
Почему его нет в браузере
JS не имеет доступа к данным машины
Мы не можем получить MAC-адрес пользователя, мы не можем получить данные его IP, а так же вообще что-либо с его машины без разрешения пользователя.
Да, мы можем загружать файлы и делать красивые file-инпуты на фронте, но мы можем получить только конкретный файл, который нам предоставит пользователь. Но согласитесь, как бы не шибко удобно запрашивать на каждый UUID по файлу. Неудобно их запрашивать даже каждый раз при входе на сайт.
Сделано же это из благих целей: представьте, что читаете вы Хабр, а тут:
И больше никаких проблем с высшим образованием.
Потому что до недавних пор он был просто не нужен
Браузер для того, чтобы сидеть в интернете.
Через браузер мы заходим на сайт. Если мы зашли на сайт — нам отдали страничку. А раз нам ее отдали — значит мы связаны с сетевым узлом который может сгенерировать UUID и сами мы можем этого не делать. По факту, нам как фронту вообще на ID информации все равно, мы отдали, а дальше это уже проблема принимающей стороны.
Вы можете возразить, что есть PWA, и что оно есть аж с 2007 года. Но так уж вышло, что PWA никому не нужен, примерно, с того же самого времени. (Хотя нынче Play Market позволяет загружать PWA как приложения, но. ). Сами посудите, много вы PWA приложений установили? Я даже Хабр не поставил.
Но осадочек остался.
Какие трудности вас ждут
Точность времени
Я бы не стал называть это большой проблемой.
Мы можем получить время с точностью только до миллисекунды, в то время как первая версия UUID делала это с точностью до 100 наносекунд.
Ну чисто теоретически мы можем получить и с точностью до 1 микросекунды, но это будет время от открытия вкладки (это если мы сейчас про performance.now() ), что уже не так заманчиво.
Идентификация браузера
Браузеры вообще не уникальны и сейчас я вам это докажу.
Для идентификации клиента HTML Living Standard нам предлагает использовать The Navigator object.
А теперь внимание сравним то, что нам предлагают сравнивать
Браузер | appCodeName | appName | platform | product | productSub | vendor | vendorSub |
---|---|---|---|---|---|---|---|
Chrome | Mozilla | Netscape | Win32 | Gecko | 20030107 | Google Inc. | — |
Mozilla 75 | Mozilla | Netscape | Win32 | Gecko | 20100101 | — | — |
Mozilla 45 | Mozilla | Netscape | Win32 | Gecko | 20100101 | — | — |
Internet Explorer | Mozilla | Netscape | Win32 | Gecko | — | — | — |
Microsoft Edge | Mozilla | Netscape | Win32 | Gecko | 20030107 | Google Inc. | — |
Как вам такое? Почувствовали все разнообразие клиентов? Вот и я нет.
Но надо признать, что местами отличаются userAgent и appVersion :
Тут Edge впереди планеты всей, так как он отображает IP, и мы можем использовать его. Но это только в Edge. А так, как видите, многого с навигатором не навоюешь.
Как это реализовал я
Для себя я решил отталкиваться от своих нужд и особенностей архитектуры своего приложения.
Последние 6 байт я беру из SHA-1 хеша логина — можно идентифицировать 281,474,976,710,656 уникальных пользователей (если взять расчет на то, что не будет коллизий). Тоже с запасом (у меня их всего 30).
1 байт у нас отводится на версию (M) и вариант (N).
Оставшиеся 3 байта я солю рандомом.
Если вдруг мое приложение станет супер-пупер популярным и 100,000 и они будут за минуту каждый делать по 100 книг, то за миллисекунду будет генерироваться:
$$
100,000 * 100 / 60,000 = 166
$$
Вероятность того, что совпадут два:
Это очень мало и этого мне хватает
Реализацию можно посмотреть тут.
Предвещая вопрос «А почему же не рандом?»
Да, есть такой легендарный код
В моем случае на бэкенде UUID используется как первичный ключ.
Когда первые байты ключа идут по порядку больше вероятность, что новая запись встанет в конец таблицы. Даже если на клиенте будет запущена синхронизация. Ведь вряд ли юзер выполнит синхронизацию данных внесенных полгода назад и СУБД будет сдвигать половину таблицы.
В случае же с рандомом — данные будут вставляться в табличку куда ни попадя.