Идентификаторы для информации о более чем одной БД / сервере - PullRequest
0 голосов
/ 18 сентября 2009

Я работаю над проектом, который я хочу, чтобы он был максимально гибким и масштабируемым с самого начала. Проблема, о которой я беспокоюсь, лучше всего описана Джошуа Шактером в «1001 * Основатели на работе» , который отметил это как одну деталь, которую он хотел бы запланировать заранее.

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

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

У вас есть центральный сервер, который раздает наборы номеров, или вы придумали что-то, что не является номерами? Вы используете случайные числа и надеетесь, что они никогда не столкнутся? Как бы то ни было, автоматически назначенные идентификаторы просто не летают.

Кто-нибудь здесь сталкивался с этой проблемой? Как можно выйти за рамки автоматически увеличиваемых идентификаторов или можно масштабировать их на несколько серверов?

Ответы [ 2 ]

2 голосов
/ 18 сентября 2009

Использовать GUID / UUID (глобально / универсально уникальный идентификатор). Теоретически он гарантированно уникален на нескольких машинах.

1 голос
/ 18 сентября 2009

GUID, ваши шансы на столкновение астрономически низки.

Также возможно иметь (как мы называли) SmartGUID (обычно называемые COMB GUIDS - см. этот анализ , в частности, стр. 7), где вы можете кодировать метку времени в GUID, Таким образом, вы получаете информацию о дате создания записи «бесплатно», то есть вы можете сохранить столбец отметки времени для даты и времени создания записи, которая возвращает часть того, что вы потеряли при переходе от 32-разрядного целого числа к 128-разрядному GUID. Они также могут быть гарантированно монотонными, в отличие от обычных идентификаторов GUID, которые могут быть полезны для кластерных индексов и для сортировки.

Вы также можете использовать составные ключи с каким-либо идентификатором сервера / базы данных с обычным идентификатором автоинкремента или автоматическим номером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...