Компания, в которой я работаю, только что перешла на AWS - и в настоящее время у них есть одна очень большая центральная база данных с экземпляром, который в настоящее время находится в Америке.
Однако один из их клиентов потребовал, чтобы все его данные хранились в ЕС. Таким образом, создание экземпляра AWS в Ирландии не проблема, проблема в базе данных и в том, как ею управлять.
Мы рассматривали возможность создания другой базы данных, которая будет работать в ЕС для европейских клиентов, и использовать другой этап первичного ключа, чтобы первичные ключи никогда не конфликтовали, если в будущем потребуется объединить два местоположения.
Проблема в том, что если у нас есть клиент, который использует нашу систему как в Америке, так и в ЕС, нам придется создать 2 учетных записи для этого пользователя, и создание отчетов по обоим регионам будет невозможно, поскольку время подключения будет слишком большим.
Есть ли альтернатива для этого?
Прежде всего, вы можете определить первичный автоинкрементный ключ, например 2n (четное число) для ЕС и 2n + 1 (нечетное число) для США, поскольку эти учетные записи находятся в обоих местах, вы должны определить для них первичное расположение и определить ключ по первичному расположению. Таким образом не будет конфликта ключей, но вы легко объедините данные из двух местоположений. Во-вторых, для отчетности вы можете создавать отчеты по выставлению счетов для двух местоположений отдельно и объединять платежную информацию для учетных записей, находящихся в обоих местоположениях.
Вы думали о создании Кластер MySQL для достижения этой цели?
Возможно, вы захотите изучить распределенные транзакции. Распределенные транзакции поддерживаются механизмом хранения MySQL InnoDB. Вот ссылка чтобы вы начали.