Главная » Microsoft SQL Server, Базы данных » Обзор SQL Server 2005 Everywhere Edition

0

Несмотря на то что SQL Everywhere представляет собой полностью переработанный продукт, обладающий большим количеством справочного материала и документации, чем его предшественники, краткий экскурс в историю развития этого продукта будет не лишним.

История

С пакетом Visual Studio 2003, средой .NET Compact Framework 1.0 и СУБД SQL Server 2000 компания Microsoft представила бесплатно распространяемую реляционную базу данных для карманных компьютеров и системы Windows СЕ, которая называется SQL Server 2000 Windows СЕ Edition (или SQL СЕ). Занимая всего порядка 1,5 Мбайт на устройстве, SQL СЕ предоставляла на удивление богатую реализацию основных функций SQL Server 2000. В эту СУБД была включена поддержка подмножества индексов и объединений ANSI SQL-92, оптимизированный процессор запросов и интерфейсы программирования ADOCE, OLEDB и ADO.NET. В SQL СЕ также были представлены две технологии синхронизации мобильных данных с корпоративными серверами: удаленного доступа к данным (RDA) и репликации слияния.

Хотя SQL СЕ представляла собой пригодную реляционную базу данных для решений Windows Mobile, она имела ряд ограничений. Наиболее существенным из них было то, что данная база могла существовать исключительно в контексте мобильных устройств. Приходилось создавать, настраивать и обслуживать базу данных SQL СЕ либо с помощью программного кода, либо с помощью миниатюрной версии анализатора запросов (Query Analyzer), запускаемой на устройстве. SQL СЕ также ограничивала доступ к базе данных всего одним подключением, не исключала возможности искажения данных, что приводило к частым операциям восстановления и обслуживания мобильной базы данных. Например, работая с SQL СЕ, мобильным пользователям приходилось делать перезагрузку во время операций записи, после чего база данных становилась непригодной к работе и требовала восстановления. Очевидно, что это была совершенно не идеальная ситуация для администраторов баз данных, поддерживающих сотни мобильных устройств, разбросанных по широкому географическому региону.

Концепции

Для понимания того, где может найти место SQL Everywhere в архитектуре предприятия, в противоположность более знакомым СУБД SQL Server 2000 или 2005, важно осознать некоторые фундаментальные концепции. SQL Everywhere является компактной полноценной системой управления базами данных (СУБД), предназначенной для работы на устройствах с установленной системой Microsoft Windows Mobile. СУБД SQL Everywhere совместима с такими версиями, как Pocket PC 2003, Windows Mobile 5 и Windows Mobile 5 Smart Phone Edition. Особо отмечу, что в настоящее время платформа Windows CE.NET 4.2 не поддерживается в SQL СЕ. однако такую поддержку обещают с выходом в свет .NET Compact Framework 2.0 Service Pack 1.

Интересно заметить, что SQL Everywhere также лицензирована для системы Windows ХР Tablet PC Edition, но ни для какой другой платформы х86, если, конечно, на том же компьютере не установлена лицензионная копия Visual Studio 2005 или SQL Server 2005. Компания Microsoft рассматривает Tablet PC как идеальную платформу для клиентских приложений, a SQL Everywhere — как подходящую и легко устанавливаемую СУБД для поддержки этих приложений.

Решение компании Microsoft лицензировать SQL Everywhere только для единст- /Назаметку венной х86-платформы Tablet PC может выглядеть несколько странным. В конце концов, разве редакция SQL Server 2005 Express не является облегченной версией СУБД, предназначенной для клиентских приложений? Сообщество MVP пыталось оказать давление на компанию Microsoft, чтобы та расширила лицензирование SQL Everywhere на другие платформы х86, чтобы избежать необходимости сложного конфигурирования репликации между портативными и стационарными устройствами, однако эти просьбы не встретили поддержки. К этому следует добавить сложность репликации баз данных SQL Express, развернутых “с помощью одного щелчка”, вместе с полезными клиентскими приложениями, которая требует глубокого знания программирования RMO, что делает SQL Everywhere достойным решением в этом сценарии.

Единственным неприятным моментом является то, как именно компания Microsoft лицензирует SQL Everywhere. Эта СУБД может свободно распространяться на устройства, на которых установлены только что упомянутые операционные системы. В то же время необходимо приобрести лицензию SQL Server для использования доступа к удаленным данным (RDA), репликации слияния, а также для других подключений к SQL Server из SQL Everywhere. С особенностями лицензирования SQL Everywhere вы можете ознакомиться на сайте www.microsoft.com/sql/editions/sqlmobile/howtobuy.mspx.

Основной задачей SQL Everywhere является поддержка базы данных, которая является либо основным хранилищем для мобильных приложений, либо временным кэшем в сценариях, где данные извлекаются из сервера, создаются и модифицируются на устройстве, а затем снова возвращаются на сервер. SQL Everywhere можно интегрировать в проекты .NET Compact Framework Smart-Device с помощью Visual Studio 2005. Она предлагает поддержку OLEDBCE для приложений, написанных на языке Visual C++ for Devices в среде разработки Visual Studio 2005. Основные архитектурные компоненты SQL Everywhere показаны на рис. 26.1.

Как показано на рис. 26.1, двумя основополагающими компонентами SQL Everywhere являются ядро хранилища данных и процессор запросов. К ним можно получить доступ как из стандартного, так и из управляемого программного кода. Проще говоря, ядро хранилища данных SQL Everywhere является надежным долгосрочным хранилищем, а процессор запросов обеспечивает реляционный доступ к этому хранилищу. Ядро хранилища SQL Everywhere

было полностью переписано со времен SQL СЕ и сейчас является тем же ядром, которое использует Windows CE.NET Object Store (хотя к последнему невозможно непосредственно обратиться с помощью ADO.NET).

Рис. 26.1. Архитектура SQL Server 2005 Everywhere

Процессор запросов представляет собой основанный на стоимости эвристический исполнительный механизм, который отличается эффективностью, принимая во внимание малое место, занимаемое им на устройстве. Занимая всего лишь около 1.5 Мбайт на мобильном устройстве, SQL Everywhere реализует.большую часть функций СУБД SQL Server 2005, которая, в свою очередь, потребляет минимум 38 Мбайт.

Термин основанный на стоимости означает, что процессор запросов рассмат- Назаметку ривает множество планов выполнения и выбирает из них самый эффективный.

Термин эвристический означает, что процессор может заменить запрос его аналогом, который получает те же результаты, но рассматривается как более эффективный (например, выражение in в запросе может быть переписано с использованием синтаксиса join).

Возможности SQL Everywhere во многом аналогичны SQL Server 2005.

?               Создание, модификация и удаление таблиц, индексов и ограничений.

?               Выполнение инструкций языков определения данных (DDL) и манипуляций данными (DML) с подмножеством ANSI-92 SQL.

?               Создание и гарантирование АСГО-транзакций (т.е. обладающих свойствами атомарности, согласованности, изолированности и живучести).

?               Выполнение запросов к представлениям схемы и метаданным.

?               Влияние на выполнение запросов с помощью параметров и поддержание порядка объединений.

Как только вы погрузитесь в программирование для SQL Everywhere, то сразу заметите сходство с SQL Server 2000 и 2005. В то же время существует и ряд различий, о которых нужно знать, начиная работать с SQL Everywhere.

?               База данных SQL Everywhere не различает регистры символов, и настроить ее по- другому невозможно.

?               Поддерживаются только типы данных Unicode (т.е. тип nvarchar поддерживается, а varchar — нет).

?               Во время доступа к удаленным данным и в процессе репликаций слияния могут произойти автоматические преобразования типов.

?               Некоторые типы данных SQL Server не поддерживаются в SQL Everywhere (например, smallmoney).

?               Некоторые типы данных нельзя включать в функции так, как это можно сделать в SQL Server. Например, столбцы ntext нельзя включать в строчные функции SQL Everywhere.

?               Не вся спецификация ANSI-92 SQL, реализованная в языке Т-SQL для SQL Server 2005, поддерживается в SQL Everywhere. Например, ограничены возможности подзапросов, многие встроенные функции Т-SQL отсутствуют, а скобки не поддерживаются в качестве разделителей.

?               Даже если в таблице определено множество индексов, при составлении плана выполнения процессор запросов рассмотрит их все, но выберет только один.

?               SQL Everywhere не обрабатывает пакеты инструкций Т-SQL — только по одной инструкции за раз.

?               Отсутствует поддержка репликаций транзакций и мгновенных снимков.

?               Web-репликации не требуют защищенной передачи посредством протокола SSL, так же как в SQL Server 2005 или SQL Express.

?               Объем базы данных SQL Everywhere ограничен пределом 4 Гбайт, при этом автоматически устанавливается в 128 Мбайт.

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

Некоторые функции SQL Server 2005 вообще не включены в SQL Everywhere из соображений экономии памяти, в том числе:

?               триггеры;

?               представления;

?               хранимые процедуры;

?               пулы подключений;

?               распределенные транзакции;

?               шифрованные строки подключения.

Все эти отличия приспосабливают SQL Everywhere к особенностям мобильных решений. Перед тем как вы начнете возмущаться каким-либо из ограничений в приведенном выше списке (“Что?! Нет хранимых процедур?”), хочу заметить, что я разработал около двух десятков мобильных решений с использованием SQL СЕ и SQL Everywhere, а потому с уверенностью могу сказать, что никакие затраты на корректировку технического задания, которые пришлось выполнить, не могли сравниться с достоинствами этого на удивление маленького, но мощного ядра базы данных.

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

Забегая вперед, отмечу, что в SQL Everywhere существуют два метода синхронизации данных с SQL Server 2000/2005: доступ к удаленным данным (RDA) и репликация слияния. На рис. 26.2 показаны главные компоненты архитектуры синхронизации данных SQL Everywhere. Все эти компоненты мы детально рассмотрим в настоящей главе.

Рас. 26.2. Архитектура репликации SQL Everywhere

Следует заметить, что оба сценария синхронизации (RDA и репликация слияния) в качестве шлюза между SQL Everywhere и SQL Server используют сервер Internet Information Server (IIS), в котором запущен агент SQL Server Everywhere Server Agent (ISAPI DLL). Существуют ситуации, когда достойной альтернативой данного подхода к синхронизации данных является использование Web-служб; в то же время компания Microsoft считает, что RDA и репликация слияния способны покрыть львиную долю наиболее распространенных сценариев.

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

По теме:

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