Столбец идентификации SQL Server 2000/2005 + репликация

Я уже просмотрел некоторые ресурсы и просто хочу уточнить и узнать мнение.

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

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

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

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

Итак, если вы выделите диапазоны 1-10 и 11-20 2 серверам, как только каждый сервер вставит 10 строк, у вас будут семена 1-20 в обеих базах данных?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
2 027
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Существует опция «НЕ ДЛЯ РЕПЛИКАЦИИ», которую можно применить к столбцам идентификаторов (а также к триггерам и другим ограничениям).

В вашем примере server1 будет набирать 1-10, но просто принимает реплицированные 11-20.

Несколько способов посадки семян:

Либо: установите начальное значение / приращение НЕ ДЛЯ ПОВТОРЕНИЯ как это

  • Семя 1, прирост 2
  • Семя 2, прирост 2
  • Семя -1, прирост -2
  • Семя -2, прирост -2
  • Семя 1000000001, шаг 2
  • Семя 1000000002, шаг 2
  • Семя -1000000002, приращение -2
  • Семя -1000000001, инкремент -2

Это дает вам 500000000 на сервер для 8 серверов.

Или же: Добавьте второй столбец с именем ServerID, чтобы указать составные ключи, используйте НЕ ДЛЯ ПОВТОРЕНИЯ для столбца идентификатора

Это масштабируется, скажем, до 256 серверов для tinyint с 2 ^ 32 строками на сервер.

В любом случае работает ...

Другие вопросы по теме