Открыть сервис

Идентификатор объекта

Идентификатор объекта (также объектный идентификатор, OID, от англ. Object Identifier) — это уникальный идентификатор, присваиваемый объекту в информационной системе, базе данных или распределённой среде для его однозначного распознавания, адресации и ссылки на него. Идентификатор обеспечивает возможность отличать один объект от другого в рамках заданного пространства имён, независимо от его атрибутов или местоположения.

История

Понятие идентификатора объекта возникло с развитием компьютерных систем и баз данных в 1960–1970-х годах. В ранних файловых системах и иерархических базах данных (например, IMS от IBM) для ссылок на записи использовались физические адреса на диске, что было ненадёжно при реорганизации данных. Переход к реляционной модели данных, предложенной Эдгаром Коддом в 1970 году, потребовал логических, а не физических способов идентификации. В реляционных базах данных роль идентификатора объекта стала выполнять первичный ключ (primary key) — уникальное значение, присваиваемое каждой строке таблицы.

В 1980-х годах с развитием объектно-ориентированного программирования и объектно-ориентированных баз данных (например, GemStone, ObjectStore) появилась потребность в идентификаторах, которые были бы независимы от содержимого объекта и не менялись при его перемещении в памяти или на диске. Такие идентификаторы стали называть OID (Object Identifier) в контексте объектных систем.

Параллельно в 1988 году Международная организация по стандартизации (ISO) и Международная электротехническая комиссия (IEC) приняли стандарт ISO/IEC 8824 (ASN.1), который определил иерархическую систему глобальных идентификаторов объектов (OID) для использования в протоколах передачи данных, в частности в SNMP (Simple Network Management Protocol) и X.500. Эта система OID представляет собой древовидную структуру, где каждый узел имеет числовой код, а полный идентификатор — это последовательность чисел, разделённых точками (например, 1.3.6.1.2.1.1.1.0).

В 1990-х годах с распространением веб-технологий и XML (Extensible Markup Language) возникла потребность в универсальных идентификаторах ресурсов (URI) и, в частности, в URN (Uniform Resource Name), которые могут выступать в роли постоянных идентификаторов объектов. В 1998 году был предложен стандарт OID-URN (RFC 3061), позволяющий представлять OID в виде URN (например, urn:oid:1.3.6.1.2.1.1.1.0).

В России развитие систем идентификации объектов связано с внедрением государственных информационных систем, таких как Единая система идентификации и аутентификации (ЕСИА), Единый государственный реестр записей актов гражданского состояния (ЕГР ЗАГС), а также с системами управления базами данных (СУБД) отечественного производства, например, «Линтер», «Postgres Pro» и «Ред База Данных».

Классификация

Идентификаторы объектов можно классифицировать по нескольким признакам.

По области действия

  • Локальные идентификаторы — действуют в пределах одной системы, базы данных или приложения. Примеры: идентификатор записи в таблице (ID), номер строки в Excel, идентификатор процесса в операционной системе (PID).
  • Глобальные идентификаторы — уникальны в масштабах всего мира или распределённой сети. Примеры: OID по стандарту ISO/IEC 8824, UUID (Universally Unique Identifier), DOI (Digital Object Identifier), ISBN (International Standard Book Number), ИНН (идентификационный номер налогоплательщика) в России.

По способу генерации

  • Последовательные (автоинкрементные) — генерируются автоматически системой с увеличением на единицу (или другой шаг) при создании нового объекта. Используются в реляционных базах данных (например, SERIAL в PostgreSQL, AUTO_INCREMENT в MySQL).
  • Случайные (вероятностные) — генерируются на основе случайных чисел с высокой вероятностью уникальности. Пример: UUID версии 4 (RFC 4122).
  • Содержательные (семантические) — идентификатор несёт смысловую нагрузку, например, код страны, регион, год. Пример: ИНН в России (первые две цифры — код региона, следующие две — код налоговой инспекции, затем порядковый номер и контрольное число).
  • Хеш-функции — идентификатор вычисляется как хеш от содержимого объекта (например, SHA-1, MD5). Используются в системах контроля версий (Git — идентификатор коммита) и в распределённых файловых системах (IPFS).

По типу носителя

  • Цифровые — числовые последовательности (например, 12345, 1.3.6.1.2.1.1.1.0).
  • Строковые — буквенно-цифровые коды (например, «A1B2C3», «urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6»).
  • Бинарные — представлены в виде последовательности байтов, часто используются в низкоуровневых протоколах.

Устройство и характеристики

Структура OID по стандарту ISO/IEC 8824

OID представляет собой последовательность целых неотрицательных чисел, разделённых точками. Корневая иерархия включает три узла:

Пример: OID 1.3.6.1.2.1.1.1.0 расшифровывается как:

  • 1 — ISO;
  • 3 — организация, зарегистрированная в ISO (в данном случае — DoD, Министерство обороны США);
  • 6 — Internet (поддерево для интернет-протоколов);
  • 1 — IETF (Internet Engineering Task Force);
  • 2 — Management (управление);
  • 1 — MIB (Management Information Base);
  • 1 — System (системная группа);
  • 1 — sysDescr (описание системы);
  • 0 — экземпляр объекта.

Структура UUID (RFC 4122)

UUID — это 128-битное число, обычно представляемое в виде 32 шестнадцатеричных цифр, разделённых дефисами в формате 8-4-4-4-12 (например, 550e8400-e29b-41d4-a716-446655440000). UUID содержит поля:

  • time_low (4 байта) — младшие 32 бита времени;
  • time_mid (2 байта) — средние 16 бит времени;
  • time_hi_and_version (2 байта) — старшие 16 бит времени и версия UUID;
  • clock_seq_hi_and_reserved (1 байт) — старшие биты последовательности часов и зарезервированные биты;
  • clock_seq_low (1 байт) — младшие 8 бит последовательности часов;
  • node (6 байт) — MAC-адрес узла (для версии 1) или случайное число (для версии 4).

Требования к идентификаторам

  • Уникальность — в пределах заданного пространства имён не должно быть двух одинаковых идентификаторов.
  • Неизменность — идентификатор не должен меняться в течение всего жизненного цикла объекта.
  • Компактность — для эффективного хранения и передачи.
  • Устойчивость к коллизиям — особенно для случайных и хеш-идентификаторов.
  • Возможность проверки — например, контрольная сумма в ИНН или ISBN.

Применение

В базах данных

В реляционных базах данных идентификатор объекта (первичный ключ) используется для однозначной идентификации строки таблицы, обеспечения ссылочной целостности (через внешние ключи) и ускорения поиска (через индексы). В объектно-реляционных СУБД (например, PostgreSQL) существует специальный тип данных OID, который может использоваться для ссылок на системные объекты (таблицы, функции, типы).

В сетевых протоколах

В протоколах SNMP (Simple Network Management Protocol) и LDAP (Lightweight Directory Access Protocol) OID используются для идентификации управляемых объектов, таких как параметры сетевых устройств (маршрутизаторов, коммутаторов), атрибуты записей в каталогах (например, имя пользователя, пароль, адрес электронной почты).

В цифровых сертификатах и криптографии

В инфраструктуре открытых ключей (PKI) OID используются для идентификации алгоритмов шифрования, типов сертификатов, политик сертификации. Например, OID 1.2.840.113549.1.1.5 обозначает алгоритм подписи SHA-1 с RSA.

В издательском деле и науке

DOI (Digital Object Identifier) — это система постоянных идентификаторов для цифровых объектов (статей, книг, данных). DOI присваивается через реестр, управляемый International DOI Foundation. В России DOI активно используется в научных журналах, входящих в Российский индекс научного цитирования (РИНЦ).

В государственных информационных системах России

В России идентификаторы объектов широко применяются в государственных информационных системах:

  • СНИЛС (страховой номер индивидуального лицевого счёта) — идентификатор гражданина в системе персонифицированного учёта Пенсионного фонда России (Социальный фонд России).
  • ИНН (идентификационный номер налогоплательщика) — идентификатор физического или юридического лица в налоговой системе.
  • ОГРН (основной государственный регистрационный номер) — идентификатор записи о создании юридического лица в Едином государственном реестре юридических лиц (ЕГРЮЛ).
  • КПП (код причины постановки на учёт) — идентификатор, дополняющий ИНН для организаций.

В веб-технологиях

В веб-фреймворках и API (REST, GraphQL) идентификаторы объектов используются для адресации ресурсов. Например, в RESTful API идентификатор объекта может быть частью URL (например, /api/users/123). В GraphQL идентификатор объекта часто реализуется через интерфейс Node с полем id.

Примеры

  • UUID версии 4: 550e8400-e29b-41d4-a716-446655440000 — используется для идентификации сессий, пользователей, заказов в веб-приложениях.
  • OID для SNMP: 1.3.6.1.2.1.1.1.0 — идентификатор системного описания устройства (sysDescr).
  • DOI: 10.1000/182 — идентификатор книги «The DOI Handbook».
  • ISBN-13: 978-5-17-123456-7 — идентификатор книги, изданной в России.
  • ИНН физического лица: 123456789012 — 12-значный номер, присваиваемый налоговой службой.
  • Идентификатор процесса в Linux: 12345 — PID, присваиваемый ядром операционной системы.

Критика и ограничения

  • Проблема коллизий — для случайных идентификаторов (UUID версии 4) теоретически возможны коллизии, хотя вероятность крайне мала (порядка 2^-122). Для критически важных систем (например, ядерных реакторов, финансовых транзакций) рекомендуется использовать гарантированно уникальные идентификаторы.
  • Семантическая нагрузка — содержательные идентификаторы (например, ИНН с кодом региона) могут раскрывать информацию об объекте, что может быть нежелательно с точки зрения конфиденциальности.
  • Изменяемость — некоторые идентификаторы могут меняться при изменении атрибутов объекта (например, переезд организации может изменить КПП). Это нарушает принцип неизменности.
  • Управление пространством имён — для глобальных идентификаторов (OID, DOI) требуется централизованный реестр, что создаёт административные и финансовые издержки.
  • Совместимость — разные системы могут использовать разные форматы идентификаторов, что затрудняет интеграцию. Например, UUID в формате 8-4-4-4-12 несовместим с OID в формате чисел, разделённых точками.

Источники

  • ISO/IEC 8824-1:2021 «Information technology — Abstract Syntax Notation One (ASN.1) — Part 1: Specification of basic notation»
  • RFC 4122 «A Universally Unique IDentifier (UUID) URN Namespace»
  • RFC 3061 «A URN Namespace of Object Identifiers»
  • Кодд, Э. Ф. «A Relational Model of Data for Large Shared Data Banks» (1970)
  • Документация PostgreSQL: «Object Identifier Types»
  • Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных» (в части идентификации граждан)
  • Постановление Правительства РФ от 08.09.2010 № 697 «О единой системе идентификации и аутентификации в инфраструктуре, обеспечивающей информационно-технологическое взаимодействие информационных систем, используемых для предоставления государственных и муниципальных услуг в электронной форме»

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →