Увеличьте размер приращения , чтобы соответствовать преимуществу GUID

StackOverflow https://stackoverflow.com/questions/1604107

Вопрос

Я подумывал о внедрении этой системы, но не могу отделаться от ощущения, что где-то здесь есть подвох.Одним из преимуществ использования GUID вместо увеличения int является то, что в будущем, если вы будете объединять базы данных вместе, у вас не возникнет никаких конфликтов из-за первичного ключа / идентификатора.Однако мой подход заключается в том, чтобы установить размер приращения равным X, где X - количество серверов, которые у меня, скорее всего, будут в будущем.Затем на каждом сервере пусть начальное значение будет увеличено по сравнению с начальным номером на предыдущем сервере.Таким образом, во время слияния не было бы столкновений с первичным ключом.Это безопасный, нормальный метод или я сошел с ума :)?Спасибо

Это было полезно?

Решение

При репликации SQL с несколькими мастерами у вас обычно есть первичные ключи, определенные как:

  • Направляющие
  • переменные с размером приращения > количество установок
  • значения int с фиксированным смещением

Недостатком GUID является то, что они могут быть сложнее для чтения и занимать немного больше места.Однако это позволяет вам масштабироваться до n экземпляры.

С целыми числами немного проще иметь дело.У них также есть преимущество в том, что они могут легко определить, какой сервер создал запись.Недостатком является то, что вы должны либо предсказать максимальное количество баз данных, которые могут быть объединены, либо угадать максимальное количество строк, которые может вставить один экземпляр.

Примером фиксированного смещения является:сайт A начинается с 0, сайт B начинается с 1 000 000, а сайт C начинается с 2 000 000.Эта схема работает нормально до тех пор, пока один сайт не вставит миллион строк.Эта схема может хорошо сработать для автомобилей в автосалонах, где маловероятно, что какой-либо один дилер когда-либо продаст более 1 000 000 автомобилей, и у вас могут быть сотни дилерских центров за время действия приложения.

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

Меня здесь пугает использование «наиболее вероятного». Вы предполагаете на будущее здесь, и, как правило, это не очень хорошая вещь для таких вещей. Почему бы не использовать GUID?

Что если вы добавите один дополнительный сервер поверх того, что, как вы думали, у вас будет? Я мог видеть, что вещи действительно усложняются очень быстро.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top