Создание федерации 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 количество членов федерации, чтобы получить все заказы?