Процесс доступа к данным из приложения
Работа с базами данных
Архитектура и функции BDE
BDE представляет собой набор динамических библиотек, которые "умеют" передавать запросы на получение или модификацию данных из приложения в нужную базу данных и возвращать результат обработки. В процессе работы библиотеки используют вспомогательные файлы языковой поддержки и информацию о настройках среды.
В состав BDE входят следующие функциональные подсистемы.
· Администратор системных ресурсов управляет процессом подключения к данным — при необходимости устанавливает нужные драйверы, а при завершении работы автоматически освобождает занятые ресурсы. Поэтому BDE всегда использует ровно столько ресурсов, сколько необходимо.
· Система обработки запросов обеспечивает выполнение запросов SQL или QBE от приложения к любым базам данных, для которых установлен драйвер, даже если сама СУБД не поддерживает прямое использование запросов SQL.
· Система сортировки является запатентованной технологией и обеспечивает очень быстрый поиск по запросам SQL и через стандартные драйверы аля Paradox и dBASE.
· Система пакетной обработки представляет собой механизм преобразования данных из одного формата в другой при выполнении операций над целыми таблицами. Эта система использована в качестве основы для компонента TBatcMove и утилиты DataPump (автоматического переноса структур данных между базами данных), входящей в стандартную поставку BDE.
· Менеджер буфера управляет единой для всех драйверов буферной областью памяти, которую одновременно могут использовать несколько драйверов. Это позволяет существенно экономить системные ресурсы.
· Менеджер памяти взаимодействует с ОС и обеспечивает эффективное использование выделяемой памяти. Ускоряет работу драйверов, которые для получения небольших фрагментов памяти обращаются к нему, а не к ОС. Дело в том, что менеджер памяти выделяет большие объемы оперативной памяти и затем распределяет ее небольшими кусками между драйверами согласно их потребностям.
· Транслятор данных обеспечивает преобразование форматов данных для различных типов БД.
· Кэш BLOB используется для ускорения работы с данными в формате BLOB.
· SQL-генератор транслирует запросы в формате QBE в запросы SQL.
· Система реструктуризации обеспечивает преобразование наборов данных в таблицы Paradox или dBASE.
· Система поддержки драйверов SQL повышает эффективность механизма поиска при выполнении запросов SQL.
· Таблицы в памяти. Этот механизм позволяет создавать таблицы непосредственно в оперативной памяти. Используется для ускорения обработки больших массивов данных, сортировки, преобразования форматов данных.
· Связанные курсоры обеспечивают низкоуровневое выполнение межтабличных соединений. Позволяют разработчику не задумываться над реализацией подобных связей при работе на уровне VCL — для этого достаточно установить значения нескольких свойств.
· Менеджер конфигурации обеспечивает разработчику доступ к информации о конфигурации драйверов.
Перечисленные функции реализованы в динамических библиотеках, которые, собственно, и называются процессором БД (табл. 1).
Процесс доступа к данным из приложения
1. Компонент доступа к данным приложения получает команду на открытие набора данных и при помощи унаследованных от предка (TBDEDataSet) методов обращается к BDE с соответствующим запросом.
2. BDE выделяет для нового процесса необходимые ресурсы и, при необходимости, транслирует запрос в соответствии с особенностями драйвера запрашиваемой СУБД.
3. При обращении к локальной базе данных драйвер напрямую обращается к таблицам; при обращении к серверу SQL вызывается соответствующее клиентское ПО.(1)