Сім рекомендацій з використання CLR

Мова CLR у складі SQL Server 2005 – основна зміна движка SQL Server в частині моделі програмування. Мова CLR дозволяє доповнювати функціональність движка бази даних SQL Server скалярними функціями, табличними функціями (TVF), процедурами, тригерами, агрегації і користувацькими типами даних (UDT). Перш ніж починати використовувати мову CLR, необхідно оцінити, як і навіщо використовувати засновані на CLR розширення в SQL Server. Для цього пройдемося за наступним списком.


N-рівневі програми продовжують жити. Наявність в CLR можливості перемістити обробку даних на сервер бази даних, не означає, що це треба робити. Пам'ятаєте, як дорого може обійтися перенесення виконання коду на сервер бази даних. Доведеться заплатити процесорним часом, пам'яттю для мережного обміну туди і назад і часом очікування мережі додатком (сервером). Це може бути вигідно, але майте на увазі, що ні один сервер не може мати нескінченної кількості ресурсів на обробку. Ось ключові критерії перекладу обробки даних на сервер бази даних: перший – при великій кількості обчислень і інтенсивних логічних операцій, в порівнянні з обробкою даних, другий – при зниженні витрат на пересилання туди і назад великого обсягу даних.


Додайте тільки прості типи даних. При розробці користувача типів даних ви обмежуєте себе примітивними типами даних на зразок поштового індексу, коду соціального забезпечення, точки, цілого числа зі знаком і так далі. Подумайте про те, як можна вибирати рядок, що містить для користувача тип. Як буде працювати план запитів при використанні цього типу? Чи можна будувати індекс по полях з призначеним для користувача типом? І як?


Розгляньте заміну розширених збережених процедур. Якщо ви розробили розширені процедури в SQL Server 2000 і в більш ранніх версіях, слід подумати про заміну таких процедур процедурами CLR чи функціями. CLR забезпечує більш безпечну і більше масштабовану середовище для виконання.


Відмовтеся від процедури sp_OA. Процедури sp_OA – це розширені процедури, які виконують запити до COM-об'єктів через відкладено-пов'язану (на базі IDispatch) модель. Більш детальну інформацію про це можна знайти за адресою http://msdn.microsoft.com/library/en-us/acdata/ac_8_qd_14_7bcc.asp. Процедури SQL CLR або функції – краща альтернатива, тому що в більшості випадків можна видалити залежність від COM-об'єктів, використовуючи вбудовані класи CLR. Коли процедур CLR потрібні взаємодія з COM, перемикайтеся на ранньо-пов'язану модель, яка підвищує продуктивність і зменшує ризик помилок при програмуванні і виконанні. Також CLR забезпечує кращу середу програмування для реалізації логічних потоків, циклів і так далі.


Не забудьте своїх клієнтів. Ви можете розширювати SQL Server, але завжди пам'ятайте, що на іншому кінці дроту – додаток, який має використовувати ці розширення. Більшість розширень CLR SQL (за винятком призначених для користувача типів) непрозоро для програми. Доступність для користувача типів даних пов'язана з API доступу до даних, яке ви використовуєте. Тільки нова бібліотека CLR System.Data.SqlClient і певною мірою OLE DB може мати доступ до призначених для користувача типів даних.


Думайте про управління версіями та підтримки


Visual Studio 2005 спрощує розвиток і впровадження розширень SQL CLR. Однак потрібне планування розробки, впровадження та управління версіями. Які об'єкти ви розгорнете в збірці? Складання реєструються в одному з трьох сегментів захисту: SAFE, EXTERNAL_ACCESS і UNSAFE. Правила безпеки визначають спосіб розробки збірки. Посилання і залежності між збірками ускладнюють управління версіями і наступні обслуговування, так що краще спростити їх.


Зміна додатків тільки заради використання процедур CLR, виконуючих основні операції T-SQL DML (INSERT, UPDATE, DELETE), не дає базі даних або додатки ніяких переваг. У даному випадку воно привносить лише непотрібні витрати і додаткові рівні складності. Використання мови T-SQL з рівня прикладного програми – як і раніше основний спосіб управління даними SQL Server.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*