Как именно мы можем обеспечить бесперебойный автоматизированный метод генерации ключей для приложения, которое ** работает во всех шардах ** - PullRequest
1 голос
/ 20 июля 2011

http://www.dbshards.com/articles/database-sharding-whitepapers/:

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

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

Я слышал об использовании GUID, но , поскольку GUID не гарантированно уникаленна разных машинах , я не вижу, как это будет работать надежно

Ответы [ 2 ]

1 голос
/ 20 июля 2011

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

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

1 голос
/ 20 июля 2011

Для MySQL вы можете использовать серверные переменные auto_increment_increment и auto_increment_offset , чтобы разные серверы генерировали разные идентификаторы во избежание коллизий. Это полностью зависит от вас, чтобы правильно настроить серверы, чтобы вы не получили дублирующиеся значения.

...