(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

LINQ и SQL Server 2008

Источник: cyberguru

SQL Server 2008 располагает множеством новых и усовершенствованных функций, но одно новшество особенно заинтересовало разработчиков -- запрос с языковой интеграцией Language Integrated Query (LINQ). Существует много разновидностей LINQ, в том числе LINQ to XML, LINQ to Entities, LINQ over Dataset (VB и C#) и LINQ to SQL. Каждая разновидность LINQ имеет собственное назначение и может функционировать независимо, но специалисты по базам данных наиболее активно обсуждают LINQ to SQL.

Что такое LINQ для SQL?

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

Большинство разработчиков старались максимально приблизить разработку запросов к приложению. Это позволяло эффективно использовать инструментарий и приемы для извлечения данных, не осваивая Transact-SQL. Кроме того, в этом случае они не зависели от группы администраторов баз данных в процессе подготовки запросов. Один из инструментов, который должен помочь разработчикам в решении этой проблемы -- средство сопоставления Object-Relational Mapper.

С помощью Object-Relational Mapper разработчики могут преобразовать данные из реляционной модели в модель на основе ссылок. В основном средства O/R Mapper позволяют разработчикам оперировать с данными как с объектами, а не объединенными строками данных из нескольких таблиц, как в реляционных моделях баз данных.

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

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

LINQ to SQL -- компонент среды Visual Studio, который предоставляет разработчикам инфраструктуру для сопоставления ссылающихся объектов с реляционными данными, хранимыми в реляционных базах данных SQL Server. LINQ to SQL преобразует запросы LINQ в код Transact-SQL, выполняемый в базе данных SQL Server, а затем предоставляет методы для преобразования результатов из реляционной базы данных в необходимые приложению объекты. Благодаря LINQ to SQL разработчики баз данных могут использовать знакомую среду Visual Studio и привычные объектные модели, применяемые в программировании для запросов данных, не изучая языка Transact-SQL, составляющего основу запроса, или структуру схемы хранилища данных.

Споры о LINQ to SQL

Многие разработчики высоко оценили LINQ to SQL, и технология начала быстро внедряться в разработку баз данных, но одновременно возникли горячие споры между сообществами разработчиков и администраторов баз данных.

Основной предмет дискуссий -- не ценность LINQ to SQL для разработчиков баз данных. Центральный вопрос -- способ создания и выполнения кода Transact-SQL в запросах. Администраторы баз данных исследовали запросы, формируемые LINQ to SQL, и выяснили, что во многих случаях системные ресурсы используются неэффективно. Если неэффективные запросы неподконтрольны администраторам баз данных, то невозможно переписать код, формируемый LINQ to SQL, в отличие от хранимых процедур, используемых сегодня приложениями баз данных. Причина в том, что код Transact-SQL, сформированный LINQ to SQL, не существует вне пространства выполнения LINQ to SQL.

Неэффективные запросы всегда были проблемой для администраторов баз данных, ответственных за анализ и планирование системных ресурсов, используемых базами данных и приложениями баз данных. В прошлом у администраторов баз данных всегда была возможность оптимизировать запросы. Администраторы считают, что с появлением LINQ to SQL они лишаются этих возможностей, и будут с опозданием реагировать на проблемы использования системных ресурсов запросами LINQ to SQL. Они опасаются, что будут исключены на этапе планирования запросов, так как LINQ to SQL не формирует хранимого кода Transact-SQL, который можно проанализировать и скорректировать, устраняя неэффективные методы. Кроме того, вызывает тревогу, что в коде трудно проанализировать изменения схемы и стратегии индексации, которые играют ключевую роль в оптимизации обращений к системным ресурсам в запросах.

Именно потеря известных методологий и проблемы, связанные с кодом, формируемым LINQ to SQL, - источник споров между сторонниками LINQ to SQL и администраторами баз данных, которым приходится отвечать на телефонные звонки среди ночи, когда из-за неэффективных запросов производительность серверов баз данных падает настолько, что подключенные к ним пользователи не могут нормально работать. LINQ to SQL -- не единственный источник этой проблемы; крайне неэффективные запросы пользователей, имеющих возможность напрямую подключаться к базам данных, всегда могли быть причиной отказов серверов. Поведение LINQ to SQL может быть таким же, и многие разработчики баз данных рассматривают его как еще один инструмент, требующий осторожного обращения.

Подведем итоги

LINQ to SQL -- компонент среды Visual Studio, занимающий особое место в сложном мире проектирования баз данных. Как и для большинства инструментов, их целью не является полная замена существующих методов проектирования баз данных для современных реляционных баз данных, хотя многие считают такую замену желательной. Не несет он и угрозы стабильности среды баз данных и полномочиям администратора по защите ресурсов серверов баз данных, хотя многие придерживаются такого мнения. У инструмента есть своя область применения, для которой он предназначен, и достоинства, отсутствующие в любом другом решении.

Споры о LINQ to SQL между администраторами и разработчиками будут продолжаться до тех пор, пока инструмент не преодолеет болезнь роста или не станет еще одним средством разработки, отвергнутым администраторами баз данных. Но пока неясно, кто победит, и разработчикам и администраторам предстоит отстаивать свое мнение и вести дискуссии о новом компоненте Visual Studio в течение многих месяцев.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 28.10.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft 365 Apps for business (corporate)
Microsoft 365 Business Basic (corporate)
Microsoft Windows Professional 10, Электронный ключ
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Компьютерные книги. Рецензии и отзывы
Краткие описания программ и ссылки на них
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100