Главная » Microsoft SQL Server, Базы данных » Что использовать: CLR или T-SQL

0

Несомненно, редко можно встретить реализацию, которая совершенно не использует CLR. Однако некоторые реализации используют в базе данных исключительно компоненты CLR. Ни один из этих подходов нельзя назвать приемлемым, если на первое место выходят такие фундаментальные понятия, как масштабируемость и производительность.

В большинстве реализаций первым шагом в направлении интеграции CLR было обеспечение высокой скорости посредством замещения существующих проблематичных пользовательских функций и хранимых процедур их более производительными эквивалентами — компонентами CLR. Никто не говорит, что плохо написанный компонент базы данных может быть преобразован в плохо написанный объект CLR, и все сразу станет хорошо. Наличие опыта оптимизации и мониторинг производительности остаются ключевыми предпосылками создания хорошей модели базы данных. В то же время ряд существующих очевидных проблем дает нам в руки материал для преобразования в объекты CLR.

?               Существующие расширенные хранимые процедуры СОМ подвергают риску устойчивость всего сервера базы данных. Пользовательские расширенные хранимые процедуры следует рассматривать как первых кандидатов на преобразование в компоненты интеграции CLR.

?               Хранимые процедуры автоматизации OLE также завоевали и постоянно подтверждают дурную репутацию расширенных хранимых процедур за плохую обработку ошибок, низкую производительность, утечки памяти и нечеткость отношений между уровнем Т-SQL и средой СОМ. Безопасность управляемого программного кода бесспорно является привлекательной альтернативой хранимым процедурам sp_OA.

?               Сложные правила бизнес-логики и логики, содержащей интенсивные вычисления, в существующих хранимых процедурах и функциях могут получить преимущества компилируемого кода и потоковых табличных функций. Обработка массивов на сервере баз данных теперь стала возможной, равно как и компилированные групповые консолидации правил бизнес-логики.

?               Сложные правила бизнес-логики и логики, содержащей интенсивные вычисления, в настоящее время реализуются путем перемещения больших массивов данных по сети для обработки на среднем уровне. Если эту обработку вынести на сервер, то можно высвободить ресурсы сети и применить более совершенную модель ввода-вывода.

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

?               Параметризованная обработка списков и прочие операции манипулирования строками и их проверки, которые в настоящее время требуют итераций и большого объема программного кода, могут быть просто и эффективно реализованы в типах CLR базы данных с использованием членов типа данных string среды .NET и мощного класса REGEX.

?               Безопасность и устойчивость сервера подвергаются риску, когда для доступа к файловой системе, сетевым ресурсам или прочим внешним данным с помощью интерфейса OLEDB или служб командной строки используется Т-SQL. Модель безопасности CAS среды выполнения CLR предоставляет собой ценный уровень абстракции системы безопасности между SQL Server и внешним миром, поскольку рассматривает программный код, а не отдельных пользователей. Еще одним доказательством преимуществ использования компонентов CLR в качестве интерфейса между SQL Server и внешними ресурсами является то, что CLR реализует элегантные методы создания табличного вывода в ядре базы данных из нетабличных данных.

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

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии