Spec-Zone.ru › MySQL Connectors 1.0

5.3 Понимание идентификаторов документов

В этом разделе подробно описывается, как генерируются идентификаторы документов и как их интерпретировать. X DevAPI полагается на генерацию идентификаторов документов на сервере, что приводит к последовательно возрастающим идентификаторам документов для всех клиентов. использует идентификатор документа в качестве первичного ключа, что обеспечивает эффективное разделение страниц и реорганизацию деревьев.

В этом разделе описываются свойства и формат автоматически сгенерированных идентификаторов документов.

Свойства идентификатора документа

Поле _id документа ведет себя так же, как и любые другие поля документа при запросах, за исключением того, что его значение нельзя изменить после вставки в коллекцию. Поле _id используется в качестве первичного ключа коллекции. Можно переопределить автоматическую генерацию идентификаторов документов, вручную включив идентификатор в вставляемый документ.

Важно

X Plugin не отслеживает данные, вставленные в коллекцию, включая любые ручные идентификаторы документов, которые вы используете. При использовании ручных идентификаторов документов необходимо убедиться, что они не конфликтуют с любыми идентификаторами, которые могут быть сгенерированы сервером автоматически (см. Генерация идентификаторов документов для получения подробной информации), чтобы избежать ошибок из-за дублирования первичных ключей.

В случае, если значение поля _id отсутствует во вставляемом документе, сервер генерирует значение _id. Сгенерированное значение _id для документа возвращается клиенту в рамках объекта Result (Result для Connector/J) операции add(). Если вы используете X DevAPI в InnoDB Cluster, автоматически сгенерированный _id должен быть уникальным для всего кластера. Установив уникальное значение для каждого экземпляра кластера, вы можете гарантировать уникальность идентификаторов документов во всех экземплярах.

Поле _id должно быть последовательным (всегда увеличивающимся) для оптимальной производительности вставки в InnoDB (по крайней мере, в рамках одного сервера). Последовательность значений _id сохраняется после перезагрузки сервера.

В многоглавном окружении Group Replication или InnoDB Cluster сгенерированные значения _id таблицы уникальны для каждого экземпляра, чтобы избежать конфликтов первичных ключей и минимизировать подтверждение транзакций.

Генерация идентификаторов документов

В этом разделе описывается формат идентификаторов документов.

Формат автоматически сгенерированного идентификатора документа:

unique_prefix start_timestamp serial
4 байта 8 байт 16 байт

Где:

  • unique_prefix — значение, назначенное InnoDB Cluster экземпляру, которое используется для обеспечения уникальности идентификатора документа в рамках всех экземпляров одного кластера. Диапазон значений unique_prefix от 0 до 216-1, представлен в шестнадцатеричном формате. Значение по умолчанию — 0, если оно не установлено ни InnoDB Cluster, ни системной переменной.

  • start_timestamp — отметка времени запуска экземпляра сервера, представлена в шестнадцатеричном формате. В маловероятном случае переполнения значения serial значение start_timestamp увеличивается на 1, а значение serial возвращается к 0.

  • serial — автоматически увеличивающийся целочисленный порядковый номер значения для каждого экземпляра, представлен в шестнадцатеричном формате и имеет диапазон от 0 до 264-1. Начальное значение serial устанавливается системной переменной, а шаг увеличения значения устанавливается системной переменной.

Этот формат идентификатора документа гарантирует, что:

  • Значение первичного ключа монотонно увеличивается для вставок, исходящих из одного экземпляра сервера, хотя интервал между значениями не является однородным внутри таблицы.

  • При использовании многоглавного Group Replication или InnoDB Cluster вставки в одну и ту же таблицу из разных экземпляров не имеют конфликтующих значений первичного ключа, при условии, что у экземпляров правильно настроены системные переменные и (см. описания переменных для получения подробной информации).

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/x-devapi-userguide-en/understanding-automatic-document-ids.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API