Могут ли первичные ключи CockroachDB не синхронизироваться?
Я знаю, что в PostgreSQL, если вы используете автоматически сгенерированные первичные ключи, они могут не синхронизироваться (что не позволяет вставлять новые строки, поскольку автоматически сгенерированный идентификатор уже присутствует в первичном ключе).
Это проблема в CockroachDB? Я мог бы предположить, что это может быть потому, что он распределен, и нет простого способа проверить существующие значения, используемые в первичном ключе.
1 ответ
К счастью, CockroachDB не сталкивается с этой проблемой с автоматически генерируемыми первичными ключами (известными как SERIAL). Это достигается путем генерации целого числа с использованием как метки времени, так и идентификатора узла, выполняющего вставку. Эта комбинация, вероятно, будет уникальной во всем мире, за исключением крайних случаев.
Поскольку это значение уникально (за исключением невероятно редких случаев), вам не нужно беспокоиться об отклонении вставки из-за автоматически сгенерированного первичного ключа. Это также не может застрять, так как новое значение генерируется при каждой попытке.
Примечание: генерация SERIAL
значения также выполняются быстрее, чем что-то вроде AUTO INCREMENT
в распределенной системе, потому что она не требует узлов для координации друг с другом.