программирование, операционные системы, компьютеры, железо, графика
 
 На сайте
   Главная
   Новости

 Статьи
   Security & Hack
   Базы данных
 Clarion
 ERwin
 FoxPro
 Informix
 Interbase
 MS SQL Server
 MySQL
 Oracle
 PostgreSQL
Другие СУБД
 Интеграция приложений и данных
 Информационные системы
 Разное
 Язык запросов SQL
   Графика
   Железо
   Интернет-технологии
   Локальные сети
   Операционные системы
   Программирование
   Программные руководства
   Разное

 Софт
   Программы для Windows
   Программы для КПК, PDA, PocketPC
   Программы для Linux и Unix
 Главная  Новости  Софт

Раздел: Базы данных >> Другие СУБД

Доступ к данным SQL Server с помощью LINQ

Доступ к данным упрощается благодаря эффективно построенным запасам

Уильям Шелдон

Благодаря языку запросов Language Integrated Query (LINQ), реализованному в Microsoft Visual Studio 2008, разработчики могут использовать собственный синтаксис в сочетании с традиционными языками программирования, такими как C# и Visual Basic (VB), для ссылки на объекты базы данных как на собственные объекты языка и создания запросов к этим объектам. Запросы Visual Studio 2008 и LINQ преобразуют код процедур в вызовы базы данных на основе T-SQL, направляемые в SQL Server. LINQ - отличный инструмент для быстрой разработки приложений, с помощью которого можно формировать довольно эффективные запросы, хотя во многих случаях квалифицированный администратор базы данных может оптимизировать их. На сегодня существует три версии LINQ: LINQ for SQL, LINQ for XML и LINQ for Objects. В данной статье рассматривается LINQ for SQL, именуемый просто LINQ.

Как новая технология .NET, LINQ является частью библиотек Microsoft .NET Framework 3.5. Для использования LINQ в проектах Visual Studio 2008 нужно располагать платформой .NET Framework 3.5. У LINQ есть ряд особых требований к типам данных, которые не поддерживаются предыдущими версиями .NET, что заставило разработчиков Microsoft внести существенные изменения в основные языки .NET. Например, в C# появился тип var, а в VB - соответствующие типы. С помощью этих типов объектов .NET можно указать такой тип, при котором тип данных результата запроса неизвестен до выполнения запроса.

Основы LINQ

Коротко расскажу о принципах действия LINQ. Разработчикам Visual Studio 2008 предоставляется интегрированный инструментарий для технологий доступа к данным в SQL Server 2005. Обратите внимание, что компания Microsoft не выпустила пакет обновления SQL Server 2005 для поддержки NET Framework 3.5 и LINQ, так как во внутренних механизмах LINQ используются ADO. NET и существующие методы доступа к данным, реализованные в .NET Framework 2.0.

В LINQ объектная модель представляет источник данных. Затем LINQ ссылается на этот источник данных как на объект DataContext (например, System.Data.Linq.DataContext). Объект DataContext инкапсулирует строку соединения ADO. NET для базы данных. Затем объект DataContext используется с набором определений объекта (например, System.Data.Linq.Mapping.TableAttribute) для таблиц, хранимых процедур и функций в базе данных. Для каждого объекта базы данных, которому дано определение, требуется объект DataContext.

Создание классов с использованием SQLMetal

Существует два варианта создания классов, необходимых для использования LINQ в исходном тексте прикладных программ. Можно вручную ввести все необходимые классы с помощью функции объектно-реляционного сопоставления Visual Studio. Другой способ - применить инструменты типизированных наборов данных для управления доступом и извлечением данных, а затем использовать LINQ для запроса наборов результатов, созданных типизированными наборами данных. Конечно, при использовании объектно-реляционного сопоставления связи между таблицами в базе данных и создаваемыми объектами могут быть только 1:1. Как показывает метод Load, связи 1:1 не всегда удовлетворяют требованиям разработчиков. Поэтому в данной статье будет рассказано о том, как использовать SQLMetal для формирования классов сущностей для объектов базы данных.

SQLMetal.exe - бесплатная утилита сопоставления базы данных, поставляемая вместе с Visual Studio 2008. Этот инструмент командной строки находится в каталоге Program FilesMicrosoft SDKsWindowsV6.0ain. SQLMetal формирует необходимую сущность данных и объект DataContext для LINQ в исходном файле .vb или .cs. Чтобы создать исходные файлы VB для базы данных на локальном SQL Server и включить в них хранимые процедуры, нужно открыть командное окно, перейти в каталог установки (или дать ссылку на инструмент SQLMetal в этом каталоге) и запустить следующую команду:

SQLMetal.exe/server:.SQLEXPRESS
/database: AdventureWorks/
sprocs/functions/language: vb/
code: AdventureWorks.vb

Эта команда создает файл AdventureWorks.vb в текущем каталоге. Обратите внимание, что нужно изменить ссылку сервера, так как .SQLEXPRESS ссылается на экземпляр SQL Express на моем локальном сервере. Этот параметр должен содержать ссылку для локального компьютера или имя сервера базы данных. Параметр database: AdventureWorks указывает обрабатываемую базу данных. Параметры sprocs и function указывают, что SQLMetal должен сформировать файлы сущностей для поддержки хранимых процедур и функций в базе данных. Параметры language: vb и code: AdventureWorks.vb указывают соответственно язык программирования и целевой исходный файл. Чтобы создать файл AdventureWorks в текущем каталоге на языке C#, необходимо заменить параметр language: vb на language: cs, а расширение vb на cs. После того как эта команда была выполнена на тестовом компьютере, полученный файл содержал около 20 тыс. строк исходного текста.

Использование LINQ

После того как сформированы сущности базы данных, файл AdventureWorks.vb можно добавить в любой проект. Для этого требуется подготовить новый проект VB Windows Forms. Щелкните на проекте правой кнопкой мыши в Solution Explorer и на пункте Add Existing Item в контекстном меню, чтобы открыть диалоговое окно Add Existing Item, с помощью которого можно перейти к файлу AdventureWorks.vb. Затем добавьте этот файл к проекту.

После того как файл AdventureWorks.vb добавлен к проекту, фоновый компилятор VB выдает сотни ошибок, так как Visual Studio 2008 не вводит ссылки, необходимые для разбора LINQ в SQL. Чтобы избавиться от ошибок, перейдите к свойствам проекта, щелкните на вкладке References и добавьте System.Data.LINQ в качестве ссылки на проект. Затем щелкните на вкладке Load Web Settings и добавьте параметр строки соединения AdvWorksDB для базы данных. В этом параметре строки соединения нужно использовать те же значения, что и в SQLMetal для создания исходного файла. Обратите внимание, что нужно указать режим безопасности (например, Integrated Security) в параметре строки соединения.

Затем следует подготовить простую форму. В данном примере элемент управления DataGridView помещен в верхней части формы, а ниже расположены четыре кнопки команд. Расположение кнопок не имеет большого значения, но их нужно назвать ButtonLoad, ButtonAdd, ButtonEdit и ButtonDelete. Дважды щелкните на каждой кнопке конструктора, чтобы Visual Studio 2008 автоматически сформировал обработчик событий Click для каждой кнопки.

Затем нужно дважды щелкнуть в области конструктора формы, чтобы подготовить событие Load для формы. Затем измените событие Load с использованием исходного текста, показанного в листинге 1.

Модификация события Load

Фрагмент A в листинге 1 показывает определение объекта DataContext с именем AdvWorksDC, который использует строку соединения базы данных, определенную ранее. Этот объект DataContext определен в области формы, которая обеспечивает повторное использование объекта DataContext в обработчиках событий в форме. Вторая строка исходного текста во фрагменте A (листинг 1) определяет объект сущности (т. е. Department) для таблицы HumanResources_Department из базы данных AdventureWorks, которая также используется в нескольких обработчиках событий.

Исходный текст во фрагменте B листинга 1 определяет событие Form Load для показа. В событии Load во фрагменте B листинга 1 отключаются кнопки Add, Edit и Delete. Событие Load происходит только один раз, поэтому наступает удобный момент, чтобы создать начальный запрос данных для заполнения таблицы. Вместо простого запроса, который можно легко добавить, обновить или удалить, этот сложный запрос лучше иллюстрирует формат запросов LINQ. Отличие запросов LINQ от запросов SQL заключаются в том, что они начинаются с предложения FROM. Это предложение позволяет задать целевую таблицу в оперативной памяти, в которой содержится определение запроса. В разделе In предложения FROM указывается, где в объекте DataContext будет сделан запрос. После того как определен контекст запроса, механизм LINQ может предоставить технологию IntelliSense для таблиц и столбцов, доступных в запросе.

Запрос во фрагменте B листинга 1 использует инструкцию Join, которая называет вторую таблицу и указывает, какие столбцы будут использоваться для соединения двух таблиц. Запрос также содержит предложение WHERE, чтобы ограничить число возвращаемых результатов. Результат - объект DS, созданный как объект запроса на основе типа интерфейса. Этот объект запроса обслуживает базовый запрос и предоставляет перечислитель, позволяющий извлечь каждую строку результатов. Затем объект запроса назначается как источник данных для таблицы данных. Результирующая таблица (показанная на экране 1) не обеспечивает редактирования или добавления элементов на этапе выполнения. Требуется создать функциональный эквивалент инструкции T-SQL, в котором результаты назначаются набору данных.

Форма с активной кнопкой Load

Добавление строк в таблицу

Теперь можно скомпилировать и запустить приложение, которое выполнит запрос, определенный в событии Load. Эти данные загружаются в таблицу данных. Однако запрос ссылается на таблицу с несколькими связями. Чтобы проиллюстрировать операции Insert, Update и Delete, будет использован запрос, который ссылается на таблицу без связей.

Реализация кнопки Load

В листинге 2 показана реализация трех ключевых методов процесса: ButtonLoad_Click, Bind- Grid и ButtonAdd_Click. Метод ButtonLoad_Click перезагружает таблицу с другой таблицей (т. е. таблицей HumanResources_Department). Метод BindGrid создает собственно запрос LINQ, направленный к объекту DataContext для записей в таблице, а затем обновляет источник данных DataGridView с помощью нового запроса. Запрос демонстрирует предложение ORDER BY, знакомое разработчикам T-SQL. Наконец, метод ButtonAdd_Click активизирует кнопку Add (см. экран 2).

Кнопка Add в форме Form1

Кнопка Add вызывает метод ButtonAdd_Click в листинге 2, чтобы добавить новую запись в текущую таблицу. Этот метод использует объект сущности, созданный как часть определения формы в листинге 1. Затем объект сущности ассоциируется с новым созданным экземпляром подразделения, как показано в первой строке метода ButtonAdd_Click в листинге 2. В этой строке исходного текста используется один из новых синтаксических элементов VB, который задает значения свойствам объекта при его создании. Синтаксис With {.PropertyName = value} позволяет задавать значения свойств объекта при его создании с использованием инструкции New. В строке показано создание новой сущности Department, которая будет отражать строку, которая обновляется в базе данных.

Затем нужно вставить новую сущность подразделения в таблицу. Обновление таблицы - двухэтапный процесс: во-первых, нужно связать новый объект подразделения со списком поставленных в очередь инструкций вставки объекта базы данных с помощью метода InsertOnUpdate. Этот метод указывает LINQ, что объект будет вставлен в таблицу, и позволяет определить несколько новых объектов перед обновлением базы данных. При использовании LINQ эти и другие обновления остаются локальными, пока выполняется метод SubmitChanges. Во-вторых, метод SubmitChanges обеспечивает получение кэшированных обновлений данных и применение сформированного программного кода T-SQL, связанного с каждым из них, к источнику данных SQL. Если нужно добавить коллекцию сущностей, можно отложить обновление базы данных до тех пор, пока не будут созданы все сущности. После щелчка на кнопке Add дисплей обновляется, и вновь созданное подразделение появляется в начале списка, показанного на экране 3.

Только что созданное подразделение вверху списка

Обновление и удаление строк

После того как строка вставлена, рассмотрим, как ее обновить. Поскольку объект сущности был создан из текущего объекта DataContext, требуется лишь обновить одно из свойств объекта сущности, указав значение, которое нужно поместить в базу данных. В нашем примере название подразделения изменится с Bike Computers на Fitness Computers.

Для обновления базы данных вызовите метод SubmitChanges объекта DataContext. На экране 4 показано, как название подразделения меняется с Bike Computers на Fitness Computers после выполнения метода SubmitChanges. Новое название подразделения заменяет первоначальное. Теперь доступна только кнопка Delete.

Название подразделения изменено на Fitness Computers

Теоретически удалить строку так же легко, как обновить; однако внутренний механизм сложнее. По умолчанию LINQ использует оптимистическую схему блокировки. Если LINQ полагает, что базовые данные объекта изменились, то объект не будет обновлен и возвращается сообщение об ошибке с указанием, что строка не найдена или изменилась. Это сообщение об ошибке будет отображаться также при многократном редактировании сущности или попытке удалить сущность после редактирования.

Одно из решений этой проблемы - заменить экземпляр объекта DataContext новым экземпляром DataContext. Первые две строки обработчика событий ButtonDelete_Click (см. листинг 3) воссоздают объект DataContext и связывают объект entity в оперативной памяти со вновь созданным объектом DataContext. Но это решение может повлиять на производительность, так как требует создать новое соединение с базой данных.

Обновление строки

После того как получен вызов для обновления объекта DataContext на месте, вызывается метод DeleteOnSubmit, чтобы удалить текущую сущность из таблицы, а затем передать изменения для действительного удаления строки сущности из таблицы. После щелчка на кнопке Delete вновь появляется картина, подобная показанной на экране 2, и процесс можно повторить. Обратите внимание, что метод DeleteOnSubmit заменяет метод Remove из предшествующих версий LINQ.

Взгляд разработчиков на LINQ

С точки зрения разработчика, ориентированного на серверный компонент и знакомого с T-SQL, LINQ - еще один интерфейс запросов, который нужно освоить, но вряд ли его удастся использовать с большой выгодой. Для разработчика интерфейса пользователя, лучше знакомого с привязкой данных и управлением данными, LINQ - превосходный инструмент, который упрощает доступ к данным.

Эти два представления суммируют оценку LINQ. Как инструмент RAD, LINQ - мощное дополнение к арсеналу разработчика .NET. Расширяемый интерфейс автоматизирует потенциально сложные запросы. Однако для профессионала, желающего оптимизировать доступ к данным, LINQ вряд ли повлияет на выполнение повседневных задач.

Раздел: Другие СУБД
Секреты служб SQL Server Reporting Services

В основе почти всех моих рекомендаций, адресованных разработчикам SQL Server, Visual Studio и VB. NET, лежат предложения читателей. Благодаря вашим идеям службы отчетов Reporting Services (SSRS) стали более эффективными. Корпорация Microsoft сохранила почти все заслуживающие одобрения средства и добавила несколько новых. Вместе с тем хотелось бы, чтобы были доработаны еще некоторые функции. Давайте рассмотрим ряд усовершенствованных средств, которые должны облегчить работу администратора, а также коснемся нескольких недостаточно продуманных функций, которые ему мешают.

Виртуальный каталог

Теперь службы SSRS могут сохранять виртуальные каталоги, не прибегая к помощи Microsoft IIS. Без участия IIS службы отчетов функционируют быстрее, чем раньше. Чтобы обращаться к отчетам по протоколу SSL, администратору, как и прежде, необходимо использовать сертификат. Запускать производственный отчет без применения SSL - все равно что передавать свой номер телефона по местной радиостанции. При использовании SSL все данные, которыми обмениваются SSRS и браузер, передаются по сети в виде зашифрованных пакетов. И никто не сможет, используя анализатор пакетов, читать отчеты или содержащиеся в них конфиденциальные данные.

Разработчики SSRS изменили и процедуру именования виртуальных каталогов, но эти изменения действительны лишь при условии, что SQL Server 2008 установлен в виде именованного экземпляра. В URL-адресах ReportServer или Reports предшествующих версий имя экземпляра SQL Server присоединялось с помощью символа $, например http://<ваш сервер>/Report$SS2K5. В версии SSRS 2008 разработчики Microsoft заменили символ $ знаком подчеркивания (_). Чтобы развернуть проект Microsoft Visual Studio (VS) 2008 BI, нужно изменить URL-адрес TargetServer, придав ему следующий вид: http://<ваш сервер>/ReportServer_SS2K8, где SS2K8 - это имя конкретного экземпляра SQL Server.

Reporting Services Configuration Manager

Это инструментальное средство подверглось несущественной доработке, и его возможности были усовершенствованы. Диспетчер Reporting Services Configuration Manager (RSCM) по-прежнему запускается из меню SQL Server Configuration Tools. Помните, что диспетчер вносит изменения в конфигурацию конкретного экземпляра SSRS, который часто устанавливается на сервере в том же зале. Если вы устанавливаете службы отчетов более поздней версии, чем SQL Server 2000, эта программа позволяет убедиться, что все подключено корректно, и помогает настроить SSL, установить ссылки электронной почты, а также, что самое важное, установить и зарезервировать ключи шифрования. Обращаться к отчетам без этих ключей довольно сложно. На экране 1 показана ссылка на диспетчер отчетов в RSCM. Здесь порт SSL связывается с созданным вами сертификатом.

Экспорт отчетов

В службах SSRS до сих пор не реализован простой способ экспорта отчетов. Представитель разработчиков сообщил мне, что проблемой экспорта отчетов они предполагают заняться (хотя и не в ближайшем будущем) и что, возможно, такая функция появится в одной из следующих версий. Пока же можно воспользоваться бесплатно распространяемой утилитой, обеспечивающей решение этой задачи (см. врезку "Бесплатное средство экспорта отчетов SSRS").

Включение функции My Reports

Если необходимо сделать диспетчер отчетов доступным для пользователей, можно активировать функцию My Reports, чтобы они могли поддерживать каталог отчетов на основе своих доменных имен, используемых для регистрации в системе. Так, после того как я включил функцию My Reports, службы Reporting Services сформировали новое дерево каталогов для моих персональных отчетов, которым я могу пользоваться для поиска интересующих меня отчетов. Вопрос в том, как включить эту функцию. Документация на сей счет фрагментарна, но включить функцию не так уж сложно, если знать, как выполняется процедура установления связи с обменом секретным ключом.

Запустите SQL Server Management Studio, но не подключайтесь к процессору Database Engine, а в исходном диалоговом окне Connect to Server выберите пункт Reporting Services (это можно сделать, если служба уже запущена). Чтобы активизировать функциональные возможности My Reports, следует правой кнопкой мыши щелкнуть на базовом соединении и выбрать пункт Properties. На экране появится диалоговое окно, показанное на экране 2.

Задание свойств SSRS

Теперь вы сможете задать роль, применяемую к каждому из созданных на данном сервере каталогов My Reports. Когда пользователи Windows откроют URL-адрес диспетчера Report Manager, они увидят новый путь, созданный в каталоге Reporting Services для их доменного имени.

Защищать свои отчеты - жизненно важная задача пользователя вне зависимости от того, кто имеет право просматривать эти отчеты. Один из способов создания ролей Reporting Services, которым администратор может назначить конкретные права, предполагает использование обозревателя объектов Reporting Services Object Explorer. В результате пользователи не смогут обращаться к отчетам, знакомиться с которыми им не положено.

Работа с новым конструктором отчетов Report Designer

В распоряжении разработчиков служб отчетов имеется множество конструкторов отчетов. Во врезке "Версии конструктора отчетов Microsoft" я попытался систематизировать версии продуктов и их возможности.

Новые средства отображения SSRS 2008 Report Definition Language (RDL) решают множество актуальных проблем, проявлявшихся в работе модулей подготовки RDL первого поколения (да, существует несколько модулей первого поколения). Механизм визуализации SSRS 2008 обеспечивает выполнение множества функций по обработке данных в расширенном текстовом формате, а также новый элемент управления Tablix (который, по сути, отнюдь не является элементом управления отчетами). Элемент управления Tablix сочетает в себе свойства элементов управления матрицами и таблицами (отсюда его название), а также такие особенности, как ограниченная поддержка формата Rich Text и встроенные возможности для сводных таблиц.

Кроме того, механизм визуализации SSRS 2008 стал более универсальным. Проблема в том, что механизм визуализации и конструкторы отчетов, создавшие RDL для введения в него данных, формировали новые и несовместимые файлы RDL, которые не воспринимаются старым механизмом SSRS 2005, до сих пор использующимся в элементах управления ReportViewer VS 2005 и VS 2008. И это плохо - по крайней мере тогда, когда необходимо использовать средства BI с функциями, обеспечивающими эффективную генерацию отчетов, для создания этих новых отчетов и средства управления ReportViewer в приложениях Windows и Active Server Pages (ASP) - для их развертывания. Дело в том, что внутренний механизм элемента управления ReportViewer VS 2008 SP1 позволяет ему визуализировать лишь старые отчеты первого поколения в стиле RDL. Однако сейчас происходит обновление Visual Studio и элемента управления ReportViewer, и в ходе этого обновления будут реализованы средства отображения RDL следующего поколения. К сожалению, это произойдет не ранее выхода в свет VS 2010.

Тема SSRS не закрыта

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

Бесплатное средство экспорта отчетов  SSRS

Если бы передо мной стояла задача восстановить один отчет SSRS и единственный путь ее решения сводился бы к восстановлению всей базы данных SSRS, то я, откровенно говоря, счел бы, что овчинка не стоит выделки. К счастью, Джаспер Смит освоил (судя по всему) протокол SOAP, а также программные интерфейсы к SSRS и создал бесплатно распространяемую утилиту Reporting Services Scripter для извлечения из базы данных RDL, источников данных и всех других элементов каталога. Я протестировал этот продукт, и, хотя он, как мне показалось, сначала не поддерживал SQL Server 2008 (2.0.0.0.11), я сумел добиться подключения утилиты к моему экземпляру SQL Server 2008 и получил отчеты, а также создал проект Visual Studio BI для каждого каталога. В результате мне не пришлось тратить силы на то, чтобы выполнять тест на другой системе. Загрузить утилиту можно по адресу www.sqldbatips.com/showarticle.asp? ID=62.

Версия конструктора отчетов Microsoft

В блоке № 35 кампуса разработчиков Microsoft работают по меньшей мере четыре человека, понимающих, как и почему эволюционировал конструктор отчетов. С выходом каждой версии данного продукта под сомнение ставилась совместимость этих версий. Мне уже приходилось описывать особенности всех изданий конструктора отчетов, но это не позволяет нам понять, почему мы не можем делать то, что нам предлагалось делать при создании отчетов SSRS.

Конструктор отчетов в пакете Visual Studio (VS) 2003 объединяется с дополнительным модулем Reporting SelVices с помощью бинарной "заплатки". Этот конструктор может работать только с отчетами RDL служб отчетов SSRS 2000. Данная версия VS не поддерживает элемент управления ReportViewer.

Конструктор отчетов в VS 2005. Этот конструктор не может "видеть" службы SSRS 2008 и взаимодействовать с ними, но он может импортировать отчеты RDL служб отчетов SQL Server 2000 и взаимодействовать с SSRS 2005. Продукт поддерживает элемент управления ReportViewer первого поколения, который может осуществлять "перекрестное взаимодействие" с отчетами RDL SSRS 2005.

Конструктор отчетов в VS 2008. Этот конструктор тоже не может "видеть" службы SSRS 2008 и взаимодействовать с ними. При этом он не в состоянии даже открывать проекты SSRS 2005. Но продукт по-прежнему поддерживает элемент управления ReportViewer первого поколения и может осуществлять "перекрестное взаимодействие" с отчетами RDL SSRS 2005.

Конструктор отчетов в VS 2008 SP1. Этот конструктор взаимодействует с SSRS 2008 и может даже открывать проекты SSRS 2005, которые он преобразует в формат VS 2008. Он поддерживает проекты с элементом управления ReportViewer первого поколения и может осуществлять "перекрестное взаимодействие" с отчетами RDL SSRS 2005, но не с отчетами RDL SSRS 2008.

Конструктор отчетов, реализованный в комплекте SSRS BI Tools. Этот новый конструктор VS BI специально предназначен для работы с SSRS 2008, а также с проектами SSRS 2005, которые он преобразовывает в формат VS 2008 BI. Продукт не поддерживает разработку в средах Windows Forms или ASP, так что вопрос об использовании элемента управления ReportViewer здесь не актуален.

Раздел: Другие СУБД
Об SQL Server 2008, Internet Cloud Services и многом другом

В беседе с Шейлой Молнар технический советник подразделения Microsoft Data and Platform Дэвид Кэмпбелл рассуждает о возможностях SQL Server 2008 и связанных с SQL Server продуктах Microsoft, готовящихся к выпуску, таких как Kilimanjaro, Madison и Azure Services Platform. При этом он касается и некоторых других тем - тенденций в сфере управления данными, механизма взаимодействия SQL Server с Visual Studio и Microsoft Office, а также вопросов, связанных с концентраторами данных.

Что вас больше всего радует в продукте SQL Server 2008?

То обстоятельство, что менее чем за три года нам удалось реализовать в нем так много различных возможностей. Мы полностью пересмотрели процесс проектирования SQL Server. Мы создали в своем воображении мир, где функционируют миллионы серверов и миллионы серверов баз данных уровня предприятия. Затем мы пересмотрели концепцию продукта с учетом этой картины. Нам нужен был продукт, который мог бы "сам позаботиться о себе" и был бы гораздо проще в обслуживании.

А какова была ваша роль в этом процессе?

В ходе проектирования SQL Server 2005 я возглавлял довольно большой коллектив разработчиков. Когда мы готовились к выпуску SQL Server 2005, я подошел к Полу Флесснеру, тогдашнему вице-президенту подразделения Microsoft Data and Storage, и сказал: "Мы уже не плетемся за другими участниками гонки. Теперь мы в группе лидеров, и существует масса вещей, которые мы можем сделать, чтобы выделиться на фоне остальных". Я сформировал группу сотрудников, и мы проанализировали ситуацию на рынке, потребности наших клиентов и независимых поставщиков программного обеспечения, а также отдачу, получаемую от услилий инженеров. Мы определили, какие задачи нужно решать в первую очередь, скажем инструкции merge, о чем нас просили в течение длительного времени, и решили эти задачи.

Мы выявили такую тенденцию: описывающие пространство и время данные становятся интегральными типами данных, и мы включили в SQL Server 2008 средства для работы с пространственными типами данных. Еще мы заметили, что, хотя управлять системами SQL Server на уровне "сервер-сервер" проще, чем многими другими продуктами для работы с базами данных, управление тысячами систем SQL Server все еще требует больших усилий. Так родилась концепция управления на основе политик. Жизнь администратора и в самом деле упрощается, если он может определить несколько классов обслуживания (жизненно важный сервер, сервер рабочей группы, сервер второго уровня, расположенный под рабочим столом сотрудника), политики для этих классов, связать каждый сервер с одним из классов и проследить за тем, чтобы они сохраняли соответствие требованиям.

Каковы, на ваш взгляд, основные тенденции в сфере управления данными?

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

Какое влияние на SQL Server окажет снижение стоимости хранения данных?

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

Вы имеете в виду проект Madison?

Мы отмечаем, что руководители многих компаний не хотят удалять данные из хранилищ; они строят все более вместительные хранилища данных. От возможности собирать, добывать информацию, анализировать и вновь предъявлять ее предприятию может зависеть успех бизнеса. Проект Madison, которым мы занялись после приобретения компании DATAllegro, позволит нам выйти на рынок средств хранения данных с решениями емкостью в сотни терабайт. Объемы просто умопомрачительные. Данных в хранилищах становится все больше, а их очистка проводится реже. Я думаю, что в таких условиях люди могут анализировать ситуацию на протяжении длительного времени и выявлять исторические тенденции. Эти тенденции являются основой, на которой мы строим прогностический анализ с целью выявления зависимостей во времени.

И какое место в этой картине занимает продукт Kilimanjaro?

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

Какие еще принципы наряду с самообслуживанием лежат в основе Kilimanjaro?

В версии Kilimanjaro реляционный процессор SQL Server будет иметь аппаратные средства для обработки более чем 64-разрядных потоков. Еще одна тема - управление множеством серверов. Только представьте себе, какие проблемы могут возникать в случае самообслуживания. Существует ли возможность без особых хлопот готовить серверы к работе? Администраторы компаний, эксплуатирующих сотни и тысячи систем SQL Server, после внедрения Kilimanjaro со средствами управления множеством серверов получат возможность управлять своими серверами как единой группой.

Могли бы вы сказать, почему системами SQL Server и средствами хранения данных в Microsoft занимается одно и то же подразделение?

Это далеко не случайно! Помните, я сказал о том, что все данные получаются сегодня в цифровом формате? Так вот, даже те сведения, которые не введены непосредственно в базу данных, нужно как-то учитывать, ими требуется управлять - подобно тому, как мы управляем информацией в базе данных. Мир неструктурированных данных и мир структурированных данных сближаются. Это происходит под воздействием трех сил. Во-первых, имеется огромное множество неструктурированных данных. Неужели вам не хотелось бы, к примеру, чтобы всеми файлами на вашем компьютере можно было управлять с помощью базы данных? Во-вторых, неструктурированные данные часто имеют другие атрибуты. Так, к числу атрибутов мгновенных сообщений относятся имя отправителя, имя получателя и дата. Третье обстоятельство - извлечение данных. Мы можем осуществить текстовое индексирование мгновенных сообщений. Возможность выполнения запросов по тексту таких сообщений дает определенные преимущества.

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

В ходе нашей беседы невольно вспоминается файловая система WinFS.

С WinFS связано многое из того, что мы выпускали за последние год-два: технология entity framework, модель entity data model, архитектура synchronization framework. Это просто еще один способ довести систему до рынка. Когда мы приняли решение не включать WinFS в ту версию Windows, которая позднее получила название Vista, мы объявили, что выпуск этой технологии откладывается. Она будет реализована в SQL Server.

Как SQL Server взаимодействует с Microsoft Visual Studio и с Microsoft Office?

Десять лет назад потребители принимали решение о покупке в зависимости от возможностей процессора реляционной базы данных. Сейчас мы уже не считаем SQL Server сервером баз данных. Мы относим эту систему к категории платформ data platform с более широкими горизонтальными службами. Для бизнес-аналитики у нас в системе имеются средства извлечения, преобразования и загрузки (extraction, transformation, and loading, ETL). Кроме того, мы можем обеспечить подключение системы к средствам SharePoint. Имеются функции для подключения к Visual Studio. Мы уже пользуемся оболочкой Visual Studio для среды проектирования ETL, так что в обоих случаях требуются одни и те же навыки. Мы реализовали сценарий Occasionally Connected Systems с использованием Visual Studio 2008. Он предназначен для создателей мобильных приложений, которые не хотят отвлекаться на выяснение состояния данных (connected или not connected). Ключевым компонентом платформы данных является синхронизация. Все это реализовано в нашем продукте.

В чем смысл добавления синтаксиса языка запросов LINQ к продукту SQL Server 2008?

Я думаю о том, как уменьшить трения, возникающие при создании приложений. Между логикой приложения и уровнем интерфейса базы данных возникает рассогласование нагрузки. А если вернуться лет на 15-20 назад, шла ли речь об интеграции баз данных с помощью языка COBOL или о предварительных компиляторах, в каком-то смысле мы находились в более благоприятных условиях, чем тогда, когда обращались к интерфейсам уровня вызова. Так вот, подумайте об интерфейсе ODBC: он открывал базы данных для взаимодействия с более широким классом сред разработки. Правда, задача разработчика на какое-то время становилась сложнее. Я думаю, LINQ сделает большое дело - позволит разработчикам выражать запросы с помощью естественных средств, легко воспринимаемых их программами, и при этом неважно, как они относятся к базам данных, к структурам внутренней памяти или к XML.

Что вы думаете о платформе Azure Services Platform и о предоставлении платформы обработки данных в качестве услуги?

Наша позиция - расширить платформу обработки данных до уровня Internet. Платформа Azure - еще одно измерение самообслуживания. Сегодня, чтобы подготовить к работе базу данных, вам нужно разыскать сервер, найти дисковое пространство. А теперь представьте себе такую картину. Вы готовите к работе c базой данных конечную систему, и после этого, где бы вы ни находились, если у вас есть выход в Internet, вы можете получить соединение с упомянутой конечной системой. Это один из аспектов самообслуживания. Azure - это перенос баз данных из "мира земного" (клиент-сервер) в мир Internet. Вспомним, как клиент-серверные базы данных высвободили данные и позволили нам донести их до пользователей настольных систем. Мир служб освободит данные от оков локальных сетей и сделает их достоянием всех имеющих на то полномочия пользователей, располагающих доступом к Internet.

Какие еще задачи могут быть решены разработчиками с помощью платформы Azure?

Мне доставляет удовольствие наблюдать за тем, как разрабатываются новые типы приложений. Многие рассуждают так: "Переносить свои профильные бизнес-приложения в Internet я не буду". И я разделяю эту точку зрения. Но я могу представить себе массу ситуаций, таких как использование цепочек снабжения, контакты "предприятие - предприятие", электронные средства автоматизации проектирования и управления жизненным циклом продуктов, в которых корпорации могут обмениваться данными, размещать информацию в концентраторах данных и предоставлять одним устройствам данные, хранящиеся на других устройствах.

На конференции профессиональных разработчиков Professional Developers Conference (PDC) мы объявили о том, что в лаборатории SQL Services Labs начались работы по проекту Huron. Его реализация даст возможность взять базу данных Access, опубликовать ее в службе SQL Services, после чего на эту базу подпишутся уполномоченные на то пользователи. При этом приложение будет ликвидировано, но все имеющиеся данные синхронизируются. Образуется концентратор данных. Нет необходимости в том, чтобы отдельные клиенты были связаны друг с другом; им достаточно иметь возможность подключения к концентратору. Данные защищены и резервируются в концентраторе. Для разработчиков открывается ряд новых сценариев. Кроме того, мы объявили о том, что в лаборатории SQL Services Labs будут выполняться работы по поддержке таких процессов, как добыча данных и подготовка отчетов. Еще одно интересное направление - службы интеграции данных. Пользователи получат возможность размещать данные из ряда источников в концентраторе и подвергать их бизнес-анализу.

Что еще читателям следует знать о концентраторах данных?

С помощью служб SQL Services пользователи смогут создавать концентраторы данных наиболее общего типа и уменьшать количество проблем. Совместно с разработчиками .NET Services, которые тоже участвуют в создании платформы Azure, мы будем проектировать средства управления доступом к ней. Пользователи смогут брать существующие сведения из каталога Active Directory (AD) и объединять их, перенося эти данные в Internet. К тому же они смогут создавать политики авторизации применительно к этим данным, чтобы сделать безопасной процедуру совместного использования информации различными приложениями и людьми.

Какие преимущества даст, на ваш взгляд, оснащение платформы для обработки данных в Internet службой SQL Data Services (SDS)?

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

SDS полностью меняет наше представление о корпоративной базе данных. Ваши базы данных становятся гораздо более абстрактными, чем были раньше.

Сегодня одна из проблем, с которыми сталкиваются корпорации, состоит в том, где размещать базы данных. Раньше было принято размещать базу данных под рабочим столом одного из служащих. Теперь представьте себе, что сотрудник ИТ-подразделения предлагает: "Я дам вам возможность инициализировать базы данных в конечных системах в Internet". Разработчику остается только ответить: "Подготовьте мне конечную систему на 10 Гбайт". Многие крупные корпорации имеют средства самостоятельной подготовки сайтов SharePoint; это делается без особых затруднений. Представьте себе, что в корпорации, где действует такая модель, разработчикам не приходится дожидаться установки новых аппаратных компонентов. Им не нужно ждать, пока представится случай договориться с сотрудником ИТ-подразделения о настройке виртуальной машины. Нужно только заполнить формуляр с запросом на базу данных, получить конечную систему - и можно приступать к разработке приложения. Таким образом будет повышена оперативность действий и снижена напряженность на данном участке работы.

В одной из своих статей о воздействии "облака вычислений" на ИТ-службы компаний наш автор Брайан Моран писал, что перспектива вычислений в Internet кому-то может показаться пугающей, так как у корпораций отпадет потребность в ИТ-подразделениях.

Абсолютно с этим не согласен. На мой взгляд, перед ИТ-подразделениями откроются новые возможности. Надо сказать, что многие путают вычисления в Internet с переходом к хостингу у сторонних подрядчиков - дескать, собирайте все и отдавайте мне. Я же думаю, что если обработка данных в Internet будет организована правильно, люди смогут сосредоточиться на своей работе. И потом, перед сотрудниками ИТ-подразделений открывается возможность добиться более высокой степени взаимозависимости и преобразовать производственно-сбытовую цепь, а не только снабженческую.

Какие же навыки должны в таком случае приобрести администраторы баз данных?

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

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

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

Раздел: Другие СУБД
Kylix 2: первый взгляд
Kylix 2 продолжает направление, начало которому было положено Kylix 1 - средством быстрой разработки приложений для операционной системы Linux. Как и Kylix 1, Kylix 2 продолжает традиции компонентного программирования, заложенные фирмой в хорошо известном отечественным программистам средстве разработки Delphi, позволяющем легко и быстро создавать, например, клиентские приложения к серверным базам данных. До появления Kylix для Linux не было аналогичных средств разработки.
Раздел: Другие СУБД
SQLBase под микроскопом
Настройка производительности SQLBase стала существенно легче. Новая утилита быстро обращается к тем запросам, которые представляют наибольший интерес. Приходилось ли Вам производить настройку SQL в системах SQLBase? С чего Вы начинали?Существуют, вероятно, тысячи операторов SQL, которыми пользуются каждый день, но с их помощью нельзя обнаружить операторы, ограничивающие производительность системы.
Раздел: Другие СУБД
Как перенести табличное пространство из базы в базу
Проблема переноса данных в Oracle, так же как и многие другие, не имеет одного общего приемлемого решения. С одной стороны, прикладные требования к такому переносу всегда конкретны: частота, объем, скорость осуществления и так далее. С другой стороны, предлагаемые Oracle варианты технических решений разнообразны и обладают каждый своими плюсами и минусами. В версии 8.
Раздел: Другие СУБД
Динамические SQL - запросы Oracle для ускорения выборок данных
Типичная задача при работе с базами данных - выбрать информацию из разных таблиц, отфильтровать ее по определенным критериям, потом обработать и/или выдать пользователю для просмотра и визуального анализа. Если параметры отбора записей имеются в наличии и определены - эта задача решается тривиально, с помощью обычного оператора SQL "SELECT… FROM… WHERE…" - где набор условий, располагаемых после WHERE, всегда определен.
Раздел: Другие СУБД
Сервер Oracle8i: еще SQL, но уже OLAP
Пользователи Oracle при слове "OLAP" чаще всего вспоминают Oracle Express. И не все знают, что для OLAP-работы вполне хватает и функциональности, присутствующей в Oracle8i. О чем конкретно идет речь, и как упомянутая функциональность соотносится с возможностями Oracle Express, говорится ниже. Туман вокруг OLAP Разработчики OLAP-продуктов изрядно потрудились не только над самими продуктами, но и над созданием терминологического тумана вокруг продуктов.
Раздел: Другие СУБД
SQL Server Version 7.0: Краткий обзор характеристик
Microsoft® SQL Server™ 7.0 - определяющая версия этой системы управления базами данных Microsoft. Как на лучшей системе управления базами данных для Windows NT®, на СУБД SQL Server остановили свой выбор многие корпорации и независимые поставщики программного обеспечения, создающие приложения для бизнеса. Нужды и требования пользователей обусловили существенное обновление продукта в части простоты использования, масштабируемости и надежности, а также поддержки хранилищ данных.
Раздел: Другие СУБД
RDM Server 4.0 (download)
кросс-платформенный сервер баз данных, спроектированный для приложений, к которым предъявляются высокие требования по производительности. .
Раздел: Другие СУБД
XML в Oracle - это очень просто
Оглавление Введение Простой пример XMLTYPE - тип XML XMLTYPE - объектный тип Oracle Взаимные преобразования табличного вида и XMLTYPE Преобразование из XMLTYPE в табличную форму Преобразование из табличной формы в XMLTYPE Дополнительная информация Введение Тип XMLTYPE появился в Oracle в версии 9.0. До этого наиболее подходящим для хранения документов в формате XML был тип CLOB (и менее подходящим - тип VARCHAR2, ограниченный максимумом 4000 знаков).
Раздел: Другие СУБД
Как убрать процессы несуществующих сеансов в Oracle
Проблема На расхожем ныне жаргоне заголовок мог бы звучать так: "Как убрать трупы (убитых сеансов)". Интересно, что такое название звучало бы точно. Как известно, каждый сеанс связи клиентской программы с СУБД Oracle реализуется посредством "серверного процесса", возникающего на компьютере, где работает СУБД.
Раздел: Другие СУБД
Oracle дорабатывает интеллектуальный софт
В середине марта Oracle обновил сервисы интеграции бизнеса, которые облегчают управление информацией в интеллектуальных бизнес-приложениях. Такие приложения предназначены для сбора всей возможной информации по определенной теме, чтобы облегчить выбор наилучших бизнес-возможностей. К ним относятся системы поддержки принятия решений, отчеты, аналитическая обработка в он-лайн режиме (OLAP), статистический анализ,  прогнозирование и вскрытие данных (data mining).
Раздел: Другие СУБД
Какой СУБД лучше управлять
Современные СУБД становятся все более сложными и многофункциональными системами и, как следствие этой тенденции, управляемость (managebility) СУБД и вычислительных сред, в которых они используются, также превращается в трудноразрешимую проблему. Сегодня этот параметр воспринимается как один из основных факторов, определяющих общую стоимость владения СУБД.
Раздел: Другие СУБД
Новые возможности Oracle 9i релиз 2 (Oracle 9.2)
Весной 2002 года компания Oracle выпустила новый релиз своей СУБД - Oracle 9i Release 2 (Oracle 9.2). В этом релизе были исправлены некоторые ошибки, обнаруженные в релизе 1, повысилось быстродействие и эффективность работы СУБД.
Раздел: Другие СУБД
Аналитические системы и хранилища данных
Направление хранилищ данных и аналитических систем является сегодня для Oracle одним из самых приоритетных. Будучи поставщиком полного технологического решения в данной области, Oracle выпускает новые продукты и постоянно совершенствует существующие. В общем виде технология функционирования любой корпоративной информационно-аналитической системы состоит в следующем.
Раздел: Другие СУБД
PowerBuilder как средство разработки распределенных приложений для EAServer
  Технологии распределенных вычислений В наше время практически во всех сферах жизни человеческого общества применяются те или иные системы обработки данных. Это могут быть банковские системы, промышленные программные комплексы, средства автоматизации торговли и многие другие приложения. Постоянное расширение областей применения вычислительной техники и все возрастающая сложность решаемых задач требуют совершенствования методов создания современных информационных систем.
Раздел: Другие СУБД
Основы Yukon: XML, T-SQL и CLR открывают новые перспективы в программировании баз данных
Эрик Браун Статья была опубликована на сайте Microsoft №7/2004 Следующая версия SQL Server с кодовым названием "Yukon" включает ряд усовершенствований и обеспечивает расширенную поддержку языков программирования. Например, Transact-SQL теперь в большей мере отвечает спецификации SQL ANSI-99, а запросы стали более гибкими и четкими. Yukon позволяет выполнять пользовательские функции, хранимые процедуры и триггеры, написанные на CLR-совместимых языках, в частности на Visual Basic .
Раздел: Другие СУБД
Не самые известные сведения о внешних ключах
Оглавление Mea culpa Определение внешнего ключа Внешний ключ может ссылаться на поля таблицы из другой схемы Удаление родительской записи может автоматически изменять подчиненные таблицы Дополнительная информация Mea culpa Обычно на занятиях я говорю студентам, что про Oracle рассказать все не может никто, и если вам такое обещают, не верьте этим людям сразу.
Раздел: Другие СУБД
Война СУБД не затихает
Корпорации Oracle (Редвуд-Шорз, шт. Калифорния) и Microsoft (Редмонд, шт. Вашингтон) продолжают поединок на арене ПО для управления базами данных, поочередно предлагая новшества и усовершенствования , нацеленные на то, чтобы нивелировать сильные стороны продуктов конкурента.
Раздел: Другие СУБД
                           
12345678910>>
 
 31.07 17:20
Определён возможный источник короткопериодических комет
 31.07 11:09
Треть молодых британцев страдают от повышенного кровяного давления
 31.07 11:09
Белóк в моче может прогнозировать болезнь почек
 31.07 05:13
Воссоздан легендарный нацистский компьютер
 31.07 05:12
Ученые приблизились к разгадке возникновения Вселенной
 31.07 04:50
Ritmix привезла в Россию три цифровых фоторамки
 31.07 04:50
Samsung SGH-i917 Cetus: смартфон п/у ОС Windows Phone 7
 31.07 04:50
Pantech P4000 и P1000: телефоны с двумя слотами для сим-карт
 31.07 04:50
Motorola представила мобильный телефон GRASP
 31.07 04:50
Motorola ME511: версия смартфона FlipOut для КНР
 
CNews: Новости | e-Business | Hi-Tech | Telecom
TopCTO Компьютеры цены продажа Компьютеры џ­¤ҐЄб жЁвЁа®ў ­Ёп