Введение в базы данных
Объект Transaction
Объект Transaction поддерживает транзакции в источнике данных. Транзакции, как мы уже знаем из первой статьи данного цикла, позволяют определить группу операций, которые либо все вместе выполняются, либо все вместе отменяются.
Транзакции бывают локальными и распределенными. Локальные транзакции — это транзакции, выполняемые в контексте единого провайдера данных. Провайдер, поддерживающий локальные транзакции, должен реализовать интерфейс ITransactionLocal. Транзакция начинается с вызова метода StartTransaction, завершается с помощью метода Commit или откатывается с помощью Abort. Способность провайдера поддерживать транзакции может быть определена с помощью интерфейса IDBProperties.
Распределенные транзакции выполняются в контексте нескольких провайдеров данных. Для выполнения таких транзакций потребители используют интерфейс TtransactionJoin, доступный только если провайдер данных поддерживает распределенные транзакции. В этом случае потребитель вызывает метод JoinTransaction для регистрации сессии в распределенной транзакции. После присоединения к распределенной транзакции потребитель использует интерфейс ITransaction для завершения или отката транзакции.
Объект Error
В дополнение к кодам возврата и информации о состоянии, свидетельствующей об успехе или неуспехе вызова любого из методов OLE DB, OLE DB-провайдеры могут предоставлять расширенную информацию об ошибках с помощью объекта Error. Потребители данных могут использовать интерфейс ISupportErrorInfo для того, чтобы определить, может ли данный объект возвратить объект Error, и если да, то каковы эти интерфейсы.
Подробности об OLE DB можно найти на Web-сайте компании Microsoft:
http://www.microsoft.com/data/oledb
или в следующих группах новостей на http://msnews.microsoft.com:
Выше мы уже перечислили ряд стандартных OLE DB-провайдеров, доступных в составе Microsoft Data Access Components и некоторых других продуктов Microsoft. Далее мы выясним, где можно найти OLE DB-провайдеры сторонних производителей и даже инструменты для создания собственных провайдеров.
Поставщики OLE DB-провайдеров
Многие производители СУБД поставляют OLE DB-провайдеры в составе своих продуктов. В табл. 2 приведен список подобных производителей серверных СУБД.
Таблица 2
Производитель | OLE DB-провайдеры | URL |
---|---|---|
Computer Associates, Inc. | Jasmine OLE DB Provider | http://www.cai.com/ |
Informix Software, Inc. | INFORMIX OLE DB Provider | http://www.informix.com |
Object Design, Inc. | ObjectStore OLE DB Provider | http://www.odi.com |
SAS Institute | SAS/MDDB | http://www.sas.com |
Sequiter Software, Inc. | CodeBase OLE DB Provider | http://www.sequiter.com |
Помимо этого существуют компании, производящие OLE DB-провайдеры для различных источников данных. Они перечислены в табл. 3.
Наиболее актуальную информацию об OLE DB-провайдерах можно найти на сайте, посвященном Microsoft Universal Data Access:
http://www.microsoft.com/data/partners/products.htm
В случае когда вам необходимо создать собственный OLE DB-провайдер, есть несколько инструментов, доступных на рынке. Они показаны в табл. 4.
Таблица 4
Vendor | Tool | URL |
---|---|---|
Simba Technologies | SimbaProviderSimbaProvider for OLAP SDK | http://www.simba.com/ |
Automation Technology Company | OpenAccess OLE DB SDK | http://www.odbcsdk.com/ |
Geppetto's Workshop | AntMDX | http://www.geppetto.com/ |
X-Tension | MDX Parser for OLE DB for OLAP | http://www.x-tension.com/ |
IBM | Client Access for Windows 9x/NT SDK | http://www.as400.ibm.com/ |
Binh Ly | OLE DB Provider Toolkit for Delphi 5 | http://www.techvanguards.com |
Рассмотрев OLE DB, мы можем перейти к обсуждению ADO и его взаимодействию с OLE DB.
Microsoft ActiveX Data Objects
ADO, как мы знаем, представляет собой высокоуровневый программный интерфейс для доступа к OLE DB-интерфейсам. Он позволяет манипулировать данными с помощью любых OLE DB-провайдеров, как входящих в состав Microsoft Data Access Components некоторых других продуктов Microsoft, так и произведенных сторонними производителями. ADO содержит набор объектов, используемых для соединения с источником данных, для чтения, добавления, удаления и модификации данных.
Объект ADO Connection применяется для установки связи с источником данных. Он представляет единственную сессию. Этот объект позволяет изменить параметры соединения с базой данных, а также начать или завершить транзакцию. Используя объект Connection, мы можем выполнять команды (например, SQL-запросы) с помощью метода Execute. Если команда возвращает набор данных, автоматически создается объект Recordset, который возвращается в результате выполнения этого метода.
Объект Error используется для получения сведений об ошибках, возникающих в процессе выполнения.
Объект Command представляет собой команду, которую можно выполнить в источнике данных. Команда может содержать SQL-предложение или вызов хранимой процедуры. В последнем случае для определения параметров процедуры может быть использована коллекция Parameters объекта Command.
Объект Recordset — это набор записей, полученных из источника данных, и может быть использован для добавления, удаления, изменения, просмотра записей. Данный объект может быть открыт непосредственно или создан с помощью объектов Connection или Command.
Объект Field — это колонка в наборе данных, представленных объектом Recordset. Он может быть использован для получения значений конкретного поля, его модификации, извлечения метаданных, таких как имя колонки и тип данных.
На рис. 4 изображена объектная модель ADO.
Библиотека ADO 2.5, являющаяся составной частью операционной системы Windows 2000, содержит два новых объекта — Record и Stream.
Объект Record представляет одну запись внутри объекта Recordset и может быть использован для работы с гетерогенными и иерархическими данными.
Объект Stream представляет двоичные данные, связанные с объектом Record. Например, если объект Record представляет собой файл, то его объект Stream должен содержать данные внутри этого файла.
OLE DB и ADO
Ранее в этой статье мы уже рассмотрели некоторые основные объекты OLE DB. Теперь настало время показать, как объекты ADO используют OLD DB:
- объект ADO Connection использует объекты OLE DB DataSource и Session. Транзакции поддерживаются с помощью интерфейсов ITransaction и ITransactionLocal, метод Execute использует метод Execute интерфейса ICommand или метод OpenRowset интерфейса IOpenRowset. Большинство свойств доступно с помощью IDBProperties. Объект Error поддерживается с помощью интерфейса IErrorRecords;
- объект ADO Command использует объект OLE DB Command и интерфейс ICommand. Например, его метод Execute вызывает непосредственно одноименный метод объекта OLE DB Command, его свойство CommandText доступно с помощью методов GetCommandText и SetCommandText интерфейса ICommandText. Коллекция Parameters объекта ADO Command доступна с помощью интерфейса ICommandWithParameters;
- объект ADO Recordset использует объект OLE DB Rowset. Он применяет интерфейсы IRowset, IRowsetLocate и IRowsetInfo для реализации большинства методов, свойств и коллекций. Объект Field использует интерфейс IColumnsInfo.
Подробную информацию можно найти в Microsoft OLE DB Programmer’s Reference, являющемся составной частью Platform SDK.
Расширения ADO
Начиная с версии 2.1, ADO содержит несколько расширений, на которых мы кратко остановимся ниже.
ADO Extensions for Data Definition and Security (ADOX)
ADO Extensions for Data Definition and Security (ADOX) представляет собой набор объектов, позволяющих манипулировать метаданными в базах данных и управлять объектами, отвечающими за безопасность. Эти объекты кратко описаны в табл. 5.
Иерархия объектов ADOX показана на рис. 5. Из диаграмм на рисунке следует, что объекты Table, Column и Index имеют стандартную коллекцию Properties. Объекты ADOX представляют большинство основных объектов в типичных реляционных СУБД, и их свойства и методы могут быть использованы для создания этих объектов и манипуляции ими.
ADO Multi-Dimensional Extensions (ADOMD)
ADO Multi-Dimensional Extensions (ADOMD) — это набор объектов, позволяющих использовать многомерные данные в ADO-приложениях. Такие данные управляются OLAP-серверами (OLAP, Online Analytical Processing), такими как Microsoft OLAP Server, входящий в комплект поставки Microsoft SQL Server 7.0 (или Analytical Services в Microsoft SQL Server 2000). OLAP-серверы широко применяются в системах принятия решений, где требуется статистический анализ больших объемов данных.
Объекты ADOMD кратко описаны в табл. 6.
Иерархия объектов ADOMD показана на рис. 6.
Jet and Replication Objects (JRO)
Jet and Replication Objects — набор объектов, специально предназначенных для использования совместно с Microsoft Jet OLE DB Provider. Его свойства позволяют создавать, модифицировать и синхронизировать реплики. Реплика — это копия базы данных, изменения в которой синхронизируются с главной базой данных (master database).
Объект Replica используется для создания новых реплик, модификации свойств существующих реплик и синхронизации изменений с другими репликами.
Объект JetEngine применяется для сжатия баз данных и обновления данных из кэша памяти.
Иерархия объектов JRO показана на рис. 7.
Подробности об ADO можно найти на Web-сайте компании Microsoft:
http://www.microsoft.com/data/ado
или в следующих группах новостей на http://msnews.microsoft.com:
Где найти MDAC
Microsoft Data Access Components можно найти на Web-сайте компании Microsoft: http://www.microsoft.com/data, а также в составе Delphi 5 и C++Builder 5 Enterprise, Microsoft Office 2000, Internet Explorer 5.0. Рекомендуется периодически обновлять версию MDAC, получая ее с сайта компании Microsoft, — это гарантирует наличие последних версий всех компонентов MDAC.
ADO 2.5 является частью Windows 2000 и не требует отдельной установки. MDAC Software Development Kit, который может потребоваться разработчикам ADO-приложений, входит в состав Microsoft Platform SDK. Он может быть заказан на CD-ROM или получен на Web-сайте компании Microsoft.
Заключение
В данной статье мы рассмотрели основные части Microsoft Data Access Components (MDAC) — набора технологий, реализующих универсальный механизм доступа к данным Microsoft. Мы узнали, что универсальный механизм доступа к данным (Universal Data Access) представляет собой стратегию предоставления доступа к любому типу информации предприятия, включая реляционные и нереляционные данные.
Далее мы рассмотрели основные компоненты архитектуры универсального механизма доступа к данным Microsoft. Мы узнали, что:
- OLE DB — это низкоуровневый интерфейс для доступа к данным. ADO использует OLE DB, но можно использовать OLE DB и напрямую, минуя ADO;
- Microsoft ActiveX Data Objects (ADO) — это программный интерфейс для доступа к данным из приложений. С точки зрения программирования ADO и его расширения представляют собой упрощенный высокоуровневый объектно-ориентированный интерфейс к OLE DB.
Кроме того, мы рассмотрели основные объекты OLE DB и ADO и выяснили, как они взаимодействуют друг с другом.
Перечислив стандартные OLE DB-провайдеры, доступные в составе Microsoft Data Access Components и некоторых других продуктов Microsoft, мы обсудили, какие OLE DB-провайдеры сторонних производителей доступны в настоящее время и какие в данный момент имеются инструменты для производства собственных провайдеров.
Мы также рассмотрели расширения ADO, доступные начиная с версии 2.1:
- ADO Extensions for Data Definition and Security (ADOX) — это набор объектов, позволяющих манипулировать метаданными в базах данных и управлять объектами, отвечающими за безопасность данных;
- ADO Multi-Dimensional Extensions (ADOMD) — это набор объектов, позволяющих использовать в ADO-приложениях многомерные данные, управляемые OLAP-серверами;
- Jet and Replication Objects — это набор объектов для управления репликациями, специально предназначенных для использования совместно с Microsoft Jet OLE DB Provider.
Несколько слов хотелось бы сказать об универсальных механизмах доступа к данным в целом. Как мы видим, механизм, основанный на применении OLE DB и ADO, имеет все основания претендовать на роль ключевой технологии доступа к данным для Windows-приложений, ибо:
- он входит в состав не только многих популярных продуктов Microsoft, но и семейства операционных систем Windows 2000, что позволяет безболезненно решить ряд проблем, связанных с поставкой таких приложений и их сопровождением;
- OLE DB-провайдеры выпускаются не только автором технологии OLE DB, но и многими сторонними производителями (вспомним, например, что ситуация с BDE-драйверами как раз обратная);
- доступ к нереляционным данным, предусмотренный данной технологией, является весьма привлекательной ее особенностью, и на данный момент другие универсальные механизмы доступа к данным не могут предложить ничего подобного;
- данная технология базируется на использовании COM-интерфейсов, поэтому она поддерживается всеми средствами разработки, позволяющими создание COM-клиентов с их помощью. Кроме того, многие средства разработки, даже не принадлежащие Microsoft, поддерживают ADO на уровне собственных классов и компонентов (например, Delphi 5 и C++Builder 5), несмотря на наличие других встроенных механизмов доступа к данным.
Отметим также, что расширяемая объектная модель ADO позволяет придавать последним реализациям этой технологии новые возможности, что, скорее всего, приведет к повышению популярности этой технологии.
Этой статьей мы закончили обзор универсальных механизмов доступа к данным. Следующая статья данного цикла будет посвящена языку SQL, широко применяемому ныне для манипуляции данными.
КомпьютерПресс 8'2000