DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Первый взгляд на Advantage Database Server 10

Автор: Кэри Дженсен

С выпуском Advantage версии 10 компания Sybase продолжает традицию последовательного улучшения этого
высокопроизводительного и простого в обслуживании сервера баз данных. В дополнение к богатому набору дополнительных функций и расширеннной функциональности, этот релиз включает в себя большое количество внутренних оптимизаций, улучшающих производительность большинства клиентских приложений путём простого обновления сервера до Advantage 10. Эти улучшения представляют значительную ценность для уже впечатляющего набора функций, делая Advantage Database Server идеально подходящим для приложений с малым и средним размером баз данных.
Обзор
Advantage Database Server (ADS) является высокопроизводительным и простым в обслуживании сервером баз данных компании Sybase. ADS поддерживает впечатляющий набор функций, часто встречающихся в high-end-базах данных. Эти возможности, в сочетании с простотой установки и обслуживания, сделали его ведущей СУБД для приложений вертикального рынка. С каждым новым выпуском Advantage, команда Sybase последовательно наращивает обороты, вводя новые и расширенные функции, а также ещё больше улучшая высокую производительность сервера. Эта традиция продолжается с релизом Advantage 10.
В данной статье приведён краткий обзор Advantage Database Server, а затем рассматриваются новые и расширенные функции Advantage 10. Если вы уже знакомы с Advantage, вы можете перейти непосредственно к разделу "Новые функции и возможности Advantage 10".
Обзор Advantage Database Server
Advantage Database Server обеспечивает уникальный набор функций, которые делают его идеальной СУБД для приложений малого и среднего размера. Основные характеристики, выделяющие Advantage, описаны в следующих разделах.
Высокая производительность
Проще говоря, Advantage быстр. Большая часть его скорости происходит от его архитектуры, основанной на технологии ISAM (indexed sequential access method, индексированный последовательный метод доступа). ISAM широко использует индексы для быстрого поиска в таблицах, фильтры и соединения таблиц. В отличие от других технологий ISAM, таких как DBase и Clipper, Advantage Database Server является транзакционным удалённым сервером баз данных. В результате он обеспечивает разработчиков приложений надёжным распределённым решением для управления данными с использованием технологии клиент/сервер.
Простота в администрировании
Advantage Database Server устанавливается за несколько минут и после этого редко требует внимания. Действительно, в отличие от high-end-серверов баз данных, большинство инсталляций Advantage не имеют администратора баз данных. Это делает Advantage идеальным сервером для приложений вертикального рынка, когда сервер может быть установлен на многих объектах, не имеющих своего собственного ИТ-отдела.
Навигационная и выборочная ориентированность
Хотя Advantage и основан на навигационной архитектуре ISAM, он также поддерживает промышленный стандарт SQL (структурированный язык запросов), причём большая часть операций SQL оптимизируется для лёгкого и быстрого выполнения. В результате Advantage является одним из редких удаленных серверов баз данных, поддерживающих как навигационную модель доступа к данным, так и основанный на выборках SQL, давая вам богатство вариантов представления и управления данными.
Расширенный набор функций
Advantage Database Server поддерживает впечатляющий набор функций, которые обычно присутствуют только в профессиональных серверах баз данных. Они включают безопасность, обеспечиваемую пользователями и группами, шифрованием таблиц и поддержкой шифрования соединений клиент/сервер.
Дополнительные профессиональные возможности, поддерживаемые Advantage, включают хранимые процедуры, SQL PSMs (persistent stored modules - постоянно хранимые модули), представления, пользовательские функции, ограничения на уровне таблиц и полей, ссылочная целостность, online-резервное копирование, триггеры, уведомления и репликации.
Масштабируемость
Advantage существует в двух основных вариантах: Advantage Database Server (ADS) и Advantage Local Server (ALLS). ALS является свободной файл-серверной технологией, API которой идентичен API ADS. ALS позволяет разработчикам развертывать Advantage-приложения в рамках лицензии Royalty Free для клиентов, которым не требуются стабильность и мощь отдельного сервера баз данных. Важно отметить, что по мере роста потребностей приложений, развернутых с ALS, их можно практически без усилий перевести на технологию клиент/сервер, во многих случаях просто установив ADS. Если клиентские приложения спроектированы правильно, они смогут начать использовать ADS уже при следующем запуске.
Новые функции и улучшения Advantage 10
Вместо нудного перечисления обновлений, распишем усовершенствования в следующих разделах: Значительное улучшение производительности, улучшенные уведомления, дополнения к Advantage SQL, вложенные транзакции, поддержка Unicode, дополнительные 64-разрядные клиенты, поддержка DesignTime-разработки в Delphi, совместная установка. 
Значительное улучшение производительности
Advantage Database Server всегда был уважаем за отличную производительность, будучи в состоянии обрабатывать очень большие объемы данных с огромной скоростью. Что особенно интересно - это то, что именно производительность является одним из наиболее заманчивых аспектов модернизации до Advantage 10. В частности, производительность операций с базами данных в клиентских приложениях улучшится путём простого обновления сервера до Advatage 10. В некоторых случаях этот прирост производительности будет значительным. Многие из внутренних систем, способствущих уже впечатляющей производительности Advantage, были проработаны R&D-инженерами Advantage. По возможности вводились улучшенные алгоритмы, реализовывалось и усиливалось кэширование, объединялись ресурсы.
Эти изменения привели к более эффективному индексированию, улучшенной обработке транзакций и более интеллектуальному управлению различными ресурсами, такими как потоки, блокировки записей и записи в файл. Эффект от этих улучшений - от хорошего до потрясающего. Во время бета-цикла Advantage 10 один из бета-тестеров сообщил результаты своего теста производительности на нескольких больших запросах, включающих, в некоторых случаях, миллионы записей. Он обнаружил, что некоторые запросы в Advantage 10 выполняются на 40 процентов быстрее, чем те же запросы в Advantage 9.
В других случаях запросы Advantage 10 были даже экспоненциально быстрее (один запрос, который выполнялся 2,7 секунды в Advantage 9, в Advantage 10 занял около 1 миллисекунды). Команда R&D провела аналогичные усовершенствования в ходе тестирования. Но SQL запросы - не единственная область для извлечения пользы из этих внутренних улучшений Advantage. Также улучшены операции, связанные с навигацией по данным Advantage. В самом деле, файлы справки для Advantage 10 описывают не менее 20 конкретных улучшений или оптимизаций, введённых в Advantage 10. И эти обновления затрагивают всё: от каскадных обновлений ссылочной целостности до вставки записей, от обновлений заголовка мемо-файла до создания таблиц, от низкоуровневых индексных операций до рабочего управления потоками. Проще говоря, расширения для увеличения производительности, введённые в Advantage 10, уже дают солидные бизнес-преимущества для обновившихся с более ранних версий Advantage.
Улучшенные уведомления
Уведомления - функциональность, впервые введённая в Advantage 9, и она даёт вам механизм, посредством которого Advantage может уведомить заинтересованные клиентские приложения о некоторых изменениях, произошедших на сервере. Например, клиентское приложение может подписаться на уведомление, чтобы получить информацию о том, что содержимое определённой таблицы изменилось. Клиентское приложение может потом использовать эту информацию для обновления набора данных у конечного пользователя.
Небольшое изменение в уведомлениях в Advantage 10 привело к весьма значительному улучшению их полезности:
Уведомления Advantage 10 теперь поддерживают пакет данных. Этот пакет данных в виде мемо-поля позволяет вам включать вместе с уведомлением любые данные, которые вам нужны. Эти данные могут включать в себя ID записи, изменившейся в интересующей таблице, ID соединения пользователя, сделавшего изменение, тип изменения или любые другие данные, которые вы хотите. Это данные позволяют вам реализовать дополнительные возможности для клиентов, подписанных на уведомления. Например, теперь вы можете различать изменения, сделанные пользователем вашего клиентского приложения и другими пользователями. Эта информация может быть использована для автоматического обновления данных, просматриваемых пользователем, когда кто-то внёс изменения, игнорируя изменения, помещённые тем пользователем.
Дополнения к Advantage SQL
Существует много обновлений и дополнений в SQL для Advantage. Из них моим любимым является новая возможность использования хранимых процедур в предложении FROM запроса SELECT. Если у вас есть хранимая процедура, возвращающая результирующий набор, вы можете обращаться к этому набору как к таблице в операторе SQL SELECT, что позволит вам выбрать определенные поля или выражения из результирующего набора, присоединять результат хранимой процедуры к другим таблицам (или 

к результирующим наборам другой хранимой процедуры) 

и определять в предложении WHERE условия выборки интересующих Вас записей. Вы даже можете использовать в предложении FROM предопределенные системные хранимые процедуры Advantage.
Ещё одним усовершенствованием является возможность использовать логические выражения в ваших SQL-операторах. Например, если у вас есть таблица с именем CUSTOMER, в которой присутствует булево (логическое) поле Active, следующий запрос выберет все записи, в которых поле Active содержит значение True. SELECT   *   FROM   CUSTOMER  WHERE   Active ;
В предыдущих версиях Advantage Вы должны были сформировать этот же запрос так:
SELECT   *   FROM   CUSTOMER  WHERE   Active   =   True ;
Кроме того, TOP-запросы теперь поддерживают предложение START AT, что позволяет вам выбрать определённое число записей, начиная с нужной позиции (не с самой первой). Например, следующий запрос возвращает записи с 11 по 15 из таблицы CUSTOMER, упорядоченных по фамилии.
SELECT TOP 5  START AT 11 FROM CUSTOMER ORDER BY LastName;
Также был введён набор битовых SQL-операторов. К ним относятся AND, OR и XOR, а также >> 

(сдвиг вправо) 

и << 

(сдвиг влево).

Существует также новая скалярная SQL-функция: ISOWEEK, возвращающая ISO 8601-номер недели для указанной даты (это также новая функция движка выражений). А вот ещё несколько скалярных SQL-функций, которые ранее не были функциями движка выражений.
Это функции DAY,  DAYOFYEAR,  DAYNAME и MONTHNAME. Также в
движок выражений были добавлены функции CHAR2HEX и HEX2CHAR.
Поддержка в движке выражений означает, что индексы могут теперь быть созданы с использованием этих функций, которые в свою очередь, позволяют движку запросов Advantage полностью оптимизировать ограничения, использующие эти функции.
Наконец, есть целый ряд новых системных хранимых процедур и системных переменных. Ниже приводятся лишь некоторые из новых системных хранимых процедур, доступных в Advantage 10:
and
sp_SetRequestPriority, sp_GetForeignKeyColumns, sp_IgnoreTableTransactions.
Что касается системных переменных, среди новых переменных есть: conn OperationCount 

(число операций, произведённых в этом соединении),

:: stmt. TrigEventType    (тип 

события выполняемого триггера),

:: stmt. TrigType        (тип 

выполняемого триггера), 

и
conn TransactionCount(текущая 

глубина вложенности вложенных транзакций).

Вложенные транзакции
Итак, теперь Advantage 10 поддерживает вложенные транзакции. В предыдущих версиях Advantage код, выполняемый в активной транзакции, не мог начать новую транзакцию без возбуждения исключения.
Но сейчас всё по-другому. Теперь, если вы пишете хранимую процедуру, операции которой должны быть выполнены в транзакции, вы можете спокойно вызывать BEGIN TRANSACTION, даже если эта хранимая процедура вызывается кодом, в котором транзакция уже активна.
Новые особенности таблиц
В Advantage 10 были введены несколько интересных табличных возможностей. Некоторые из них относятся к транзакциям и кэшированию таблиц. Рассмотрим сначала кэширование. До тех пор, пока позволяет объём памяти, временные таблицы полностью содержатся в кэше. В результате операции, полагающиеся на временные таблицы, как правило, проходят очень быстро.
Существует также новое свойство таблицы с названием Table Caching (кэширование таблицы). Большинство таблиц создаются с Table Caching, установленным в None. Эти таблицы не кэшируются, и любые изменения в этих таблицах немедленно записываются в основной файл. Когда Table Caching установлено в Read или Write, соответствующая таблица хранится в кэше, пока она открыта, что делает её данные высокодоступными. Эти параметры обычно используются для данных, которые в основном являются статическими, и которые могут быть реконструированы, если таблица получит повреждения. В частности, таблицы, содержащиеся в кэше, не записываются на диск, за исключением случаев, когда таблица закрыта.
В результате изменения в их данных будут потеряны, если Advantage неожиданно остановится, не имея возможности сохранить содержимое таблиц 

(например, при неожиданном отказе источника питания сервера). 

Тем не менее, эта функциональность может быть очень полезна для статических данных 

(почтовые индексы, шифры компонентов и т. 

д.). Транзакционно-свободные таблицы - это тоже функция, включаемая свойством таблицы Trans Free Table. Если установлено значение True, связанная таблица не участвует в транзакциях.
У таблицы, не участвующей в активной транзакции, есть две особенности. Во-первых, изменения, внесённые в такую таблицу во время транзакции, не отменяются, даже если транзакция откатывается. Во-вторых, изменения данных в транзакционно-свободной таблице не являются изолированными во время транзакции, будучи непосредственно видимыми для всех других клиентских приложений, даже если транзакция не подтверждена.
Так же, как и свойство Table Caching устанавливается в Read или Write, Trans Free Table в большинстве приложений устанавливается в True только для специальных таблиц. Например, вы можете использовать таблицу для протоколирования пользовательских действий в приложении. В этих случаях вы можете захотеть записать, что пользователь пытался произвести какое-то действие, хотя это действие может закончиться неудачей, а его изменения могут быть отменены.
Кроме того, вы можете иметь таблицу, используемую для генерации значений уникального ключа поля. Эта таблица может иметь единственную запись и единственное поле, содержащее целое число. Клиент, которому нужен ключ, блокирует эту таблицу, читает ключ, увеличивает это число, а затем снимает блокировку. В такой таблице инкрементный ключ должен быть видимым для всех клиентских приложений, даже если отдельные клиенты увеличивают ключ в рамках транзакции. Если бы такая таблица не была Trans Free Table, другие клиенты не смогли бы получить доступ к инкрементному ключу до завершения транзакции, обращение к таблице бесполезно.
Поддержка Unicode
Хотя поддержка Unicode, возможно, является особенностью таблиц, её значение требует отдельного рассмотрения. В Advantage 10 введены три новых типа полей. Эти типы nchar, nvarchar и nmemo, являются Unicode-полями с кодировкой UTF-16. Тип nchar - это строковое Unicode-поле фиксированной длины, а nvarchar - переменной длины. Данные этих двух типов полей хранятся полностью в файле таблицы. Для сравнения, поле nmemo - это Unicode-поле переменной длины, которое хранится в мемо-файле. Вместе эти три поля предоставляют вам ряд вариантов для хранения Unicode-символов в таблицах Advantage.
Дополнительные 64-разрядные клиенты
Добавлена поддержка Design-Time в Delphi. Advantage 9 представил 64-разрядные версии серверов для Windows и Linux, так же как и 64-битные клиенты для Advantage Client Engine (ACE) и Advantage. NET Data Provider.
В Advantage 10 добавлено ещё несколько 64-разрядных клиентов, включая 64-разрядные версии провайдера OLE DB, ODBC-драйвер, а также драйвер Linux PHP.
Advantage Data Provider for .NET также был усовершенствован для использования соответствующих 64-битных или 32-битных драйверов, в зависимости от ОС, на которой выполняется ваш управляющий код. Кроме того, в Advantage 10 вошли 64-разрядные версии Advantage Local Setver (ALS) и утилиты резервного копирования Advantage.
Добавлена поддержка Design-Time в Delphi
SQL Utility, всеобъемлющий SQL редактор и отладчик, в настоящее время преобразован в редактор свойств непосредственно в Delphi IDE. Для использования SQL Utility в Delphi выберите кнопку с многоточием на свойстве SQL в инспекторе объектов компонента AdsQuery.
Используя SQL Utility, вы можете проверить синтаксис вашего SQL, выполнить его и даже устанавливать точки останова и отлаживать ваши SQL-скрипты. По окончании работы с SQL, нажмите кнопку Save на панели инструментов SQL Utility (или нажмите Ctrl-S), чтобы сохранить запрос в саойстве SQL компонента AdsQuery.
В Advantage-компоненты Delphi также входит новый компонент, TAdsEvent. Этот компонент, который можно использовать для подписки и обработки уведомлений, позволяет легко настраивать и управлять обработкой асинхронных событий.
Совместная установка
В Advantage 10 теперь можно запустить два или более экземпляров сервера Advantage на одном физическом сервере, даже различных версий. Например, теперь можно запускать на одном сервере Advantage 9 и Advantage 10. Это особенно полезно для разработчиков вертикального рынка, чьи приложения должны поддерживать более чем одну версию сервера Advantage.

Заключение
Выпустив Advantage 10, Sybase в очередной раз подтвердила свою приверженность этому уникальному и значимому серверу баз данных.
В дополнение к числу полезных дополнений и усовершенствований, Advantage 10 также включает в себя широкий диапазон улучшений производительности, увеличивающих производительность большинства клиентских приложений путём всего лишь установки этого обновлённого сервера.
Тем не менее, большинство разработчиков также захотят обновить свои клиентские приложения, чтобы получить выгоду от многих улучшений Advantage 10. От поддержки Unicode до значительно улучшенных уведомлений, от обновлённого синтаксиса SQL до расширенных табличных функций - у Advantage 10 есть что-то для каждого.

 









jAntivirus