Создание федерации Azure SQL было отделено от последней цифры INT/LONGINT?

Допустим, таблица имеет первичный ключ (CustId) типа int или же longint, Мы хотели бы объединить эту таблицу в объединенную таблицу в зависимости от того, OrderId странный или четный т.е.

Федеративный "первичный ключ" = (Fed_key, CustId) где OrderId имеет тип int или же longint а также Fed_key знак равно 0 если CustId== даже, 1 если CustId== нечетно.

Например:

CustId = 1234 => Federated 'primary key' = (0,1234) 

CustId = 6789 => Federated 'primary key' = (1,6789)

Это в основном дает нам 2 члена федерации (он же разделы). Позже мы можем сгруппировать Fed_key в (1,3,5), (2,4,6) и (7,8,9,0) для дополнительных разделов. Мы не думаем, что нам понадобится более 5 разделов.

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

2 ответа

Решение

Во-первых, мы перешли от идентификатора INT/LONGINT к идентификаторам GUID / uniqueidentifiers для неэкранированного первичного ключа. GUID создаются на уровне приложения. Внутри самого уровня приложения мы выбираем последний клочок guid и решаем параметр partitionId.

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

Из документов ( ссылка):

Столбец федерации не может быть постоянным или непостоянным вычисляемым столбцом.

кроме того, если у клиента несколько заказов, вы действительно хотите запросить x количество членов федерации, чтобы получить все заказы?

Другие вопросы по тегам