Внутренний код записи используется для однозначной идентификации одной и той же записи на разных серверах репликации информационной системы. Если при работе с одним сервером уникальность ключевых полей в таблицах базы данных контролируется на этапе ввода данных, то при параллельной работе на нескольких серверах контроль уникальности осуществляется независимо на каждом сервере, и при репликации данных могут возникнуть конфликты неуникальности ключевых полей.
В IS-Builder проблема неуникальности ключевых полей решается путем задания непересекающихся интервалов внутренних кодов для всех серверов репликации.
Интервал внутренних кодов для сервера указывается в установках репликации. Подробнее см. раздел «Установки репликации».
При определении величины интервалов внутренних кодов необходимо придерживаться правил:
• | интервалы, выделенные для серверов, не должны пересекаться между собой; |
• | на каждый сервер выделяется интервал, достаточный для его работы; |
• | не рекомендуется выделять для серверов интервалы, получаемые простым делением максимально возможного значения внутреннего кода (это 4 294 967 295 или 2 147 483 647, если использовать только положительные значения) на количество работающих серверов, т.к. в этом случае теряется возможность корректной инсталляции новых серверов; |
• | если интервал для сервера оказывается исчерпан (система сама сообщит об этом в нужный момент), то администратор может задать для сервера новый интервал, не пересекающийся с интервалами, выделенными когда-либо для других серверов и не выходящий за пределы максимально возможного значения внутреннего кода. |
Рекомендуемая ширина интервала внутренних кодов 50 000 000. Если считать, что на каждом сервере ежедневно вводят по 10 000 записей, то такой ширины интервала хватит на 13 лет работы (50000000/3650000 лет, т.к. 10000 записей * 365 дней = 3 650 000 записей в год) и на 43 сервера репликации (2 147 483 647 / 50 000 000).
Например, если система используется на 3 серверах, то интервалы внутренних кодов на 13 лет работы системы для каждого сервера будут следующими:
• | для первого сервера: от 1 до 50 000 000; |
• | для второго сервера: от 50 000 001 до 100 000 000; |
• | для третьего сервера: от 100 000 001 до 150 000 000. |
Значения, начиная со 150 000 001, свободны для выделения в качестве интервалов новым серверам или для увеличения интервалов уже имеющихся серверов.