Поддержка SQL Azure HierarchyId?

Мне было интересно, может ли кто-нибудь точно подтвердить, поддерживает ли SQL Azure узлы иерархии и насколько он сопоставим с идентификатором иерархии SQL 2008 с точки зрения производительности/масштабируемости.

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

Я нашел ссылку на него как часть SQL Azure SU3, выпущенного в 2010 году, но в то же время у меня есть возражения от Microsoft, где они, по сути, сказали, что он не поддерживается в SQL Azure (прямо в отличие от официального объявления, к сожалению, не прямо ко мне, чтобы я не мог задать вопрос, как хотел бы)...

Я надеялся, что кто-то с небольшим опытом работы с Azure может сообщить мне, какая сторона верна, и если эта функция существует, сравнима ли производительность с SQL Server 2008?


person fyjham    schedule 27.03.2012    source источник
comment
Какие виды операций вас интересуют? Мы лишь немного используем тип HierarchyId в нашем проекте Azure (для сортировки версий сборки программного обеспечения), например order by cast('/' + replace(Version, '.', '/') + '/' as hierarchyid), поэтому тип должен быть там, но у меня нет опыта, что вы могли бы с ним сделать.   -  person Simon Opelt    schedule 27.03.2012
comment
В первую очередь, используя его для метода IsDescendantOf (есть и другие, которые мы используем, но если бы этот все еще работал, мы, вероятно, могли бы обойти остальные). Мы используем его в основном из-за производительности, которую он дает для запросов к массивным динамическим древовидным структурам.   -  person fyjham    schedule 28.03.2012


Ответы (1)


Да, SQL Azure поддерживает иерархию как тип данных и связанные функции. Описание поддерживаемых функций см. в этой статье. Перейдите к концу статьи для типа данных иерархии.

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

Однако мне интересно, что вы подразумеваете под выполнением «операций, критически важных для производительности». Вероятно, вам следует протестировать SQL Azure с точки зрения производительности, чтобы убедиться, что вы получаете от него то, что вам нужно.

person Herve Roggero    schedule 27.03.2012
comment
Спасибо за ссылку, вроде есть то, что нужно. Под операциями, критически важными для производительности, я подразумеваю, что я работаю с многогигабайтной базой данных, и фильтрация HierarchyId IsDescendantOf в наших запросах очень распространена — до такой степени, что, например, замена рекурсивного CTE для некоторых из них заставляет сервер базы данных работать на 100% ЦП до истечения времени ожидания для достижения точно такого же результата. Мы определенно намерены провести собственное тестирование производительности, я просто надеялся получить некоторые гарантии высокого уровня, прежде чем мы вложим достаточно средств, чтобы хотя бы протестировать производительность — на данном этапе перенос — это просто возможная идея. - person fyjham; 28.03.2012