Идентификатор — понятие идентификации в информатике¶
Идентификатор (от лат. identificare — «тотождествлять», «опознавать»; сокращённо ID) — обозначение (метка, код, номер, строка символов), однозначно отличающее объект (человека, данные, устройство, процесс, ресурс) от всех других объектов в заданной области рассмотрения. Идентификатор отвечает на вопрос «кто это?» или «что это?» и служит основой систем учёта, поиска и управления.
¶Общие свойства
Ключевые требования к идентификатору:
- Уникальность — в пределах области действия два разных объекта не должны иметь одинаковый идентификатор.
- Постоянство — в идеале ID не меняется на протяжении жизненного цикла объекта, даже если изменяются его свойства (имя, адрес, состояние).
- Независимость от содержания — идентификатор, как правило, не кодирует свойства объекта, а лишь ссылается на него. Исключение — составные идентификаторы, частично отражающие классификацию.
- Машиночитаемость — идентификатор должен удобно обрабатываться автоматически: храниться, сортироваться, сравниваться.
Идентификатор не следует путать с адресом (который указывает местоположение) и с именем (которое может меняться и не обязано быть уникальным).
¶Классификация
¶По способу назначения
- Присваиваемые — выдаются системой учёта при регистрации объекта (номер паспорта, инвентарный номер, порядковый ID записи в базе данных).
- Вычисляемые — определяются из свойств объекта (контрольная сумма, хеш, ИНН, номер версии).
- Естественные — изначально присущие объекту (дата рождения, место рождения человека; серийный номер процессора от производителя).
¶По структуре
- Простые — непрерывная последовательность символов без внутренней структуры (например,
42,A7F3). - Составные (иерархические) — состоят из нескольких частей, каждая из которых кодирует признак (код товара, структура почтового индекса, библиотечный шифр).
- Универсальные — глобально уникальные, рассчитанные на работу в распределённых системах без центрального органа выдачи (UUID, GUID, DOI).
¶Идентификаторы в информатике
¶Идентификаторы в программировании
В языках программирования идентификатор — это имя, которым программист обозначает переменную, функцию, тип, класс или модуль. Правила записи определяются синтаксисом конкретного языка: например, в C и Java идентификатор начинается с буквы или подчёркивания и состоит из букв, цифр и подчёркивания; в Python дополнительно допускается Unicode. Идентификаторы чувствительны к регистру во многих языках (C, Java, Python, JavaScript), но не в некоторых других (SQL по умолчанию, Basic). Зарезервированные слова языка не могут использоваться как идентификаторы.
¶Идентификаторы в базах данных
В реляционных базах данных идентификатор строки называется первичным ключом. Он обеспечивает уникальность каждой записи таблицы и служит целью для ссылок из других таблиц (внешние ключи). Типичные реализации — автоинкрементное целое число, естественный бизнес-код, UUID. Суррогатный ключ — искусственно созданный идентификатор, не несущий бизнес-смысла, но удобный для связей.
¶Сетевые идентификаторы
- IP-адрес — идентификатор узла в компьютерной сети (IPv4 — 32 бита, IPv6 — 128 бит).
- MAC-адрес — аппаратный идентификатор сетевого интерфейса, назначаемый производителем (48 бит).
- URL/URI — идентификатор ресурса в интернете.
- ISBN, ISSN, DOI — идентификаторы книг, периодических изданий и научных публикаций соответственно.
¶Идентификаторы процессов и объектов ОС
Операционные системы присваивают идентификаторы процессам (PID), пользователям (UID), группам (GID), устройствам (в Unix устройства представляются файлами со специальными номерами). В Windows для объектов ядра используются дескрипторы, а COM-объекты идентифицируются глобальными уникальными идентификаторами (GUID).
¶Идентификаторы в документах и учёте
В России идентификаторами выступают СНИЛС (11 цифр, присваивается Пенсионным фондом), ИНН (10 или 12 цифр, присваивается налоговой службой), номер и серия паспорта, регистрационный номер транспортного средства. Международные примеры — Social Security Number в США, NINO в Великобритании.
¶Генерация идентификаторов
Для распределённых систем применяются алгоритмы, гарантирующие уникальность без центрального координатора. Наиболее известен стандарт UUID (RFC 4122), предусматривающий 128-битные идентификаторы, генерируемые на основе времени, случайных чисел или MAC-адреса. В России разработан аналог — универсальный идентификатор документа УИД, применяемый в системе электронного документооборота. Существуют также последовательные схемы (Snowflake от Twitter), сочетающие временную метку, идентификатор узла и счётчик.
¶Проблемы идентификации
- Коллизии — ситуация, когда два объекта получают одинаковый идентификатор. Вероятность коллизий для хеш-идентификаторов оценивается формулой парадокса дня рождения.
- Дефицит пространства — при 32-битных адресах IPv4 адреса закончились в 2011 году, что ускорило переход на IPv6.
- Приватность — идентификаторы, связанные с личностью, являются персональными данными и подпадают под правовое регулирование (в России — Федеральный закон № 152-ФЗ «О персональных данных»).
¶См. также
- Первичный ключ
- UUID
- Идентификация
- СНИЛС
- ИНН
¶Источники
- Клод Дэйт. Введение в системы баз данных
- RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace
- ГОСТ Р ИСО/МЭК 6523-2004. Информационные технологии. Структура идентификаторов организаций
- Федеральный закон № 152-ФЗ «О персональных данных»
