Корпорация Майкрософт снова выпустила новую версию сервера SQL Server, обещающую упростить жизнь администраторов баз данных. Последняя версия, SQL Server 2008, содержит множество новых функций и возможностей, значительно улучшающих администрирование.
Администраторы баз данных, использующие SQL Server® 2005 как-либо долго, обнаружат множество функций, используемых в ежедневной работе, но вскоре они также обнаружат, что эти знакомые средства улучшены в SQL Server 2008. Новые возможности, основанные на существующих функциях, позволяют уменьшить количество обходных путей или настроек, которые ранее требовались для использования различных функций в сложных средах баз данных.
Новые функции SQL Server 2008 включают большой диапазон ролей заданий базы данных, что усложняет их классификацию. При разделении функций по различным разделам я понял, что у некоторых читателей возникнет вопрос, почему я отнес функцию X к категории Y, когда она явно относится к категории Z. Это вопрос перспективы, на которую влияет, как именно ваша компания ведет дела.
Я понимаю, что специалисты по базам данных часто выполняют различные роли заданий, но я попытаюсь систематизировать новые функции по следующим общим категориям: управление, масштабируемость, производительность, высокая доступность, безопасность, разработка и бизнес-аналитика.
Новое для управления.
Для администраторов баз данных (таких, как я) дополнительные функции управления делают сервер SQL Server 2008 новым отличным продуктом. Новое управление политиками, возможность нескольких запросов сервера, серверы конфигурации и сборщик данных/ хранилище управления предоставляют новые мощные возможности для администраторов баз данных, которые часто ответственны за управление большими и сложными средами баз данных с сотнями или тысячами баз данных на десятках или даже сотнях серверов.
Функция управления политиками SQL Server 2008, которая называлась функцией динамического управления (DMF – Declarative Management Framework) в CTP-версиях, позволяет создавать и выполнять политики конфигурации для одного или нескольких серверов баз данных. Эти политики обеспечивают применение параметров стандартной конфигурации на всех целевых серверах и базах данных. Пример этой функции показан на рис. 1.
Рис 1 Политика рекомендаций по размещению файлов данных и журналов
Политики создаются на основе предопределенного набора аспектов. Каждый аспект содержит подгруппу параметров конфигурации SQL Server 2008 и других событий, которыми можно управлять. Данным аспектам сопоставляются условия для создания политики. Условия – это значения, разрешенные для свойств аспекта, параметров конфигурации или других событий, содержащихся в данном аспекте.
Условиями также являются значения, используемые для фильтров политики. Предположим, политику необходимо применить только для определенной базы данных. В этом случае можно создать условие, содержащее имя базы данных, а затем добавить это условие к политике. После этого политика будет применяться только к данной базе данных. Поверьте мне, управление политиками SQL Server 2008 может показаться сложным, но если вы попробуете его использовать, то убедитесь, что это интуитивно понятный процесс.
Новые возможности взаимодействия нескольких серверов и серверы конфигурации удобны при необходимости одновременного выполнения запросов к нескольким серверам. Можно зарегистрировать серверы в среде Management Studio, а затем объединить их с помощью группирования. При необходимости выполнения политики или запроса для всех серверов в группировании ее следует просто щелкнуть правой кнопкой мыши и выполнить требуемые действия.
Дополнительным преимуществом является возможность настройки этой функции для возврата одного набора результатов для сервера или объединения наборов результатов в один большой набор. Также можно указать, будут ли имена сервера и баз данных являться частью результатов, чтобы отделить результаты для отдельных серверов. Возможность сохранения зарегистрированных серверов на сервере конфигурации, а не в отдельных Management Studio является большим преимуществом.
Другой новой привлекательной функцией управление является сборщик данных. Администраторам баз данных часто необходим сбор данных управления от большого числа серверов, и многие администраторы создали собственные решения для выполнения этого процесса. Сборщик данных – это встроенный механизм, упрощающий задачу сбора данных, относящихся к управлению. Он позволяет использовать агент SQL Server и службы SQL Server Integration Services (SSIS) для создания платформы для сбора и сохранения данных, предоставляя возможности обработки ошибок, аудита и ведения журнала сбора данных.
В отличие от средств сторонних разработчиков и пользовательских заданий сборщик данных будет достаточно понятен большинству администраторов баз данных, поскольку он использует агент SQL Server Agent и службы SSIS для создания набора заданий и пакетов для обработки подключений, сбора и хранения данных (как показано на рис. 2). После сохранения данных в централизованном хранилище, которое называется хранилищем управления, они могут просматриваться и систематизироваться с помощью набора инструкций T-SQL и отчетов служб SQL Server 2008 Reporting Services. Это централизованное хранилище данных значительно упрощает анализ и просмотр общих показателей управления среды базы данных.
Рис 2 Файл журнала использования дискового пространства сборщика данных
Новое для масштабируемости.
По многолетним наблюдениям администраторов баз данных SQL Server размер их сред баз данных постоянно увеличивается. С увеличением размера среды базы данных требуются новые способы и средства для обеспечения масштабируемости, необходимой для большинства предприятий. В SQL Server 2008 появилось несколько новых функций, которые могут в этом помочь.
SQL Server 2008 имеет встроенную функцию сжатия, позволяющую сжимать файлы базы данных и журналов транзакций, связанные с соответствующей базой данных. В SQL Server 2005 появилась возможность сжатия данных файлов или файловых групп, доступных только для чтения, но эта форма сжатия просто использует возможность сжатия файловой системы Windows® NTFS. В SQL Server 2008 появилось сжатие на уровне строк и страниц, которое предоставляет преимущества, недоступные при сжатии на уровне файлов данных.
Сжатие на уровне строк и страниц уменьшает необходимое пространство данных, а также необходимый объект памяти, поскольку данные в памяти остаются сжатыми. Сжатые данные в памяти позволяют увеличить использование памяти, что выгодно для масштабируемости множества систем.
В SQL Server 2008 также появилось сжатие на уровне резервной копии. Хотя при резервном копировании базы данных создается только резервная копия активной части базы данных, это обеспечивает высвобождение сотен гигабайт или даже десятков терабайт свободного пространства. В средах баз данных с несколькими копиями файла резервной копии объемом несколько терабайт эти резервные копии часто занимают ценное дисковое пространство, которое могло использоваться более эффективно. Предоставляя администраторам баз данных возможность сжатия файлов резервных копий SQL Server 2008 освобождает часть этого пространства, чтобы оно могло использоваться для реальных данных.
Также появился регулятор ресурсов. Эта новая функция позволяет определять объем ресурсов, который может использоваться отдельными рабочими нагрузками или группами рабочих нагрузок во время выполнения. Регулятор ресурсов позволяет создавать среду, в которой на одном сервере сосуществует множество различных рабочих нагрузок без опасности того, что одна или несколько этих нагрузок вызовут перегрузку сервера или снижение производительности других рабочих нагрузок.
Преимущество этой функции заключается в том, что она обеспечивает возможность более эффективного использования общего объема ресурсов, доступных на серверах баз данных. На рис. 3 показан пример использования регулятора ресурсов для ограничения операций на сервере.
Рис 3 Limit activity with the Resource Governor
USE master
go
--Drop function
IF OBJECT_ID('rgclassifier_demo','Function') IS NOT NULL
DROP FUNCTION rgclassifier_demo
go
--Create a classifier function for report group
CREATE FUNCTION rgclassifier_demo() RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @group_name AS SYSNAME
IF (USER_NAME() LIKE '%Launch_Demo%')
SET @group_name = 'demogroup'
RETURN @group_name
END
GO
--Drop workload group for anything coming from Management Studio
IF EXISTS (SELECT name FROM sys.resource_governor_workload_groups
WHERE name = 'demogroup')
BEGIN
DROP WORKLOAD GROUP demogroup
END
GO
--Create workload group
CREATE WORKLOAD GROUP demogroup
GO
--Register the classifier function with
--Resource Governor
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION= dbo.rgclassifier_demo)
GO
--Alter the dbogroup workload group to only
--allow 10% of CPU for each workload request
ALTER WORKLOAD GROUP demogroup
WITH (REQUEST_MAX_CPU_TIME_SEC = 10)
GO
--Create a new resource pool and set a maximum CPU limit for all workloads.
IF EXISTS (SELECT name FROM sys.resource_governor_resource_pools
WHERE name = 'pooldemo')
DROP RESOURCE POOL pooldemo
GO
CREATE RESOURCE POOL pooldemo
WITH (MAX_CPU_PERCENT = 40)
GO
--Configure the workload group so it uses the
--new resource pool.
ALTER WORKLOAD GROUP demogroup
USING pooldemo
GO
--Apply the changes to the Resource Governor
--in-memory configuration.
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
Новое для производительности.
SQL Server 2008 увеличивает общую производительность баз данных. Благодаря нескольким новым функциям, представленным в SQL Server 2008, появилась возможность управления и наблюдения за производительностью баз данных и приложений, которые выполняются на них.
При наличии множества транзакций, выполняемых каждую секунду, блокировка, обычно происходящая во при выполнении этих транзакций, может иметь негативное воздействие на производительность приложений базы данных. SQL Server обеспечивает уменьшение общего число блокировок, сохраняемых процессом, благодаря укрупнению небольших блокировок уровня строк и страниц до больших блокировок уровня таблиц. Но важно понимать, что такое укрупнение блокировок может вызывать проблемы. Например, одна транзакция может блокировать всю таблицу и препятствовать работе других транзакций с ней.
SQL Server 2008 работает с механизмом секционирования таблиц (который появился в SQL Server 2005), позволяя ядру SQL Server укрупнять блокировки на уровне секции до уровня таблицы. Этот промежуточный уровень блокировки может значительно снизить эффект укрупнения блокировок в системах с обработкой сотен и тысяч транзакций в секунду.
SQL Server 2008 предлагает несколько новых улучшений обработчика запросов для взаимодействия запроса с секционированными таблицами. Теперь оптимизатор запросов может выполнять поиск запросов в секциях так же, как и в отдельных индексах, работая только с идентификатором секции, а не с механизмом секционирования на уровне таблиц.
Новое для высокой доступности.
С повышением сложности сред баз данных и ростом размеров баз данных возможность обеспечения доступности этих баз данных значительно усложняется. Знакомые механизмы, использовавшиеся ранее для достижения высокой доступности, сохранились в SQL Server 2008. Но некоторые из этих функций улучшены в SQL Server 2008, кроме того, добавлены новые функции.
Сервер SQL Server 2005 позволил множеству администраторов использовать зеркальное отображение базы данных для достижения высокой доступности. SQL Server 2008 предоставляет множество улучшений зеркального отображения базы данных. Например, ранее зеркальное отображение базы данных иногда приводило к появлению проблем производительности, относящихся к переносу данных журнала транзакций из основных баз данных в зеркальные. С учетом этого SQL Server 2008 теперь уменьшает объем информации, передаваемой по сети между журналами транзакций основной и зеркальной баз данных, с помощью сжатия информации до ее отправки в журнал транзакции зеркальной базы данных с целью усиления защиты.
Теперь имеется возможность восстановления поврежденных страниц данных на основном сервере. Если в основной базе данных имеются поврежденные страницы данных, обусловленные ошибками 823 и 824, основной сервер может запросить текущую копию этих страниц данных у зеркальных серверов. Этот запрос рабочих страниц данных – автоматизированный процесс, который скрыт это всех пользователей, обращающихся в это время к основным базам данных.
Другая новая функция, ЦП с поддержкой горячей замены, позволяет устанавливать на сервере базы данных дополнительные ЦП, не влияя на доступность баз данных, находящихся на этом сервере. Однако необходимо знать, что ЦП с поддержкой горячей замены имеет некоторые ограничения, поскольку полезна только для 64-разрядных выпусков Windows Server® 2008 Enterprise Edition и Datacenter Edition для систем с процессорами Itanium и для нее необходим выпуск Enterprise Edition сервера SQL Server 2008.
Новое для безопасности.
В SQL Server 2005 появилась безопасность данных в форме шифрования данных. В SQL Server 2008 шифрование значительно улучшено благодаря введению двух новых функций: расширенное управление ключами и прозрачное шифрование данных.
Расширенное управление ключами обеспечивает улучшенную структуру для безопасного сохранения ключей, используемых в инфраструктуре шифрования — не только в самой базе данных, но и вне ее в программных модулях сторонних разработчиков или с аппаратным модулем безопасности.
Прозрачное шифрование данных обеспечивает более высокую гибкость шифрования данных, позволяя шифрованию быть свойством базы данных, а не результатом функций в строке кода. В результате администраторам не требуется выполнять множество необходимых изменений структуры базы данных и кода приложений при выполнении шифрования на уровне данных. В коде на рис. 4 показан пример шифрования базы данных с прозрачным шифрованием данных.
Рис 4 Using Transparent Data Encryption
IF OBJECT_ID ( 'Demo_SpatialTable', 'Table' ) IS NOT NULL
DROP TABLE Demo_SpatialTable
GO
--Create table to hold spatial data
CREATE TABLE Demo_SpatialTable
( SpatialID int IDENTITY (1,1),
SpatialInputCol geography,
SpatialOutputCol AS SpatialInputCol.STAsText() )
GO
--Insert data into table
INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('LINESTRING(47.656 -122.360, 47.656 -122.343)', 4326));
INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('POLYGON((47.653 -122.358, 47.649 -122.348, 47.658 -122.348, 47.658 -122.358, 47.653 -122.358))', 4326));
GO
--View data to see that data has been converted and stored in col2
SELECT * FROM Demo_SpatialTable
Новое для разработчиков.
Администраторы баз данных – не единственные, кому непосредственно выгодны изменения SQL Server 2008. Появился ряд новых функций, предназначенных для разработчиков баз данных. К ним относятся несколько новых улучшений T-SQL для новых компонентов, помогающих разработчикам в создании и использовании запросов баз данных.
Множество разработчиков баз данных занимается созданием запросов, необходимых для возврата данных, которые необходимы их приложениям. Вы, вероятно, знакомы со средством LINQ (Language Integrated Query), позволяющим разработчикам баз данных выполнять запросы к базам данных, используя язык программирования на основе Microsoft® .NET вместо обычных инструкций T-SQL. SQL Server 2008 улучшает LINQ, предоставляя нового поставщика LINQ to SQL, который позволяет разработчикам выполнять команды LINQ непосредственно для столбцов и таблиц SQL Server. Это уменьшает количество времени, необходимого для создания новых запросов данных.
При разработке для баз данных разработчики используют объекты более высокого уровня, сопоставляемые с отдельными столбцами и таблицами баз данных. Эти объекты, также называемые сущностями, представляют данные, необходимые приложениям баз данных, поэтому разработчику не требуется знать действительную структуру хранения данных и схему базы данных. Новая платформа ADO.NET Entity Framework позволяет разработчикам создавать запросы баз данных с помощью этих сущностей. Абстрагирование базовой структуры базы данных позволяет увеличить производительность разработчиков.
SQL Server 2008 включает множество различных улучшений T-SQL, позволяющих увеличить производительность разработчиков. В качестве примера можно привести новую инструкцию MERGE, которая позволяет разработчикам проверять существование данных до их вставки. Это проверка, осуществляемая до выполнения инструкции INSERT, обеспечивает возможность обновления данных. Больше не требуется создавать сложные соединения для обновления существующих и вставки новых данных в одной инструкции.
Кроме того, отделение данных даты и времени от смешанного типа данных даты-времени значительно упрощено. В SQL Server 2008 представлены два отдельных типа данных для обработки данных даты и времени. Различные типы данных приводят к улучшению производительности для множества запросов, для использования данных в запросе больше не требуется предварительное выполнение операции с данными.
При создании новых структур баз данных разработчики часто растягивают структуры для реализации приложений сопоставления. SQL Server 2008 помогает разрешить эту проблему с помощью новых пространственных типов данных. Два пространственных типа данных, GEOGRAPHY и GEOMETRY, позволяют разработчикам сохранять данные, относящиеся к размещению, непосредственно в базе данных без необходимости разбивки этих элементов данных в форматы, соответствующие стандартным типам данных. В коде на рис. 5 показан пример простой пространственной таблицы.
Рис 5 A simple spatial table
IF OBJECT_ID ( 'Demo_SpatialTable', 'Table' ) IS NOT NULL
DROP TABLE Demo_SpatialTable
GO
--Create table to hold spatial data
CREATE TABLE Demo_SpatialTable
( SpatialID int IDENTITY (1,1),
SpatialInputCol geography,
SpatialOutputCol AS SpatialInputCol.STAsText() )
GO
--Insert data into table
INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('LINESTRING(47.656 -122.360, 47.656 -122.343)', 4326));
INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('POLYGON((47.653 -122.358, 47.649 -122.348, 47.658 -122.348, 47.658 -122.358, 47.653 -122.358))', 4326));
GO
--View data to see that data has been converted and stored in col2
SELECT * FROM Demo_SpatialTable
>Распространенной проблемой разработчиков баз данных в прошлом являлось сохранение и использование больших двоичных объектов, таких как документы и файлы мультимедиа. Обычно использовавшимся способом было сохранения файлов вне базы данных, а в базе данных сохранялся только указатель на внешний файл. Однако при использовании этого способа при перемещении файла также необходимо помнить об обновлении указателя.
В SQL Server 2008 эта проблема решается с помощью нового типа данных FILESTREAM. При использовании этого типа данных файлы могут сохраняться не в базе данных, но данные считаются частью базы данных для обеспечения согласованности транзакций. Это позволяет использовать общие файловые операции, сохраняя преимущества производительности и безопасности базы данных.
Как насчет бизнес-аналитики?
Увеличение использования SQL за последние несколько лет в значительной степени обусловлено внедрением стратегий бизнес-аналитики. Возможности бизнес-аналитики существовали в SQL Server и раньше, но в SQL Server 2008 включен ряд новых функций.
Например, при сохранении данных в хранилищах данных пространство часто тратится на значения NULL. Столбцы, в которых сохранены значения NULL, занимают пространство наибольшего допустимого размера данных, определенного в столбце. Это означает, что столбец с тысячами значений NULL может занимать много МБ пространства, в действительности не храня никаких данных.
В SQL Server 2008 появились разреженные столбцы, позволяющие сохранять значения NULL, не занимая физического пространства на диске. Поскольку разреженные столбцы не занимают фактического пространства, размер таблиц, содержащих разреженные столбцы, может превышать ограничение 1 024.
В SQL Server 2008 также появился новый механизм, отслеживание изменений в данных, для управления добавочными изменениями, которые должны быть загружены в хранилище данных. Выполняется отслеживание и размещение измененных данных в наборе таблиц изменений. Отслеживание обновленных, удаленных и вставленных данных в простой в использовании схеме хранения позволяет выполнять добавочную загрузку хранилищ данных из этих таблиц — в отличие от необходимости создания пользовательских инструкций INSERT, пытающихся определить изменения существующих строк данных, выполненные до загрузки хранилища данных.
Заключение
Это всего лишь краткий обзор новых возможностей SQL Server 2008. В этот выпуск включен широкий набор новых функций и обновлений существующих функций, направленных на упрощение работы администраторов и разработчиков баз данных. В конечном счете, он предоставляет значительно улучшенную производительность и масштабируемость для современных баз данных с огромными требованиями.