Тонкие базы данных и инструменты для их разработки в Delphi и C++Builder

Часть 1. Обзор технологии

Константин Грибачев

Понятие тонких баз данных

Преимущества тонких баз данных

Области применения тонких баз данных

ТнБД и альтернативы BDE

ТнБД и технология Borland MIDAS

Общие характеристики пакетов компонентов для создания ТнБД

 

История создания СУБД насчитывает несколько десятков лет. За это время не один раз изменялась и расширялась их классификация — в различных источниках она приводится по-разному. Одной из причин разнообразия в терминологии является то, что при такой классификации возникает необходимость сравнивать СУБД по нескольким критериям: в зависимости от размещения, от числа пользователей, от способа доступа и т.д. С развитием компонентных сред программирования из всего многообразия СУБД незаметно выделилась особая категория программных продуктов, не вполне подпадающая под общепринятую классификацию. Речь идет о так называемых тонких базах данных.

Понятие тонких баз данных

онкие базы данных (ТнБД) характеризуются следующими основными особенностями:

• отсутствие СУБД как отдельной самостоятельной программной единицы;

• встраивание ядра СУБД непосредственно в приложение БД;

• самодостаточность — приложения БД не используют для своей работы никаких других программных средств.

Поскольку, как следует из особенностей ТнБД, работа с такими базами данных без соответствующих приложений БД не имеет особого смысла, в дальнейшем понятия «тонкая база данных» и «приложение тонкой базы данных» будут использоваться как синонимы. Сразу стоит отметить, что понятие ТнБД не следует путать с понятием «тонкий клиент» — он используется в многозвенных приложениях баз данных (см. ниже).

Учитывая вышесказанное, дадим следующее общее определение:

ТнБД — это самодостаточная программная система, включающая исполняемое приложение и файлы данных, обладающая свойствами СУБД и функционирующая как приложение баз данных.

На практике это означает, что в состав поставки такой базы данных входит один исполняемый файл, а также один или несколько файлов с данными. Никаких других программных средств (библиотек DLL, драйверов доступа к данным, серверов баз данных и т.д.) для работы ТнБД не требуется.

Возможны частные варианты реализации ТнБД, не вполне подпадающие под общее определение. Например, в состав ТнБД может входить несколько исполняемых файлов, использующих один и тот же набор файлов данных, однако и в этом случае внутри каждого исполняемого файла будет содержаться ядро СУБД. Кроме того, далее будет показано, что возможна обратная ситуация, то есть существуют варианты реализации ТнБД, при которых файлы данных вообще отсутствуют. При этом исполняемое приложение содержит как ядро СУБД, так и сами данные.

ТнБД являются локальными базами данных, то есть приложение и файлы данных располагаются на одном компьютере (если не рассматривать отдельно файл-серверные варианты их использования). Тем не менее в составе инструментов для создания некоторых ТнБД присутствуют средства быстрого преобразования таких приложений для работы в архитектуре «клиент-сервер», при этом, естественно, они перестают быть тонкими (появляется выделенный сервер СУБД), однако во многом сохраняют свою специфику и преимущества.

Из перечисленных особенностей ТнБД видно, что для их создания и функционирования требуется наличие специальных программных средств, позволяющих реализовывать функции управления БД и данными, то есть функции обычной СУБД. Естественно, эти функции должны поддерживаться как на этапе разработки приложения, так и на этапе его выполнения. При этом, как указано выше, в результате применения этих программных средств ядро СУБД должно быть включено в исполняемый файл ТнБД.

Для достижения этих целей в состав инструментальных программных средств разработки ТнБД включаются следующие средства:

• набор утилит для администрирования;

• набор компонентов для сред программирования.

Указанные утилиты используются для создания БД, таблиц, связей, отработки запросов и пр., причем они могут применяться автономно, без задействования среды программирования. В состав утилит также нередко включаются программы-конверторы данных, обеспечивающие возможность импорта данных из других СУБД.

Наборы компонентов используются при разработке приложений ТнБД в визуальных средах программирования, таких как Borland Delphi или Borland С++Builder.

В начало В начало

Преимущества тонких баз данных

иже будут рассмотрены основные преимущества, которыми обладают ТнБД перед обычными СУБД. Наиболее близкими к ТнБД по функциональным возможностям являются настольные базы данных, поэтому в качестве образца для сравнения возьмем широко распространенную СУБД Microsoft Access.

Размер и накладные расходы. Объем поставки СУБД типа Microsoft Access (в зависимости от конкретной версии, без учета хранимых данных) составляет несколько десятков мегабайт. Описываемые далее программные продукты для создания ТнБД имеют размер ядра СУБД порядка нескольких сотен килобайт. Это означает, что размер исполняемого файла тонкой базы данных увеличится всего на 300-400 Кбайт, приобретая при этом функциональность СУБД. Представим, что создается небольшая база данных, весь объем информации которой не превышает нескольких мегабайт. Легко оценить, каковы при этом накладные расходы использования толстого офисного приложения Microsoft Access, размер которого будет на порядки превышать размер данных. В случае использования ТнБД это соотношение будет гораздо более оправданным.

Установка. СУБД типа Microsoft Access должны быть инсталлированы на компьютере клиента. На практике это означает, что на этапе установки возможны разного рода конфликты, связанные либо с версиями операционной системы, либо с ранее установленными приложениями, а также временные затраты на инсталляцию. Тонкие базы данных можно просто скопировать на жесткий диск и запускать безо всякой инсталляции. Более того, далее при описании конкретных пакетов будет показано, что такие БД можно запускать непосредственно с CD-ROM, дискеты и с любого другого носителя данных, без копирования на жесткий диск.

Эксплуатация. К сожалению, при эксплуатации той или иной операционной системы возникают ситуации, когда работа ОС становится неустойчивой или даже происходит отказ, то есть потеря ее работоспособности. При этом приходится переустанавливать не только саму операционную систему, но и ранее установленные приложения. Это в полной мере относится и к офисному приложению Microsoft Access, которое придется инсталлировать заново. Напротив, при эксплуатации тонких баз данных, абсолютно нечувствительных к подобным ситуациям, отсутствует необходимость в инсталляции и после переустановки ОС с ней сразу можно работать.

Интерфейс. Широкие возможности, предоставляемые СУБД типа Microsoft Access, налагают отпечаток на интерфейс этих программных продуктов. Многочисленные меню, кнопки и диалоги безусловно необходимы на этапе разработки БД, поскольку здесь требуется весь арсенал заложенных в программу возможностей. Однако на этапе эксплуатации созданной базы данных это богатство средств зачастую не только не помогает, но и становится причиной неэффективной работы (если, конечно, не создавать собственный интерфейс). Как показывает практика, любой универсальный инструмент решает конкретную задачу всегда менее эффективно, чем специально для этого созданный. К тому же для работы с такими универсальными продуктами необходимо дополнительное обучение будущих пользователей. В противном случае неосторожное нажатие на один из многочисленных элементов управления может привести к неблагоприятным последствиям. При использовании же ТнБД никакой универсальной программной оболочки просто не существует, поэтому неизбежно создается именно специальный инструмент под конкретную задачу; в нем предусматриваются только необходимые для выполнения данной задачи элементы интерфейса, что облегчает работу пользователя такой БД.

Мобильность, распространение и сопровождение. Готовые самодостаточные тонкие базы данных, имея минимальный объем, могут легко распространяться на любых переносных носителях данных, по локальным сетям или даже по Интернету. Они легки при сопровождении, новые версии приложений могут рассылаться даже по электронной почте. Как уже говорилось, они не нуждаются в переустановке, а значит, не потребуются дополнительные затраты на выезды к клиентам.

Интегрируемость с прикладными программами и Web-приложениями. В силу своей специфики разработка тонких баз данных ведется одновременно с разработкой основного приложения, создаваемого в той же среде программирования. При этом легко и естественно происходит интеграция функциональных возможностей встроенной СУБД с прикладными практическими задачами. Например, создание в среде Delphi программы управления экспериментальной установкой может естественным образом сопровождаться встраиванием в эту программу тонкой базы данных, которая впоследствии обеспечит накопление, хранение и интеллектуальную обработку результатов эксперимента. В качестве другого примера рассмотрим приложение, получающее регулярную информацию из локальной или глобальной сети и аналогичным образом накапливающее ее в базе данных. Получить тот же результат с использованием настольных СУБД в принципе можно, но это будет не так эффективно, поскольку настольная СУБД является «посторонней» программой и для взаимодействия с ней потребуются соответствующие программные «переходники», что неизбежно скажется и на быстродействии, и на ресурсах компьютера. Особенно это касается программ, к которым предъявляются требования надежного функционирования в реальном времени. Для Web-приложений использование ТнБД также позволяет получить весьма эффективные результаты, поскольку устраняется одно из промежуточных звеньев доступа к публикуемым данным — сервер баз данных.

Все вышеизложенное относится не только к вопросам сравнения тонких баз данных с настольными СУБД. Многое из сказанного справедливо и для традиционных приемов создания приложений баз данных в Delphi c использованием уже устаревшего Borland Database Engine. Даже при применении более современных технологий типа ADO или dbExpress созданное приложение не будет гарантированно функционировать на любом произвольно взятом компьютере заказчика без установки, настройки или обновления средств доступа к данным. Главное технологическое преимущество ТнБД — это их самодостаточность, отсюда, как следствие, возникают вышеуказанные эксплуатационные достоинства.

В начало В начало

Области применения тонких баз данных

феры применения программных продуктов, созданных с использованием технологий разработки тонких баз данных, достаточно широки. В силу вышеописанных преимуществ такие базы данных могут с успехом применяться в следующих областях:

• создание баз данных для предприятий (кадровый состав, бухгалтерия и т.д);

• создание баз данных для общеобразовательных и культурных учреждений (школ, библиотек);

• создание баз данных для малого офиса и домашнего применения (рынок SOHO);

• создание электронных каталогов и справочников, распространяемых через Интернет;

• создание баз данных для электронных Интернет-магазинов и других Web-приложений;

• создание баз данных для организаций и научных учреждений для накопления и анализа информации в реальном времени.

В начало В начало

ТнБД и альтернативы BDE

оявление Borland Database Engine в свое время стало крупным достижением фирмы Borland, обеспечившим универсальный механизм доступа к различным СУБД из приложений баз данных, разрабатываемых в средах Delphi и C++Builder.

Однако со временем стало очевидно, что эксплуатационные ограничения BDE, выражающиеся в недостаточном быстродействии, а также в сложности распространения и сопровождения приложений, существенно затормозили его применение. На рынке программных средств в качестве альтернативы BDE начали появляться продукты других фирм.

В настоящее время существует несколько десятков пакетов компонентов для Borland Delphi и С++Builder, обеспечивающих доступ к базам данных без использования Borland Database Engine, и их количество постоянно растет. Заинтересованные читатели могут посетить страницу BAG (BDE Alternatives Guide) в Интернете по адресу http://www.kylecordes.com/bag/index.html, специально созданную для регулярного обзора всех имеющихся подобных пакетов. Все пакеты — альтернативы BDE можно разделить на два основных типа.

Пакеты первого типа являются заменой BDE в узком смысле слова, то есть они обеспечивают работу приложения базы данных без использования BDE с одной из распространенных СУБД. При этом сама база данных существует и функционирует независимо — посредством инструментов, входящих в поставку конкретной СУБД. Каждый такой пакет создавался, как правило, для доступа к одной конкретной широко распространенной СУБД с целью замены универсального механизма BDE при работе именно с этой базой данных. Например, для баз данных фирмы Oracle разработаны пакеты-альтернативы Direct Oracle Access, Oracle Data Access, в то время как для СУБД Microsoft SQL Server существует пакет-альтернатива SQLQuery. Разработчиками предпринимаются также усилия и по замене BDE в целом, существуют пакеты (например, SQL Direct), которые обеспечивают эффективный доступ к нескольким видам СУБД без использования BDE.

Естественно, что при применении пакетов подобного типа всегда есть необходимость в задействовании сторонней СУБД (сервера или ядра), обеспечивающей обычные функции управления базой данных и обработки запросов приложений. По этой причине приложения БД, созданные с использованием подобных пакетов рассмотренного типа, не являются самодостаточными и тонкими в полном смысле этого слова, хотя и обладают определенными преимуществами перед приложениями, созданными с применением традиционной технологии.

Разработчики пакетов второго типа (собственно ТнБД) поставили перед собой более глобальные цели. Их задачей было не только создание полной замены BDE, но и разработка нового ядра СУБД для конкретного пакета. При этом ставилось целью обеспечение встраивания ядра СУБД в само приложение, с тем чтобы функционирование приложения не требовало никаких дополнительных драйверов, библиотек или иных программных средств. Надо признать, что некоторыми разработчиками эта задача была решена блестяще. Как будет продемонстрировано далее, созданные ими программные продукты позволили разработчикам реализовывать истинно тонкие приложения, обеспечив при этом весьма неплохую функциональность.

Однако любая медаль имеет две стороны. В данном случае обратной стороной использования пакетов второго типа (то есть ТнБД) является потеря совместимости форматов данных с широко распространенными промышленными СУБД. Это естественно, так как каждый такой пакет использует свое собственное ядро баз данных и хранит данные в своем формате. Однако это ограничение вряд ли можно назвать существенным. Во-первых, как будет показано ниже, ряд подобных пакетов обладает собственными ODBC-драйверами, а значит, проблема переноса информации между своей тонкой базой данных и любой другой СУБД, имеющей поддержку ODBC, не является сколько-нибудь серьезной. Во-вторых, в состав многих пакетов включаются утилиты импорта данных из BDE- и ODBC-совместимых источников. И в-третьих, поскольку в настоящее время в качестве универсального средства межбазового и межплатформенного переноса данных активно внедряется язык XML, все большее число разработчиков пакетов рассматриваемого типа планируют поддержку XML или уже имеют ее.

В начало В начало

ТнБД и технология Borland MIDAS

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

В многозвенной технологии каждый уровень универсальной структуры приложения базы данных (уровень данных, бизнес-уровень и уровень представления) реализуется отдельно. Для реализации бизнес-уровня служит специальный элемент — сервер приложений. Он, с одной стороны, является клиентом СУБД и содержит все необходимые для этого средства доступа, а с другой — осуществляет реализацию бизнес-логики и взаимодействия с приложением БД. При этом уровень представления (или графический интерфейс) реализуется как приложение, располагаемое на клиентском компьютере, и вообще не содержит средств доступа к базе данных, являясь в этом смысле тонким клиентом.

Одним из полезных следствий внедрения многозвенных технологий оказалась возможность реализации так называемой модели портфеля (Briefcase). С появлением тонких клиентов появилась принципиальная возможность работать с временными копиями данных на компьютере клиента. Это обеспечивается сохранением (кэшированием) информации, полученной из базы данных, на жестком диске клиентского компьютера. При таком подходе клиент получает принципиальную возможность отключиться от базы данных, скачав информацию на жесткий диск, скажем, переносного компьютера, и далее использовать его как своеобразный «портфель» с данными. Он может отправиться в деловую поездку, наполнить там «портфель» новой информацией, а после возвращения на фирму подключиться к сети и обновить данные в центральной СУБД. Понятно, что новая функциональность не могла не быть востребована, и стали появляться специальные программные средства для повышения удобства использования такого подхода. Существенным преимуществом здесь является то, что в составе подобных автономных средств отсутствует собственно большая СУБД, то есть клиенту нет необходимости возить с собой, например, СУБД Oracle. Хранение данных в «портфеле» реализуется в виде одного или нескольких файлов на жестком диске. Программы, обеспечивающие работу с такими файлами, стали оснащаться средствами просмотра, сортировки, фильтрации и т.д., тем самым превращаясь в прообразы тонких баз данных.

В версию Delphi 3 были включены компоненты, реализующие многозвенную архитектуру и получившие название MIDAS (Multitier Distributed Application Service). Начиная с версии Delphi 6 они стали именоваться DataSnap. MIDAS позволяет создавать трехзвенные приложения баз данных, имея в своем арсенале компоненты для формирования промежуточного звена — серверов приложений. Они реализуются в Delphi посредством так называемых удаленных модулей данных (Remote Data Module). При распространении тонких клиентов вместе с исполняемым файлом приложения раньше необходимо было поставлять специальную DLL-библиотеку midas.dll (или dbclient.dll до версии Delphi 5). Начиная с версии Delphi 6 эта необходимость отпала, разработчик получил возможность включения функциональности указанной библиотеки непосредственно в исполняемый файл приложения (подключая программный модуль midaslib.dcu). Для реализации тонких клиентов и модели «портфеля» предназначен специальный компонент — ClientDataSet.

Компонент ClientDataSet, предназначенный для создания клиентских приложений в технологии MIDAS (DataSnap), способен подключаться к серверу приложений, получать информацию из СУБД и сохранять ее в файлах на жестком диске клиентского компьютера. Последняя возможность представляет особый интерес, поскольку ClientDataSet вполне можно использовать не в традиционных целях, а для создания небольших тонких баз данных. В этом случае компонент не подключается к серверу приложений, а работает автономно, обладая при этом неплохими функциональными возможностями — такими как сортировка, индексация, фильтрация, поддержка агрегатных значений, возможность «отката» изменений в файлах данных, а также поддержка вложенных таблиц. С более подробной информацией о таком нетрадиционном применении компонента ClientDataset можно ознакомиться в ряде публикаций1. Отметим, что данные этот компонент может сохранять не только в собственном формате, но и в формате XML. Единственным, однако критичным ограничением компонента ClientDataSet является отсутствие возможности реализации SQL-запросов для обработки данных, хранящихся в файлах. К сожалению, это ограничение не позволяет создавать сколько-нибудь серьезные приложения, но для небольших задач применение ClientDataSet вполне реально. С учетом вышесказанного можно считать такое нетрадиционное использование Borland MIDAS прообразом тонких баз данных.

В начало В начало

Общие характеристики пакетов компонентов для создания ТнБД

о второй части нашей статьи будет представлен обзор следующих пакетов компонентов для создания тонких баз данных средствами Borland Delphi и C++Builder:

• DBISAM (http://www.elevatesoft.com, США);

• EasyTable (http://www.aidaim.com, США);

• TurboDB (http://www.turbodb.com, Германия);

• VolgaDB (http://www.volgadb.com, Россия);

Ниже представлены их общие характеристики:

• компоненты для доступа к данным являются потомками класса TDataset, поэтому при работе с ними не возникает никаких проблем использования стандартных визуальных компонентов Delphi (DBGrid, DBEdit и т.д.);

• компоненты поддерживают стандартные типы данных (ftInteger, ftSmallInt, ftFloat, ftDateTime, ftDate, ftTime, ftString, ftWideString, ftCurrency, ftWord, ftBoolean, ftLargeInt, ftAutoinc, ftBLOB, ftMemo, ftGraphic, ftFmtMemo, ftBytes, ftBCD);

• компоненты поддерживают язык SQL (свои подмножества SQL-92).

Все пакеты работают под управлением операционной системы Windows, начиная с Windows 95.

КомпьютерПресс 7'2003

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует