Я разрабатываю приложение, которое использует базу данных MySQL. Приложение выросло до такой степени, что оно работает на нескольких компьютерах в одной сети и имеет одну центральную базу данных, работающую на сервере. Все данные распределяются между сервером и ПК.
Я сделал синхронизацию, которая работает с сервера на ПК, но у меня возникают некоторые проблемы с синхронизацией новых данных из-за уникальных первичных ключей.
На данный момент я использую составное решение первичного ключа, где каждый распределенный ПК и БД имеют определенный идентификатор, а идентификатор составляется в первичном ключе с увеличением другого идентификатора.
Я хотел бы иметь возможность генерировать уникальный идентификатор из приложения перед вставкой в БД и иметь возможность легко синхронизировать новые данные на сервере.
Я много читал о UUID и их проблемах с кластеризацией в базах данных.
Мой вопрос: каков наилучший и правильный способ решения проблемы синхронизации распределенных баз данных и коллизий с первичными ключами?
Однажды я подумал о том, что если бы у меня был один первичный ключ автоинкремента int только для кластеризации и второй двоичный столбец UUID уникального ключа (16) для идентификации и отношений внешнего ключа? Будет ли добавление производительности лучше?
Спасибо.