Создание федерации 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? Я предполагаю, что это нужно будет сделать во время создания федерации или создания объединенной таблицы.


person DeepSpace101    schedule 15.03.2013    source источник


Ответы (2)


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

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

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

person JuneT    schedule 16.03.2013
comment
Вы правы, я заметил не ту колонку. Долгий день. Он разделен на CustId. - person DeepSpace101; 16.03.2013

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

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

person DeepSpace101    schedule 16.03.2013