Реферат: Классификация приложений для работы с базами данных
Классификация приложенийдля работы
с базами данных.
Традиционно такие приложения делятся на локальные приложения и
приложения в архитектуре клиент/сервер, которые всвою очередь
подразделяются на клиентические и серверные состовляющие
Локальными называются программы, расположенные на одном компьютере с
базой данных.При этом база данных управляется сравнительно маломощной
СУБД , а язык SQL не является определяющим при создании запросов иобмене
данными.Иногда база данных может распологатся на фиксированном сетевом
диске в локальной сети.
Программа называется соответствующей архитектуре клиент/сервер, если она
имеет мощный серве БД, отвечающий за обработку поступающих запросов и
передачу результата клиентам.В качестве СУБД используются мощные
промышленные серверы, для создания запросов и управления данными
используется SQL.Также обязательной состовляющей частью должны быть
клиентические приложения, обеспечивающий отображение данных и интерфейс
с конечным пользователем.Клиентическое ПО чаще всего распологается на
удаленных рабочих местах, в сетях, требующих отдельного
администрирования.
По мере развития локальных и глобальных компьютерных коммуникаций,
распространение персональных компьютеров такая классификация стала
утрачивать актуальность.
Одноврименно с усложнениемрешаемых задач усложнялись и
совершенствовались программы для работы с БД.Появились деления на
однопользовательские и многопользовательские локальные СУБД,
соответсвенно локальные программы стали делиться на однопользовательские
и сетевые.Возникла дополнительная классификация клиентических приложений
на "слабые" ("тонкие") и "сильные" ("толстые"), появились разнообразные
способы связи между клиентом и сервером, алгоритмы обслуживания очередей
клиентов и способы управления транзакциями.
Согласно новой классификации все приложения для работы с базами данных
делятся на группы в зависимости от числа уровней обработки данных.
Те программы которые раньше называлисьлокальными (независимо от способа
связи с СУБД), чаще всего сейчас входят в число одноуровневых
приложений, так как обработка данных в них ведется в единственном месте.
Клиент/серверные приложения стали делится на двухуровневые (классический
клиент/сервер) и трехуровневые (клиент/сервер с ПО промежуточного слоя).
С точки зрения Delphi при учоте уровней обработки данных из расмотрения
выпал процессор БД и ВДЕ, который берет на себя большую часть
низкоуровневой обработки данных и установку соединения между СУБД и
приложением. НО эта классификатция подразумиваетразделения на уровни
только создоваемой разработчиком логики обработки данных, без учета
стандартных используемых механизмов. Поэтому в документации по Delphi
двухуровневые программы (с учетом уровня обработки ВДЕ) часто называются
одноуровневыми приложениями, основными на ВДЕ.
Терминология
Реляционная база данных -база данных, в которойвсе данные представленны
в виде прямоугольных таблиц, а все операции над базой данных сводятся к
монипулятциям со строками и столбцами таблиц. При разработке приложений
для работы с базами данных наиболее часто решаемая разработчиками
программа-это получение по некоторому запросу из базы данных и
отображение на экране определенного множества значений. Иногда это
множество полностью соответствует содержимому какой-либо таблицы, но
чаще это часть таблицы илиобъединение записей нескольких таблиц,
переданное в приложение в результате выполнения запроса, будем называть
набором данных.
Объединение-это логическое отношение между двумя таблицами на основе
внешнего ключа.
Первичный ключь-поле или группа полей, обеспечивающих уникальность
каждой записи в таблице.
Внешний ключ-поле или група полей, которые не совпадают спервичным
ключом и используется для объединения с другими таблицами.
Словарь данных-специализованная база данных, используемая в приложениях
Delphi для хронения наборов атрибутов. Также в него могут входить и
структуры баз данных целиком. Словарь данных не может хранить данные об
объектах окружающего мира.
Набор атрибутов-структура, которая содержит информацию о свойствах поля
(его типе, размере и т.д.), а также об особенностях визуализации данного
поля.
В приложениях Delphi набор может быть получен не только в результате
выполнения запроса SQL, но и простым открытием таблицы компонентом T
Table (с фильтром или без него).Следует отметить что любое обращение к
БД ВДЕ, которые трансформируют любые виды требований на наборы данных в
собственные запросы.
Процессор баз данных Borland
Database Engine (ВДЕ)
1. Архитектура
ВДЕ является важнейшей состовляющей частью механизма доступа к данным
реализованного в Delphi.
Архитектура ВДЕ основана на драйверах которые обеспечивают обмен данными
с конкретными СУБД. Ядро процессора БД состовляет совокупность
динамических библиотек, содержащих механизмы обмена данными,управления
запрсами, подержки национальных языков и т.д. Назначение всех
динамических библиотек представленно в таблице1.
В состав ВДЕ включены стандартные драйверы, обеспечивающие доступ к СУБД
Paradox, dBase, Foxpro и текстовым файлом. Помимо этого в ВДЕ имеется
простой механизм подключения любых драйверов ОДБС (например, Microsoft
Access) т создание на их основе пакетов ОДВС.
Доступ к данным серверов SQL обеспечивает отдельная система
драйверов-SQL Links. С их помощью в Delphi можно разрабатывать
приложения для серверов Dracle 8, Sybase, ДВ2 и, естественно, Interbase.
Эта особенность архитектуры ВДЕ обеспечивает ряд существенных
преимуществ.
1.Реальное разделение програмного кода и механизм доступа к данным.
Причем сам доступ также осуществляется на нескольких уровнях-ВДЕ,
драйвера, сервера БД. Приложение Delphi для работы с БД можно настроить
на использования с любой СУБД, для которой имеется состветствующий
драйвер, буквально за несколько минут. При этом перекомпиляция самой
програмы не требуется. Плата за такую великолепную переносимость -
скорость обмена данными через ВДЕ и драйверы несколько меньше чем
напрямую между приложением и СУБД.
2.Разделение драйверов и выдиление в спецальную группу драйверов для
серверов SQLпозволило гораздо полнее использовать функциональные
возможности серверов БД, а применение единого API сняло остроту проблемы
интерпритации процесса выполнения транзакций разными серверами.
3.ВДЕ идеально подходит для создания приложений для архитектуры
клиент/сервер, так какобеспечивает сследующие функции:
- обработка запросов вдиалоговом режиме;
- представление через ВДЕ вызовов операционной системы;
- модифицируемые запросы;
- поддержка хронимых процедур;
- управление регистрацией пользователя.
Таблица 1. Ядро процессора баз данных ВДЕ 5
Имя файла Назначение
DBClient.dll Динамическая библиотека, отвечающая за работу
клиентской части приложения
IDPROV.dll Динамическая библиотека, отвечающая за работу
серверной части приложения
IDAPI32.dll Базовая динамическая библиотека ВДЕ
BLW32.dll Динамическая библиотека, обеспечивающая поддержку
драйверов национальных языков
IDBAT32.dll Дин. б-ка, с функциями межтабличного переноса данных
IDQBE32.dll Дин. б-ка, обеспечивающая работу запросов по примеру
(Query By Example)
IDASCI32.dll Дин. б-ка, обеспечивающая работу драйвера текстовых
файлов
IDPDX32.dll Дин. б-ка, обеспечивающая работу драйверов Paradox
IDDBAS32.dll Дин. б-ка, обеспечивающая работу драйвера dBase
DODBS32.dll Дин. б-ка, обеспечивающая работу драйвера сокета ODBC
IDR20009.dll Дин. б-ка, ресурсов, содержащая сообщения об ошибках
IDDAO32.dll Дин. б-ка, обеспечивающая работу драйвера Micrjsoft
Access 95 и Tet Engine 3.0
IDDA3532.dll Дин. б-ка, обеспечивающая работу драйвера Microsoft
Access 97 и Tet Engine 3.5
IDDR32.dll Дин. б-ка, для работы с репазиторием данных
2.Функционально ВДЕ содержит следующие составные части
-Администратор системных ресурсов
Управляет процессом подключения к данным-при необходимости устанавливает
нужные драйверы, а по завершению работы автомотически освобождает
занятые ресурсы. По этому ВДЕ использует ровно столько ресурсов, сколько
необходимо.
-Системаоброботки запросов
Обеспечивает выполнение запросов SQL и QBE от приложения к любым базам
данных, для которых установлен драйвер, даже если сама СУБД не
поддерживает прямое использование запросов SQL
-Система сортировки
Является запатентованной технологией и обеспечивает очень быстрый поиск
по запросам SQL и через стандартные драйверы для Paradox и dBase.
-Система пакетной обработки
Представляет собой механизм преобразования данных из одного формата в
другой при выполнении операций над целыми таблицами. Эта система
использована в качестве основы для компонента TBatchMove и утилиты Data
Pump, входящие в стандартную постановку ВДЕ.
-Диспетчер памяти
Непосредственно взаимодействует с ОС и обеспечивает эффективное
использование выделяемой памяти. Ускоряет работу драйверов, которые для
получения небольших фрагментов памяти обращаются к нему, а не к ОС.
-Диспетчер буфета
Управляет единой для всех драйверов буфетной областью памяти, которую
одновременно могут использовать несколько драйверов. Этопозволяет
существенно экономить системные ресурсы.
-Транслятор данных
Обеспечивает преобразования форматов данных для различных типов БД.
-КЭШ BLOB
Используется для ускорения работы с данными в формате BLOB
-SQL -генератор
Транслирует запросы QBE в запросы SQL.
-Система ресруктиризации
Обеспечивает преобразования наборов данных в таблицыParadox или dBase
-Система поддержки драйверов SQL
Повышает эффективность механизма поиска при выполнении запроса SQL
-Таблица в памяти
Этот механизм позволяет создовать таблицы непосредственно в
оперативной памяти. Используются для ускорения обработки больших мосивов
данных, сортировки, преобразования форматов данных.
-Связанные курсоры
МЕханизм связанных курсоров обеспечивает низкоуровневое выполнение
межтабличных соединений. Для реализации подобных связей на уровне VSL
достаточно установить значение нескольких свойств.
-Диспетчер конфигурации
Обеспечивает разработчику доступ к информации о конфигурации драйверов.
3. Процесс доступа к данным из BDE.
Осущестляется следующим образом (рис. 1)
1) Компонент доступа к данным приложения получает команду на открытие
наора данных и при помощи уноследования от предка (T BDE Data Set)
методов обращается к BDE с соответствующим запросом.
2) BDE выдиляет для нового процесса необходимые ресурсы и, при
необходимости, транслирует запрос в соответствии с особенностями
драййвера запрашиваемой СУБД.
3) При обращении к локальной базе данных драйвер ан прямую обращается к
таблицам; при обращении к серверу SQL вызывается соответствующее
клиентское ПО.
4. Настройка BDE
Для управления псевдонимами баз данных, настройки стандартных и
дополнительных драйверов в составе BDE имеются специальная утилита-BDE
Administrator.
Стандартная конфигурация BDE сохраняется в файле /DAP/.CFG . При
необходимости текущую конфигурациюв в новом файле с расширением CFG.
Рабочая область утилиты BDE Administrator представляет собой
двухстроничный блокнот. Страница Databases содержит иерархическое
дерево, в узлах которого расположены на данный момент псевдонимы БД. При
выборе какого-либо псевдонима в правой части панели появляется перечень
параметров драйвера, соответствующего псевдониму, которые можно
настраивать в ручную.
Страница Configuration предназначена для настройки параметров драйверов
BDE , предназначеных для обеспечения доступа к СУБД и серверам БД. Также
здесь опредиляется системная конфигурация BDE, которая включает
параметры числовых форматов, дат,времени. Вся информация здесь также
структуризированна в виде иерархического дерева.
При выборе в левой панелти утилиты какого-либо узла, в правой части на
стронице Definition отображается вся необходимая информация для этого
объекта. Назначение параметров локальных драйверов BDE представленно в
табл.2.
Таблица 2.Параметры драйверов BDEдля локаль ных баз данных.
Параметр Назначение
STANDART
DEFOLT DRIVER Задает тип конкретного локального драйвера
(Paradox, dBase, FoxPro, Asc).
ENABLE BCD Определяет способ представления вещественных
чисел. При значении True такие числапреобразуются в формат BCD
(десятичные с двоичным кодированием), который позволяет округлять
погрешности высших разрядов дробной части числа. Точность состовляет 20
знаков после запятой.
PATH Указывает путь к файлам базы данных.
PARADOX
NET DIR Указывает путь к файлу обеспечения
сетевого доступа PDOXVSRS.NET. Дравер приложения, который работает с БД
локально, должен указывать на этот фаил, расположеный на том же
компьютере. Драйвер приложения обращающийся к БД по сети, должен
указывать на подключенный сетевой диск сэтим файлом.
VERSION Нередактируемая информация оверсии драйвера.
TYPE Тип СУБД. Для Paradox имеет значение
FILE только для чтения.
LANGDRIVER Определяет дравер языковой поддержки.
BLOCK SIZE Задает размер блоков дискового пространства для
хранения записей, кратно 1024.
FILL FACTOR Определяет процент заполнения блока дискового
пространства при хранении индексов, по умолчанию 95%.
LEVEL Задает формат временной таблицы впамяти:
3-совместим с Paradox
3.5 иниже
4-Paradox 4.0
5-Paradox 5.0
7-Paradox
STRICTINTEGRTY Определяет возможность использования приложения на
базе Paradox 4.0 более позних таблиц с ссылочной целосностью. При
значении TRUE использование разрешается, но возникает риск нарушения
целосности данных.
DBASE
VERSION Нередактируемая информация о версии
драйвера.
TYPE Тип СУБД. Для dBASE имеет значение FILE
только для чтения.
LANGDRIVER Определяет драйвер языковой поддержки.
LEVEL Задает формат таблиц. Значение
соответствует номеру версии СУБД.
MDX BLOCK SIZE Размер блоков для файлов с расширением MDX, кратно
5/2
MEMO FILE BLOCK Размер блоков для файлов с данными типа memo, кратно
5/2
SIZE
FOXPRO
VERSION Нередактируемая информация оверсии драйвера
TYPE Тип СУБД. Для FoxPro имеет значение FILE
только для чтения.
LANGDRIVER Определяет драйвер языковой поддержки
LEVEL Имеет значение 25.
5. Интерфейс прикладного програмирования.
Любое приложение Delpfi, работающее с базами данных и написанное с
использованием стандартных компонентов доступа к данным, обращается к
данным и получает результат при помощи BDE. При этом механизм доступа к
данным использует вызовы функций из API BDE.
Интерфейс прикладного програмирования Delpfi позволяет создать любые
приложения для работы с БД с самыми разнообразными функциями. При этом
не имеет значения способ доступа к данным, так как BDE обеспечивает
связь приложения с базой данных на уровне драйверов и псевдонимов.
НА практике не возникает необходимости создания приложения,
использующуго только функции BDE без применениякомпонентов для доступа к
данным VCL. Поэтомурасмотрим способ приложения, использующего вызовы
отдельных функций BDE.
Для создания приложений на основе вызовов функций BDE необходимо
выполнить следующие операции:
1.Инициализация BDE (функция DbiInit).
2.Открытие объектов базыданных (функция DbiopenDatabase).
3.Определение рабочего каталога (функция Dbi Set Direktory), если на
предидущем этапе не задан псевдоним БДю
4.Определение временного каталога (функция Dbi Set Private Dir).
5.Открытие набора данных и создание курсора (функции DbiOpen
Table,DbiQExec и пр.;дескриптор курсора hDBICur).
6.Заполнение структуры CUR Props, содержащий данные о курсоре и наборе
данных (функция Dbi Get Cursor Props).
7.Выделение памяти для буфера записи .
8.Навигация по набору данных (функции Dbi Set to Begin, Dbi Set to End,
Dbi Set to Cursor ипр.)
9.Чтение необходимой записи (функции Dbi Get Relativ Recod, Dbi Get Next
Recod, Dbi Get Recod, Dbi Get Prior Recod и пр.).
10.Чтение или обновление необходимого поля (функции Dbi Get Field).
11.Освобождение всех ресурсов (освобождение буфера записи, записи
курсора, таблицы, BDE).
При использовании в программе функции из API BDE необходимо включить в
секцию uses модуль BDE.
В компонентах VCL для доступа к данным (TTable, TQuery, TStored Proc)
инкапсулирован механизм взаимодействия с дина мическими библиотеками
BDE.Любой компонент для доступа к данным имеет в иерархии наследования
класс TBDE DataSet, унаследованые методы которого используется для
установления связи с базой данных через BDE. Важную роль при этом играет
зарегистрированный в BDE псевдоним базы данных (свойство компонента
называется DataBaseName). Второе важнейшее свойство-Activ, имеющее тип
Doolean, позволяет открыть или закрыть сеанс связи с базой данных.
Визуализацию полученных даных обычно выполняет компонент TDataSource и
один или несколько компонентов отображения данных (Data Controls).
Основная задача компонента TData Scource-разделение набора данных на
поля или группы полей и передача их по назначению. Он же отвечает за
возврат зделанных изменений и передачу сигналов управления от
пользователя в набор данных.
Любой компонент отображения данных умеет визуализировать полученные от
компонента TDataSourse данные в соответствии с их типом , отслеживает
правильность вносимых изменений и передает их в TDataScource.
Таким образом, компонент TDataScource служит мостом между набором данных
и пользовательским интерфейсом. С точки зрения разработчика приложений
процес подключения набора данных не содержит сложностей. Эту работу
выполняет механизм доступа к данным, основой которого является процессор
баз данных Borland Database Engine.
Типы данных.
Универсальность Delphi подразумеваютнеобходимость применения средств,
которые бы обеспечили возможность работы с многими типами данных.
Существует большая группа типов данных, конкретная реализация которых
практически не отличается от платформы к платформе. Это,например,строки,
символы, целые и вещественные числа.
Есть типы данных, которые реализованны далеко не на каждой платформе.
Есть, наконец, просто универсальные типы данных, но зато СУБД, на
которой этот тип реализован, очень широко распространена. В Delphi
применен следующий способ работы с типами данных.
Тип данных однозначно связан с конкретным полем таблицы базы данных.
Свойства обстрактного поля инкапсилируют класс TField, который не имеет
заранее определенных типа данных. От этого класса порожденно целое
симейство классов для типизированных полей, каждый из оторых умеет
обращаться со своим типом данных.
В классе TField имеется свойство Data Type, которое отвечает за тип
данных, но оно не может быть измерено.
Практически во всех серверах БД пользователь имеет возможность создовать
собственные типы данных. Для их использования в приложении Delphi
имеется абстрактный тип данных и класс TADT Field. Абстрактный тип может
в себя включать любой скалярный тип данных (числа, даты, ссылки,
массивы, наборы данных).
Афтоинкриментный тип данных используется для получения уникального
индификатора записи. Поле автоинкриментного типа для каждой новой записи
автомотически увеличивает свое значение на единицу.
Данные типа Blob (Binary Large OBject) предстовляют собой двоечные
массивы произвольной длинны. В самом поле содержится только ссылка на
отдельный фаил базы данных, в котором хронится двоичный массив. Таким
образом поля типа Blob являются универсальным носителем любых данных,
которые имеют сколярную и не сколярную структуру и которое можно
приобразовать в двоичное представление.
Новой возможностью Delphi стало использование массивов.Этот тип
организует массив из данных любой структуры, за исключением таких же
массивов .Для каждого элимента массива может создоваться собственный
объект TField. Для управления этим механизмом используется свойство
SparseArays в классе TDataSet.
В качестве отдельного поля в набор данных можно включить и любой другой
произвольный набор данных. Для этого используется специальный тип данных
и класс TDataSetField. Причем каждым полем из интегрированного набора
данных также можно управлять.
Ссылочный тип данных также использует внешние наборы данных, но в данном
случае можно подключать и использовать только отдельные поля.
Состояние набора данных
В процессе функционирования набор данных может выполнить различные
операции: перемещение по записям, редактирование данных, удаление
записи, и т.п. Эффективность работы и разнообразие функций обеспечивает
сложный механизм доступа к данным. В нем все операции объединены в
группы по функциональному признаку. Для каждой группы операций BDE
выполняет ряд подготовительных действий по предварительной настройке
набора данных. При этом состояние набора данных изменяется.
Итак, набор данных в любой момент времени находится в некотором
состоянии, т.е. подготовлен к выполнению действий строго определенного
рода. Все состояния набора данных делятся на две группы. К первой группе
относятся состояние, в которое набор данных переходит афтомотически, к
ним относятся непродолжительные по времени состояния, сопровождающее
функционирование полей набора данных (табл.3). Во вторую группу входят
состояния, которым можно управлять из приложения, например, перевод
набора данных в режим редактирования (табл.4).
Базовый класс TDataSet, инкапсулирующий свойства набора данных,
позволяет изменять состояния, а также проверять текущее состояние набора
данных. Текущее состояние набора даных передается в свойство State,
имеющая вид NDataSetState.
Таблица 3. Афтомотические состояния набора данных
Константа состояния Описание
dsNewValue Включаются при обращении к свойству
NewValue поля набора данных
dsOldValue Включается при обращении к свойству
OldValue поля набора данных
dsCurValue Включается при обращении к свойству
CurValueполя набора данных
dsInternalCalc Включается при расчете значений полей,
для которых FindKind=frInternalCalc
dsCalcFields Включается при выполнении метода
onCalcFields
dsBlockRead Включается механизм ускорения перемещения
по набору данных
dsFilter Включается при выполнении метода
onFilterRecond
Таблица4. Управляемые состояния набора данных
Константа состояния Метод Описание
dsInactive Close Набор данных закрыт
dsBrowse Open Данные доступны для
просиотра, но не доступны дляредактирования
dsEdit Edit Данные можно
редактировать
dsInsert Insert К наборам данных можно
добовлять новые записи
dsSetKey SetKey Включается механизм поиска по
ключу. Также могут использоваться диапазоны
Для управления состояния набора данных используются методы Open, Close,
Edit, Insert. Закрытый набор данных всегда имеет не закыртое состояние
dsInactiv. При открытии набора данных переход в состояние просмотра
данных dsBrowse. В этом состоянии по записям набора данных можно
перемещаться ипросматривать их содржимое, но редактировать данные
нельзя. Это основное состояние открытого набора данных, из него можно
перейти вдругие состояния, но любое изменение состояния происходит через
просмотр данных (рис.3)
После выполнения метода Edit можно изменять значения полей для текущей
записи. Приперемещении на следующую запись анбор данных автомотически
переходит в состояние просмотра.
Метод Insert добовляет на месте текущего курсора новую пустующую запись
и переводит набор данных в состояние вставки. Припереходе надругую
запись, после проверки на уникальность первичного ключа(если он есть),
набор данных возростает в состояние просмотра.
Состояние установки ключа используется только в компоненте TTable рпи
необходимости описка методами FindKey и FindNext, а также при
использовании деапозонов (метод SetRang). Это состояние сохроняется до
момента вызова одного из методов поиска по ключу или метода обмена
диапазона.
Состояние просмотра по блокам используется набором данных при реализации
быстрого перемещения по большим мосивам записей в компонентах
отображения данных и без вызова обработчика события перемещения
позаписям. Для реализации быстрого перемещения по наборам данных можно
использовать методы Disable Controls и Enable Controls/
Объект поля
Назначение класса TField, как базового класса поля, заключается в умении
взаимодействовать с компонентом отображения данных для обеспичения
правильной визуализации данных. Например объект поля зранит способ
выравнивания, параметры шрифта, текст заголовка и т.д.
визуалиацией полей набора данных можно управлять и и другими средствами
Свойства полей можно задать в соваре данных.
С точки зрения дабора данных объект поля является хранилищем текущего
значения
этого поля (а не всего столбца данных). Класс TField Тесно интегрирован
с компонентами досутпа к данным.
1.Динамические и статические поля
Поля могут быть динамическими и статическими. По умолчанию все обхекты
полей являются статическими, т.е.создаются програмой автомотически после
набора данных вез участия рпограмиста.
Разработчик может создовать статистические поля.При жтом можно
использовать только необходимые поля, а также создовать объекты для
несуществующих полей и в дольнейшем работать с ними как с реальными
полями. Также механизм работы с постоянными полями обеспечивает создание
вычислимых полей и полей синхронного посмотра.
Вычисляемые поля Существуют только во время работы программы, когда
открыт набор данных. Обычно они содержат результаты выполнения
некоторыхопераций над несколькими другими полями.