Публикации

8 февраля [Лекции]

Литература

Основная

4. Мартин Грабер. SQL. Описание SQL92, SQL99 и SQLJ. М.: Лори, 2003.

5. Ладани Ханс. SQL. Энциклопедия пользователя. Киев: Издательство ДиаСофт, 1998.

6. Райан С., Рональд Р. П. SQL за 24 часа – М.: ЗАО БИНОМ, 1988.

7. Дунаев С. Доступ к базам данных и техника работы в сети. М.: Диалог-МИФИ, 2000.

Дополнительная

4. Когаловский М. Р. Энциклопедия технологий баз данных. М.: Финансы и статистика, 2002.

5. Винкоп С. Использование Microsoft SQL Server. М., СПб.: Издательский дом «Вильямс», 1999.

6. Корнеев В. В., Гареев А. Ф., Васютин С. В., Райх В. В. Базы данных. Интеллектуальная обработка информации. 2-е изд. М.: Нолидж, 2001.

7. Маклаков С. В. BPWin и ERWin. CASE-средства разработки информационных систем.

8. Кевин Луни. Oracle Database 10g. М.: Лори, 2006.

9. Владислав Пирогов. SQL Server 2005. Программирование клиент-серверных приложений. СПб.: БХВ-Петербург, 2006.

10. Люк Веллинг, Лора Томсон. MySQL. Учебное пособие. М.: Вильямс, 2005.

11. Джеймс Ли, Брент Уэр. Использование Linux, Apache, MySQL и PHP для разработки Web-приложений. М.: Вильямс, 2006.

12. Михеева В., Харитонова И. Microsoft Access 2003. Наиболее полное руководство. СПб.: БХВ-Петербург, 2006.

8 февраля [Лекции]

Задания для самостоятельной работы

• Составьте SQL-запрос, выбирающий из таблицы с именем myT все строки и отображающий все столбцы. • Составьте SQL-запрос, выбирающий из двух таблиц с именами myT1 и myT2 все строки и отображающий все столбцы. • Составьте SQL-запрос, выбирающий из таблицы с именем myT все строки и отображающий столбцы с именами col1, col2 и col3. • Составьте SQL-запрос, выбирающий из двух таблиц с именами myT1 и myT2 все строки и отображающий столбцы c1, c2, c3 из таблицы myT1 и c3, c4, c5 из таблицы myT2. • Составьте SQL-запрос, выбирающий из двух таблиц с именами myT1 и myT2 все строки и отображающий столбцы c1, c2, c3 из таблицы myT1 и c3, c4, c5 из таблицы myT2. При этом столбец c3 из таблицы myT1 должен отображаться с именем c13, а столбец c3 из таблицы myT2 – с именем c23. • Составьте SQL-запрос, выбирающий из таблицы с именем myT все строки и отображающий столбцы с именами col1, col2 и col3, при условии, что числовой столбец cond принимает значение 15. • Составьте SQL-запрос, выбирающий из таблицы с именем myT все строки и отображающий столбцы с именами col1, col2 и col3, при условии, что строковый столбец cond принимает значение «прикладная информатика» (без кавычек). • Составьте SQL-запрос, выбирающий из двух таблиц с именами myT1 и myT2 все строки и отображающий столбцы c1, c2, c3 из таблицы myT1 и c3, c4, c5 из таблицы myT2, при условии, что значения в столбцах c3 строк обеих таблиц должны совпадать. Столбцам c3 таблиц myT1 и myT2 должны быть присвоены псевдонимы c13 и c23 соответственно. • Составьте SQL-запрос, выбирающий из двух таблиц с именами myT1 и myT2 все строки и отображающий столбцы c1, c2, c3 из таблицы myT1 и c4, c5 из таблицы myT2, при условии, что значение в столбце c3 строки таблицы myT1 должно совпадать со значение в столбце c6 строки таблицы myT2, а значение числового столбца cond таблицы myT2 должно быть больше 0. • Составьте SQL-запрос, выбирающий из двух таблиц с именами myT1 и myT2 все строки и отображающий столбцы c1, c2, c3 из таблицы myT1 и c4, c5 из таблицы myT2, при условии, что значение в столбце c3 строки таблицы myT1 должно совпадать со значение в столбце c6 строки таблицы myT2, а числовой столбец cond таблицы myT2 может принимать значения из списка 1, 3, 7, 13. • Составьте SQL-запрос, вставляющий в столбцы c1, c2, c3 таблицы myT1 значения 5, «заседание кафедры» (строковое без кавычек), «21 февраля 2007» (дата в формате дд.мм.гггг). • Составьте SQL-запрос, изменяющий в таблице myT1 значение числового столбца c3 на 5 для всех строк таблицы. • Составьте SQL-запрос, увеличивающий в таблице myT1 значение числового столбца c3 на 5 для всех строк таблицы. • Составьте SQL-запрос, изменяющий в таблице myT1 значение строкового столбца c3 на «студент 2 курса» (без кавычек) для строк таблицы, у которых значение числового столбца c2 равно 10. • Составьте SQL-запрос, увеличивающий в таблице myT1 значение числового столбца c1 на 1 для строк таблицы, у которых значение числового столбца c1 равно 2. • Составьте SQL-запрос, удаляющий все строки из таблицы myT1. • Составьте SQL-запрос, удаляющий из таблицы myT1 те строки, для которых значение числового столбца col1 равно 0. • Составьте SQL-запрос, удаляющий из таблицы myT1 те строки, для которых значение числового столбца col1 меньше либо равно 0, значение числового столбца col2 не равно 0, а значение строкового столбца равно «студент» или «аспирант». • Составьте SQL-запрос, создающий в базе данных таблицу с именем Tab1 и столбцами col1 (целое число), col2 (70 символов), col3 (40 символов), col4(дата), col5 (целое число). • Составьте SQL-запрос, удаляющий из базы данных таблицу с именем Tab1. • Составьте SQL-запрос, вычисляющий количество аспирантов на разных факультетах (данные хранятся в таблице postgraduates, факультет определяется столбцом faculty). • Составьте SQL-запрос, вычисляющий количество аспирантов на факультете «Информационные технологии» (данные хранятся в таблице postgraduates, факультет определяется строковым столбцом faculty). • Составьте SQL-запрос, вычисляющий количество студентов в разных группах на 5 курсе (данные хранятся в таблице students, номер группы определяется числовым столбцом group_num, для 5-го курса номер группы имеет вид 5mn, где mn – две цифры). • Составьте SQL-запрос, вычисляющий количество студентов в разных группах на 5 курсе (данные хранятся в таблице students, номер группы определяется числовым столбцом group_num, для 5-го курса номер группы имеет вид 5mn, где mn – две цифры) и сортирующий выходную информацию по номеру группы (по возрастанию). • Составьте SQL-запрос, выбирающий из таблицы students все строки, у которых в столбце group_num стоит то же значение, что и у строчки, у которой в столбцах last_name, first_name и mid_name стоят значения «Петров», «Сергей», «Иванович» соответственно (без кавычек). • Составьте SQL-запрос, выбирающий из таблицы students все строки, у которых в столбце professor_id стоит то же значение, что и в столбце id строк таблицы professors, для которых в столбцах last_name, first_name, mid_name стоят соответственно значения «Кузнецов», «Петр», «Иванович» или «Селиванов», «Константин», «Сергеевич». • Составьте SQL-запрос, вставляющий в таблицу t1 все строки таблицы t2 (считается, что структуры таблиц одинаковы). • Составьте SQL-запрос, вставляющий в таблицу t1 все строки таблицы t2, для которых числовой столбец col2 имеет значение 1 (считается, что структуры таблиц одинаковы). • Составьте SQL-запрос, вставляющий в таблицу t1 значения столбцов col1, col2, col3 строк таблицы t2, для которых значение столбца col3 больше 0. • Составьте SQL-запрос, дающий пользователю user1 все права на работу с таблицей t1. • Составьте SQL-запрос, дающий пользователю user2 права на выборку из таблицы t2. • Составьте SQL-запрос, дающий пользователю user3 права на выборку и вставку в таблицу t3 с правом дальнейшего делегирования привилегий. • Составьте SQL-запрос, дающий пользователю user4 право изменения столбцов c1, c2, c3 таблицы t4. • Составьте SQL-запрос, лишающий пользователя user1 всех прав на работу с таблицей t1. • Составьте SQL-запрос, лишающий пользователя user2 прав на выборку из таблицы t2. • Составьте SQL-запрос, лишающий пользователя user3 прав на выборку и вставку в таблицу t3 при условии, что пользователь user3 успел делегировать часть своих прав пользователю user5.

8 февраля [Лекции]

Обзор современных СУБД: Oracle 10g, Microsoft SQL 2005, Access 2003, MySQL, Cashe

Разговор о базах данных будет неполным без упоминания о состоянии дел на настоящий момент. Поэтому в качестве заключения рассмотри наиболее известные и распространенные сегодня СУБД.

Oracle 10g в настоящее время является одним из лидеров коммерческих СУБД, использующихся в крупных информационных системах.

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

Помимо множества таблиц, СУБД Oracle 10g также поддерживает различного рода индексы: древовидные, битовые, индексы с обратным ключом, функциональные, секционированные, текстовые.

Описанные логические структуры хранятся в специальном словаре данных (data dictionary), в котором хранятся метаданные о каждом объекте: владелец объекта, определение, привилегии и другое.

Физически табличное пространство состоит из одного или нескольких файлов данных. Один файл может принадлежать только одному табличному пространству. В Oracle 10g появилась возможность использовать табличные пространства большого файла – до нескольких тысяч терабайт.

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

Автоматическое управление отменой действий предлагает мощный механизм поддержки транзакций. В версии Oracle 10g появилась даже возможность выполнения ретроспективных версий запросов, чтобы увидеть различные версии строки в определенные моменты времени.

Также в Oracle 10g появилась концепция мусорной корзины, позволяющая быстро восстанавливать удаленные таблицы. Теперь по умолчанию при удалении таблицы ее дисковое пространство не освобождается, и она может быть просмотрена с помощью представления словаря данных RECYCLEBIN. Данная архитектура упрощает восстановление случайно удаленных таблиц, но и предъявляет особые требования к дисковой памяти.

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

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

Платформа данных SQL Server включает реляционную базу данных, Replication Services (сервис для репликация данных и интеграция с разнородными системами, включая существующие базы данных Oracle), Analysis Services (аналитическая обработка в реальном времени (OLAP) для быстрого, сложного анализа больших и смешанных наборов данных, использующая многомерное хранение), инструменты управления и разработки, а также многие другие компоненты.

SQL Server 2005 также содержит много новых и улучшенных возможностей, относящихся к следующим областям:

21. Управляемость

22. Доступность

23. Масштабируемость

24. Безопасность

SQL Server 2005 упрощает развертывание, управление и оптимизацию данных предприятия и аналитических приложений. SQL Server 2005 предоставляет более 70 новых мер внутренней производительности базы данных и использования ресурсов от памяти, блокировок и планирования до транзакций и операций сетевого и дискового ввода-вывода. Зеркалирование базы данных позволяет непрерывно передавать содержимое журнала транзакций исходного сервера на один целевой сервер. В случае сбоя основной системы приложения могут немедленно соединиться с базой на вспомогательном сервере. Кластеры с восстановлением после отказа являются решением высокой готовности, которое использует службы кластеризации Microsoft Windows для создания устойчивых к сбоям виртуальных серверов, обеспечивающих быстрое восстановление в случае сбоя сервера баз данных. SQL Server 2005 дает администраторам баз данных возможность создавать мгновенные, доступные только для чтения снимки базы данных. Моментальный снимок базы данных предоставляет устойчивый снимок без накладных расходов на время и хранение на создание полной копии базы данных. Когда основная база данных расходится со снимком, последний добавляет свои собственные копии страниц, по мере того, как они изменяются.

SQL Server 2005 имеет существенные улучшения в модели безопасности платформы базы данных:

44. Применение политик для паролей учётных записей SQL Server в области аутентификации

45. Обеспечение большей модульности дл указания разрешений на различных уровнях в области авторизации

46. Разделение владельца и схемы в области управления безопасностью.

Как и любой другой продукт компании Microsoft, SQL Server 2005 обязательно содержит множество новых технологий, интегрирующих его с другими продуктами компании и существенно увеличивающих продуктивность разработчиков. Начиная с поддержки .NET Framework и заканчивая тесной интеграцией с Visual Studio, эти функции предоставляют разработчикам возможность проще создавать безопасные, сильные приложения баз данных при меньших затратах.

Microsoft Access является одним из основных компонентов Microsoft Office и предназначена для работы с реляционными базами данных. Особенность данной СУБД: вся информация базы данных хранится в одном файле с расширением .mdb. Кроме информации таблиц, в этом же файле сохраняются компоненты приложения для работы с базой данных – экранные формы, отчеты, запросы, программные модули.

Для работы с базой данных система использует Microsoft Jet database engine – систему управления базами данных, извлекающую и сохраняющую данные в пользовательских и системных задачах. Ядро базы данных Microsoft Jet можно рассматривать как компонент диспетчера данных, с помощью которого строятся остальные системы доступа к данным, такие как Microsoft Access и Microsoft Visual Basic. Язык написания программных модулей для работы с базой данных – Microsoft Visual Basic for Applications (VBA).

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

Microsoft Access имеет собственные средства для разграничения прав доступа пользователей к базе данных. Простейшим способом ограничения доступа к базе данных является установка пароля для открытия базы данных (*.mdb). После установки пароля при каждом открытии базы данных будет появляться диалоговое окно, в которое требуется ввести пароль. Этот способ достаточно надежен (Microsoft Access шифрует пароль, поэтому к нему нет доступа при непосредственном чтении файла базы данных), но он действует только при открытии базы данных. Есть и еще одно ограничение. Использовать установку пароля на базу данных нельзя, если предполагается выполнять репликацию базы. Реплицированные базы данных не могут быть синхронизированы, если установлен пароль базы данных.

После открытия базы все объекты становятся доступными для пользователя, пока не определены другие типы защиты. Защита на уровне пользователей имеет большие возможности по разграничению прав. Этот способ подобен способам, используемым в большинстве сетевых систем. При запуске Microsoft Access от пользователя требуется идентифицировать себя и ввести пароль. Microsoft Access по умолчанию создает две группы: администраторы (группа Admins) и простые пользователи (группа Users). Допускается определение других групп и пользователей.

Члены группы Admins имеют разрешения на доступ ко всем объектам базы данных. Другим группам и пользователям могут предоставляться разрешения на доступ только к отдельным объектам базы данных. Типовые разрешения на доступ для группы Users могут включать "Чтение данных" и "Обновление данных" для таблиц и запросов, а также "Открытие/запуск" для форм и отчетов.

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

MySQL – это очень быстрый, многопоточный, многопользовательский, поддерживающий SQL (Structured Query Language) сервер баз данных. Особенностью MySQL является то, что он распространяется бесплатно (для некоммерческого внутреннего использования) и лицензируется по GNU GENERAL PUBLIC LICENSE.

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

MySQL является системой «клиент-сервер», состоящей из многопоточного SQL-сервера, который поддерживает различные функции, несколько различных клиентских программ и библиотек, административные инструментальные средства и несколько интерфейсов программирования. Наибольшее распространение данная СУБД нашла в разработке web-порталов в сочетании с исключительно удобным языком web-программирования PHP. В настоящее время подавляющее большинство web-систем разрабатывается с использованием связки PHP + MySQL.

Основные возможности MySQL следующие:

• Полностью многопоточное использование ядерных нитей. Это означает, что пакет может легко использовать много процессоров, если они есть.

• Интерфейсы для языков C, C++, Eiffel, Java, Perl, PHP, Python и Tcl.

• Возможность смешивать таблицы из разных баз данных в одном запросе.

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

• Поддержка поистине огромных объемов данных. Известен случай использования MySQL на 60000 таблиц, хранящих около 5000000000 строк.

• Для переносимости использованы GNU Automake, Autoconf и Libtool.

• Пакет написан на C и C++. Оттестирован на всех распространенных компиляторах этих языков.

• Очень быстрая поточно-безопасная система управления памятью.

• Никаких утечек памяти. MySQL тестировался с помощью Purify, коммерческого детектора утечек памяти.

• Клиенты могут соединяться с сервером MySQL, используя все допустимые в современных сетях технологии: сокеты TCP/IP, сокеты Unix (под Unix) или даже именованные каналы (под NT).

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

• объектный,

• реляционный (на основе SQL),

• высокопроизводительный и гибкий многомерный метод доступа к данным.

Кроме того, Cache обеспечивает быструю и эффективную разработку web-приложений, поддержку механизма транзакций при работе с данными, легкую масштабируемость приложений, предъявляя, при этом, крайне скромные требования к аппаратным ресурсам, используемым системой и администрированию. Cache поддерживает большинство платформ, используемых для создания промышленных приложений – от Windows, OpenVMS, Unix/Linux до Mac OS X. На ее основе разработаны различные системы, оперирующие как малыми, так и большими массивами данных (порядка нескольких терабайт), с которыми одновременно могут работать до 50 000 пользователей.

Cache позволяет разработчикам использовать знакомые им языки и инструменты программирования: Java, .Net, Active X, C++, Delphi, SQL, XML и HTML. Cache также поддерживает полноценную концепцию объектного программирования, позволяющую в короткие сроки как разрабатывать новые, так и вносить улучшения в уже существующие приложения. Особый интерес для программистов, занимающихся созданием Web-приложений, представляют технологии Cache Server Pages и ZEN — простой и удобный способ создания высокопроизводительных Web-приложений.

Многомерное представление данных на сервере Cache позволяет ускорить выполнение таких обычно длительных операций, как «объединение таблиц». Скорость доступа к данным в Cache практически не зависит от размера базы данных, что позволяет увеличить размер транзакционного приложения без потери производительности.

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

Cache полностью поддерживает объектную архитектуру, в частности, такие ее основы, как множественное наследование, полиморфизм и коллекции. Используя эти возможности, разработчики могут моделировать предметную область реалистическими, понятными способами, ускоряя таким образом, процесс разработки приложений. Cache реализует не только все основные идеи объектной архитектуры, но и позволяет использовать современные технологии объектного моделирования и реинжиниринга, такие как Rational Rose.

В InterSystems принят подход «define once — use anywhere» (определено однажды — используется везде) к управлению данными. В Cache данные любого объекта можно получить как SQL-таблицу, a каждую таблицу — как объект. Данные Cache автоматически могут быть представлены на любом из объектно-ориентированных языков программирования и в SQL. Вам больше не надо заниматься утомительным отображением объектов в реляционные таблицы, больше не нужен дополнительный «трансляционный» слой между логикой приложения и базой данных.

Cache Server Pages предоставляет изящные средства создания быстродействующих, хорошо масштабируемых web-приложений за короткое время. При этом облегчается как дальнейшее сопровождение, так и развитие таких приложений. Технология Cache’ Server Pages позволяет создавать динамическое web-содержимое в зависимости от времени, пользовательского ввода, отношений между сохраненными данными и тому подобного. В ее основе лежат HTML-страницы – так называемые CSP-страницы, содержащие специальные теги, которые выполняются на сервере Cache’ каждый раз, когда происходит обращение к ним, и которые возвращают индивидуальное содержимое.

Технология ZEN, по сути, является надстройкой над технологией CSP, делая разработку web-приложений более простой и удобной, при этом используя все преимущества CSP, такие как быстродействие, доступ к данным, безопасность, и дополняя ее возможностью сборки web-страниц из встроенных объектных компонентов.

8 февраля [Лекции]

Интерфейс ADO

Интерфейс ADO (Microsoft ActiveX Data Objects) представляет собой высокоуровневый программный интерфейс для доступа к OLE DB-интерфейсам, а в будущем – модель доступа к данным любых типов. Он также является частью универсального механизма доступа к данным Microsoft (Microsoft Universal Data Access) и позволяет манипулировать данными с помощью любых OLE DB-провайдеров, как входящих в состав Microsoft Data Access Components, так и произведенных сторонними производителями. Основой интерфейса ADO является набор объектов, используемых для соединения с источником данных, чтения, добавления, удаления и модификации данных.

Объектная модель ADO очень проста и понятна. Верхний уровень иерархии представляет объект ADO Connection, который применяется для установки связи с источником данных. Этот объект представляет единственную сессию и позволяет изменить параметры соединения с базой данных, а также начать или завершить транзакцию. Используя объект Connection, можно выполнять команды (например, SQL-запросы) с помощью метода Execute. А если команда возвращает набор данных, то автоматически создается объект Recordset, который возвращается в результате выполнения этого метода.

Объект Error используется для получения сведений об ошибках, возникающих в процессе выполнения. Объект Command представляет собой команду, которую можно выполнить в источнике данных. Команда может содержать SQL-предложение или вызов хранимой процедуры. В последнем случае для определения параметров процедуры может быть использована коллекция Parameters объекта Command.

Объект Recordset – это набор записей, полученных из источника данных. Он может быть использован для добавления, удаления, изменения, просмотра записей. Данный объект может быть открыт непосредственно или создан с помощью объектов Connection или Command.

Объект Field – это столбец в наборе данных, представленных объектом Recordset. Он может быть использован для получения значений конкретного поля, его модификации, а также извлечения метаданных, таких как имя колонки и тип данных.

Библиотека ADO 2.5 содержит два новых объекта Record и Stream. Объект Record представляет одну запись внутри объекта Recordset и может быть использован для работы с гетерогенными и иерархическими данными. Объект Stream представляет двоичные данные, связанные с объектом Record. Например, если объект Record представляет собой файл, то соответствующий объект Stream будет содержать данные этого файла.

Как уже говорилось, интерфейс ADO является высокоуровневой надстройкой над интерфейсов OLE DB. Проиллюстрируем связь этих интерфейсов и соответствующих объектов (более подробную информацию можно найти в Microsoft OLE DB Programmer's Reference):

• объект ADO Connection использует объекты OLE DB DataSource и Session. Транзакции поддерживаются с помощью интерфейсов ITransaction и ITransactionLocal, метод Execute использует метод Execute интерфейса ICommand или метод OpenRowset интерфейса IOpenRowset. Большинство свойств доступно с помощью IDBProperties. Объект Error поддерживается с помощью интерфейса IErrorRecords;

• объект ADO Command использует объект OLE DB Command и интерфейс ICommand. Коллекция Parameters объекта ADO Command доступна с помощью интерфейса ICommandWithParameters;

• объект ADO Recordset использует объект OLE DB Rowset. Он применяет интерфейсы IRowset, IRowsetLocate и IRowsetInfo для реализации большинства методов, свойств и коллекций. Объект Field использует интерфейс IColumnsInfo.

Начиная с версии 2.1, ADO содержит несколько расширений. Первое из них – ADO Extensions for Data Definition and Security (ADOX). ADOX представляет собой набор объектов, позволяющих манипулировать метаданными в базах данных и управлять объектами, отвечающими за безопасность.

Объекты ADOX представляют большинство основных объектов в типичных реляционных СУБД, и их свойства и методы могут быть использованы для создания этих объектов и манипуляции ими.

Объект Назначение

Catalog Представляет всю схему базы данных

Table Представляет таблицу в базе данных

Column Представляет колонку в таблице, индексе или ключе

Index Представляет индекс внутри таблицы

Key Представляет первичный или внешний ключ

Group Представляет группу пользователей

User Представляет индивидуального пользователя базы данных внутри группы

Procedure Представляет хранимую процедуру внутри базы данных

View Представляет view внутри базы данных

Еще одно расширение – ADO Multi-Dimensional Extensions (ADOMD). ADOMD – это набор объектов, позволяющих использовать многомерные данные в ADO-приложениях. Такие данные управляются OLAP-серверами (OLAP, Online Analytical Processing), которые широко применяются в системах принятия решений, где требуется статистический анализ больших объемов данных.

Объект Назначение

Catalog Представляет всю схему многомерной базы данных

CubeDef Представляет многомерный куб в базе данных

Dimension Представляет размерность внутри куба

Hierarchy Представляет иерархию внутри размерности

Level Представляет уровень иерархии

Cellset Представляет результат запроса к кубу

Cell Представляет ячейку в объекте CellSet

Axis Представляет одну из осей в объекте CellSet

Position Представляет позицию в объектах Cell или Axis

Member Представляет конкретное значение вдоль оси или уровня иерархии

Последнее из расширений – Jet and Replication Objects (JRO). JRO представляет собой набор объектов, специально предназначенных для использования совместно с Microsoft Jet OLE DB Provider. Его свойства позволяют создавать, модифицировать и синхронизировать реплики. Реплика – это копия базы данных, изменения в которой синхронизируются с главной базой данных (master database). Объект Replica используется для создания новых реплик, модификации свойств существующих реплик и синхронизации изменений с другими репликами. Объект JetEngine применяется для сжатия баз данных и обновления данных из кэша памяти.

8 февраля [Лекции]

Интерфейс OLE DB

Интерфейс OLE DB является частью универсального механизма доступа к данным Microsoft (Microsoft Universal Data Access), позволяя осуществлять доступ как к реляционным, так и нереляционным источникам данных (например, файловая система, данные электронной почты, многомерные хранилища данных и другие).

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

Среди OLE DB-провайдеров для разных источников данных имеется также один специальный провайдер Microsoft OLE DB Provider for ODBC Drivers. Этот провайдер использует не API клиентской части некоторой СУБД, а интерфейс ODBC API. Естественно, используется он вместе с ODBC-драйвером выбранной СУБД.

В спецификации OLE DB определен набор COM-интерфейсов (COM – Component Object Model, компонентная модель объектов Microsoft), инкапсулирующих различные сервисы управления данными и предоставляющих однотипный доступ к перечисленным выше данным. Эти интерфейсы могут быть использованы в приложениях, предоставляющих доступ к данным.

Самый верхний уровень составляют три главных компонента OLE DB: потребители (consumers), провайдеры данных (data providers) и сервисные компоненты (service components).

Любой компонент программного обеспечения, применяющий интерфейсы OLE DB, является потребителем. Потребители могут обращаться к данным посредством ActiveX Data Objects, представляющих собой высокоуровневый интерфейс к OLE DB, или применять OLE DB непосредственно, используя OLE DB-провайдер.

Провайдер – это часть программного обеспечения, в которой реализованы интерфейсы OLE DB. Существуют два типа OLE DB-провайдеров – провайдеры данных и сервисные компоненты.

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

• получение от потребителя запросов на получение или модификацию данных;

• получение данных из базы данных или их модификацию в базе данных;

• возвращение данных потребителю.

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

Объектная модель OLE DB содержит четыре ключевых объекта:

• DataSource;

• Session;

• Command;

• Rowset.

Объект DataSource применяется потребителями данных для соединения с провайдером. Объект DataSource инкапсулирует информацию, связанную с соединением (включая имя пользователя и пароль). Основное назначение этого объекта – предоставлять данные из источника данных потребителю.

Объект Session предоставляет контекст для транзакций, может генерировать наборы данных (rowsets) из источников данных, а также команды для запросов к источнику данных. С одним объектом DataSource может быть связано несколько объектов Session.

Объект Command используется для выполнения команд, представляющих собой строки, передаваемые от потребителя данных объекту DataSource для выполнения. В большинстве случаев такая команда представляет собой SQL-предложение SELECT, однако в общем случае это может быть любое другое SQL-предложение. Команды могут содержать параметры. Одна сессия может порождать несколько команд. Результатом выполнения команды обычно является новый объект Rowset. С одним объектом DataSource может быть связано несколько объектов Command.

Объект Rowset (набор данных) позволяет OLE DB-провайдеру данных представлять данные из источников данных в табличном формате, то есть в виде набора строк, содержащих одну или несколько колонок. Этот объект может быть результатом выполнения команды или может быть сгенерирован непосредственно провайдером данных, если провайдер не поддерживает команд. Все провайдеры данных имеют средства непосредственного создания наборов данных. Объект Rowset может быть также использован для обновления, добавления или удаления строк – это зависит только от функциональности провайдера данных.

Помимо четырех основных объектов, перечисленных выше, существуют и другие объекты OLE DB. Они нужны для перечисления источников данных, управления транзакциями, обработки ошибок и другого.

Объект Enumerator используется для получения списка доступных объектов, обеспечивающих доступ к источникам данных (OLE DB-провайдеров). Объект Transaction поддерживает транзакции в источнике данных. Объект Error в дополнение к кодам возврата и информации о состоянии, свидетельствующей об успехе или неуспехе вызова любого из методов OLE DB, позволяет OLE DB-провайдерам предоставлять расширенную информацию об ошибках.

Адаптивное тестирование - быстрая и точная оценка персонала
 

Категории статей

Поиск статьи