Я работаю над распределенной системой, использующей принципы CQRS и DDD. Исходя из этого, я решил, что первичными ключами моих объектов должны быть команды, которые генерируются моим доменом (а не базой данных).Первичный ключ в базе данных Azure SQL
Я читал о гидах как первичных ключах. Однако, похоже, что некоторые из лучших практик уже недействительны, если они применяются к базе данных Azure SQL.
Последовательные идентификаторы GUID хороши, если вы используете на компьютере сервера SQL Предпосылки - последовательные идентификаторы GUID, которые создаются всегда будут уникальными. Однако на Azure это уже не так. Как обсуждалось в this thread, оно больше не поддерживается; и их генерация также является плохой идеей, так как она становится единственной точкой отказа, и она не будет гарантирована уникальным образом на всех серверах. Я предполагаю, что последовательные подсказки не имеют смысла на Azure, поэтому я должен придерживаться регулярных указаний. Это верно?
Столбцы типа Guid являются плохими кандидатами для кластеризации. Но this article утверждает, что это не так на Azure, и this one предлагает противоположное! Во что я должен верить? Должен ли я просто сделать свой первичный ключ ориентиром и оставить его кластеризованным (поскольку это по умолчанию для первичных ключей); или я не должен кластеризовать его и выбрать другой столбец для кластеризации?
Спасибо за понимание!
Оба cqs & ddd не требуют, чтобы первичный ключ был GUID. Тип первичного ключа должен основываться только на типе данных, которые он должен хранить, а не на некоторых блогах. GUID плохо подходит для отладки, это очень важно для корреляции, и клиент/пользователи будут жаловаться на то, почему вы не могли использовать простые номера для идентификации объектов. –
Я все еще ищу авторитетные ответы, а не догадки. Вот почему я не наградил щедрость. – jgauffin