UIID это

Преимущества перед AI

  • Сокрытие информации.  Если кто-то видит, что в вашей системе есть, например, пользователь с ID 42, он может понять, что в системе как минимум 42 пользователя, а также что в системе скорее всего есть пользователи 41 и 43. По UUID он мало что поймёт.
  • Источник идентификатора. UUID может быть сгенерирован как на стороне приложения, так и на стороне СУБД. В случае с автоинкрементом, только на стороне СУБД.
  • Шардирование. Во многом выходит из предыдущего пункта. Держать распределённый счётчик часто тяжело, и с увеличением числа узлов будет страдать быстродействие системы. С UUID такой проблемы нет.
  • Репликация и распределение: UUID хорошо подходят для распределенных систем, так как они позволяют генерировать уникальные ключи в разных узлах без необходимости координации. Это может улучшить масштабируемость и упростить репликацию данных.

Недостатки

  • UUID версий 1, 2, 3, 4 и 5 не являются монотонно возрастающими. Если использовать эти версии в качестве первичных ключей, вставки будут случайными, а данные будут разбросаны по диску (для InnoDB). Со временем, по мере увеличения размера базы данных, поиск будет происходить все медленнее и медленнее.
    Производительность индексации: Поскольку UUID не являются последовательными, они могут привести к частой фрагментации индексов. Это может замедлить операции вставки, так как индексные структуры (например, B-деревья) становятся менее эффективными при размещении неупорядоченных ключей
  • Размер первичного ключа.

Новые версии

https://uuid.ramsey.dev/en/stable/rfc4122/version6.html#rfc4122-version6

https://uuid.ramsey.dev/en/stable/rfc4122/version7.html#rfc4122-version7

6 и 7 версия UUID лишина недостатков:

  • Разбросанные записи в базе данных
  • Невозможность сортировки по идентификатору (например, в порядке вставки)

Version 6 UUIDs provide an excellent solution for those who need monotonically increasing, sortable UUIDs with the features of version 1 UUIDs (MAC address and clock sequence), but if those features aren’t necessary for your application, using a version 6 UUID might be overkill.

Version 7 UUIDs combine random data (like version 4 UUIDs) with a timestamp (in milliseconds since the Unix Epoch, i.e., 1970-01-01 00:00:00 UTC) to create a monotonically increasing, sortable UUID that doesn’t have any privacy concerns, since it doesn’t include a MAC address.

Полезные ссылки


Андрей Писаревский

Автор: Андрей Писаревский 

PHP | WordPress Team Lead. Имею коммерческий опыт в программировании с 2010 года и экспертизу в полном цикле веб разработки: Frontend, Backend, QA, Server administration, управление крупными командами и Enterprise проектами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *