Lektsia_16_Mekhanizmy_dostupa_k_dannym.ppt
- Количество слайдов: 41
Механизмы доступа к данным. Существует несколько способов доступа к данным из средств разработки и клиентских приложений. Подавляющее большинство систем управления базами данных содержит в своем составе библиотеки, предоставляющие специальный прикладной программный интерфейс (Application Programming Interface, API) для доступа к данным этой СУБД.
Windows-версии клиентского программного обеспечения наиболее популярных серверных СУБД, в частности Microsoft SQL Server, Oracle, Informix, содержат также COM-серверы, предоставляющие объекты для доступа к данным и метаданным. Использование клиентского API (или клиентских COMобъектов) является наиболее очевидным (и нередко самым эффективным с точки зрения производительности) способом манипуляции данными в приложении. Однако в этом случае созданное приложение сможет использовать данные только СУБД этого производителя, и замена ее на другую повлечет за собой переписывание значительной части кода клиентского приложения - клиентские API и объектные модели не подчиняются никаким стандартам и различны для разных СУБД.
Другой способ манипуляции данными в приложении базируется на применении универсальных механизмов доступа к данным. Универсальный механизм доступа к данным обычно реализован в виде библиотек и дополнительных модулей, называемых драйверами или провайдерами. Библиотеки содержат некий стандартный набор функций или классов, нередко подчиняющийся той или иной спецификации. Дополнительные модули, специфичные для той или иной СУБД, реализуют непосредственное обращение к функциям клиентского API конкретных СУБД.
Достоинством универсальных механизмов является возможность применения одного и того же абстрактного API, а во многих случаях - COM-серверов, компонентов, классов для доступа к разным типам СУБД. Приложения, использующие универсальные механизмы доступа к данным, легко модифицировать, если необходима смена СУБД.
Универсальные механизмы доступа к данным: • Open Database Connectivity (ODBC). • OLE DB. • Active. X Data Objects (ADO). • Borland Database Engine (BDE). • ADO. NET
Универсальные механизмы ODBC, OLE DB и ADO фирмы Microsoft представляют собой по существу промышленные стандарты. Что касается механизма доступа к данным BDE фирмы Borland, то он так и не стал промышленным стандартом, однако до недавнего времени применялся довольно широко, так как до выхода Delphi 5 был практически единственным универсальным механизмом доступа к данным, поддерживаемым средствами разработки Borland на уровне компонентов и классов.
Возможные механизмы доступа к данным из приложений и средств разработки
ODBC (Open Database Connectivity) - широко распространенный программный интерфейс фирмы Microsoft, удовлетворяющий стандартам ANSI и ISO для интерфейсов обращений к базам данных (Call Level Interface, CLI). Для доступа к данным конкретной СУБД с помощью ODBC, кроме собственно клиентской части этой СУБД, нужен ODBC Administrator (приложение, позволяющее определить, какие источники данных доступны для данного компьютера с помощью ODBC, и описать новые источники данных), и ODBC-драйвер для доступа к этой СУБД.
ODBC-драйвер представляет собой динамически загружаемую библиотеку (DLL), которую клиентское приложение может загрузить в свое адресное пространство и использовать для доступа к источнику данных. Для каждой используемой СУБД нужен собственный ODBC-драйвер, так как ODBC-драйверы используют функции клиентских API, разные для различных СУБД.
С помощью ODBC можно манипулировать данными любой СУБД (и даже данными, не имеющими прямого отношения к базам данных, например данными в файлах электронных таблиц или в текстовых файлах), если для них имеется ODBC-драйвер. Для манипуляции данными можно использовать как непосредственные вызовы ODBC API, так и другие универсальные механизмы доступа к данным, например OLE DB, ADO, BDE, реализующие стандартные функции или классы на основе вызовов ODBC API в драйверах или провайдерах, специально предназначенных для работы с любыми ODBCисточниками.
OLE DB и ADO - часть универсального механизма доступа к данным Microsoft (Microsoft Universal Data Access), позволяющая осуществить доступ как к реляционным, так и к нереляционным источникам данных, таким как файловая система, данные электронной почты, многомерные хранилища данных и др.
Microsoft Active. X Data Objects (ADO) - это набор библиотек, содержащих COM-объекты, реализующие прикладной программный интерфейс для доступа к таким данным и используемые в клиентских приложениях. ADO использует библиотеки OLE DB, предоставляющие низкоуровневый интерфейс для доступа к данным. OLE DB предоставляет доступ к данным с помощью COM-интерфейсов. Можно также использовать OLE DB непосредственно, минуя ADO.
Для доступа к источнику данных с помощью OLE DB требуется, чтобы на компьютере, где используется клиентское приложение, был установлен OLE DBпровайдер для данной СУБД. OLE DB-провайдер представляет собой DLL, загружаемую в адресное пространство клиентского приложения и используемую для доступа к источнику данных. Для каждого типа СУБД нужен собственный OLE DB-провайдер, так как эти провайдеры базируются на функциях клиентских API, разных для различных СУБД. Среди OLE DB-провайдеров для разных источников данных имеется специальный провайдер Microsoft OLE DB Provider for ODBC Drivers. Этот провайдер использует не API клиентской части какой-либо СУБД, а интерфейс ODBC API, поэтому он применяется вместе с ODBC-драйвером для выбранной СУБД.
OLE DB подробнее. Итак, OLE DB представляет собой программный интерфейс для доступа к различным источникам данных. В спецификации OLE DB определен набор COM -интерфейсов, инкапсулирующих различные сервисы управления данными и предоставляющих однотипный доступ к перечисленным выше данным. Эти интерфейсы могут быть использованы в приложениях, предоставляющих доступ к данным. Компоненты OLE DB На самом верхнем уровне можно отметить три главных компонента OLE DB: потребители (consumers), провайдеры данных (data providers) и сервисные компоненты (service components).
Любой компонент программного обеспечения, применяющий интерфейсы OLE DB, является потребителем. Это может быть какое-либо офисное приложение или иное бизнес-приложение, средство разработки типа Visual Basic или Delphi либо даже COM-объекты для доступа к данным, применяющие интерфейсы OLE DB. Потребители могут обращаться к данным посредством Active. X Data Objects, представляющих собой высокоуровневый интерфейс к OLE DB, или применять OLE DB непосредственно, используя OLE DBпровайдер.
Объекты OLE DB Объектная модель OLE DB содержит четыре ключевых объекта: • Data. Source; • Session; • Command; • Rowset.
Объект Data. Source, применяемый потребителями данных для соединения с провайдером. Объект Session предоставляет контекст для транзакций, может генерировать наборы данных (rowsets) из источников данных, а также команды для запросов к источнику данных. Объект Session может выполнять роль фабрики классов для объектов Command и Rowset и объекта Transaction, применяемого для управления вложенными транзакциями. Объекты Command и Rowset могут быть использованы для создания или модификации таблиц и индексов.
Объект Command используется для выполнения команд, представляющих собой строки, передаваемые от потребителя данных объекту Data Source для выполнения. В большинстве случаев такая команда представляет собой SQL-предложение SELECT, однако в общем случае это может быть любое другое SQL-предложение (например, DDL-предложение).
Объект Rowset (набор данных) позволяет OLE DBпровайдеру данных представлять данные из источников данных в табличном формате, то есть в виде набора строк, содержащих одну или несколько колонок. Этот объект может быть результатом выполнения команды или может быть сгенерирован непосредственно провайдером данных, если провайдер не поддерживает команд. Все провайдеры данных <умеют> создавать наборы данных напрямую. Объект Rowset может быть также использован для обновления, добавления или удаления строк - это зависит от функциональности провайдера данных.
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.
Объектная модель ADO
Как объекты ADO используют OLD DB: • объект ADO Connection использует объекты OLE DB Data. Source и Session. • объект ADO Command использует объект OLE DB Command и интерфейс ICommand. Например, его метод Execute вызывает непосредственно одноименный метод объекта OLE DB Command, его свойство Command. Text доступно с помощью методов Get. Command. Text и Set. Command. Text интерфейса ICommand. Text. • объект ADO Recordset использует объект OLE DB Rowset. Он применяет интерфейсы IRowset, IRowset. Locate и IRowset. Info для реализации большинства методов, свойств и коллекций. Объект Field использует интерфейс IColumns. Info.
ПРИМЕР (VB): Dim cnn ' Создать соединение до базы данных Set cnn = Create. Object("ADODB. Connection") ' Открываем при помощи connection string, ' определяющей тип провайдера и путь до базы cnn. Open "Provider=Microsoft. Jet. OLEDB. 4. 0; " & _ "Data Source=c: goodsdata. mdb; " Dim rs Set rs = Create. Object("ADODB. Record. Set") rs. Open "SELECT * FROM Goods", cnn ‘rs = cnn. Execute "SELECT * FROM Goods“ – использование ADODB. Connection как фабрики классов ' цикл по рекордсету, производящий какие-то действия rs. Close cnn. Close
ADO. NET является преемником Microsoft Active. X Data Objects (ADO). Это W 3 C стандартизированная модель программирования для создания распределенных прикладных программ, нацеленных на совместное использование данных. Подобно ADO, ADO. NET является программным интерфейсом (API) для прикладного программного обеспечения, позволяющим обращаться к данным и другой информации. ADO. NET поддерживает такие современные требования, как создание клиентского интерфейса к базам данных на фронтальном уровне и на уровне промежуточного слоя объектов клиентских приложений, инструментальных средств, языков программирования или Internet браузера.
ADO. NET, подобно ADO, обеспечивает интерфейс доступа к OLE DB - совместимым источникам данных, таким, как Microsoft SQL Server 2000. Прикладные программы, позволяющие пользователям совместно использовать данные, могут использовать ADO. NET для подключения к источниками данных, а также для поиска, управления, и модификации этих данных. Также, прикладные программы (далее ПП) могут использовать OLE DB для управления данными, хранящимися в не относительных форматах, таких, как Microsoft Excel. В решениях, требующих офлайнового или удаленного доступа к данным, ADO. NET использует XML для обмена данными между программами или с Веб страницами.
Термин ADO. NET Резидентное Использует объект Record. Set, Использует объект Data. Set, представление который напоминает отдельную который может содержать данных в памяти таблицу. одну или более таблиц, представленных объектами Data. Table Инспектировани е данных Последовательное сканирование данных Record. Set Использует навигационную парадигму для непоследовательного доступа к строкам в таблице. Следует за отношениями, чтобы передвигаться от строк в одной таблице к соответствующим строкам в другой таблице. Отношения между множеством таблицами Требует, чтобы запрос JOIN транслировал данные из объединяемых таблиц базы данных в отдельную, результирующую таблицу. Поддерживает объект Data. Relation, чтобы сопоставить строки в одном объекте Data. Table со строками в другом объекте Data. Table.
Офлайновый доступ Использует Record. Set, для которого типична поддержка соединения, представленная объектом Connection. Вы подключаетесь к базе данных посредством запросов к OLE DB провайдеру. Программируемость Использует объект Connection, чтобы передать команды, адресуемые источникам данных, лежащим в основе конструкции данных. Подключается к базе данных посредством стандартизированных запросов к объекту Data. Set. Command, который подключается к OLE DB провайдеру (а иногда, непосредственно к API, обеспечивающемуся СУБД). Использует строгий формат программирования характеристик XML. Данные включают в себя собственные описатели, поэтому, имена элементов кода отражают реальные проблемы, решаемые кодом. Лежащие в основе конструкций данных типы таблиц, строки, и таблицы, делают код проще для понимания и написания.
Совместное использование офлайновый данных между уровнями или компонентами Использует COM для Передает Data. Set с XML передачи Record. Set в файлом. Формат XML не офлайне. имеет никаких Поддерживаются только ограничений на типы те типы данных, которыми данных и не требует располагает стандарт COM. никаких преобразований Требуется преобразование типов, которое отнимает системные ресурсы. Передача данных через межсетевые экраны (firewalls) Проблематично, потому что межсетевые экраны обычно конфигурируются так, чтобы предотвратить запросы системного уровня, которые используются в COM. Поддерживается, потому что объекты Data. Set, используемые ADO. NET, передают XML, разработанный на основе HTML, который может проходить через межсетевые экраны.
Масштабируемость Блокировки баз данных и длительные, активные подключения к базам данных могут стать причиной коллизий и сильно ограничивать ресурсы базы данных. Офлайновый доступ к базам данных без накладывания длительных блокировок или применения длительных, активных подключений к базе данных, существенно разгружает ресурсы базы данных.
public void Read. My. Data(string my. Conn. String) { string my. Select. Query = "SELECT Order. ID, Customer FROM Orders"; Sql. Connection my. Connection = new Sql. Connection(my. Conn. String); Sql. Command my. Command = new Sql. Command(my. Select. Query, my. Connection); my. Connection. Open(); Sql. Data. Reader my. Reader = my. Command. Execute. Reader(); try { while (my. Reader. Read()) { Console. Write. Line(my. Reader. Get. Int 32(0) + ", " + my. Reader. Get. String(1)); } } finally { // always call Close when done reading. my. Reader. Close(); // always call Close when done reading. my. Connection. Close(); } }
Примеры работа с реляционными источниками данных через ADO и ODBC в веб-приложениях. Web-server MDAC request browser Db server response Access, text file. .
Web-server MDAC request browser Db server response Access, text file. .
Существуют 2 типа организации запроса к серверу (request) • Get – данные пересылаются в строке запроса. • Post – данные пересылаются в теле запроса. Для ввода данных используются html-формы, позволяющие работать с полями следующих основных типов • Textarea • Hidden • Select (pulldown) • Checkbox
Формы и поля ввода описываются с помощью основного элемента html – тэгов. <form action=“” method=“post”> … <input type=text name=t 1 value=“hello”> <input type=submit> </form>
Работать с формами можно через клиентские скрипты Они не предполагают отсылки запроса к веб-серверу и выполняются непосредственно браузером. Серверные скрипты выполняются на веб-сервере и формируют response, отдаваемый браузером, фактически любой серверный скрипт генерирует html динамически. Исторически первая технология серверных скриптов – CGI генерировала response полностью в программе, написанной, как правило на C или на Perl.
В середине 90 х годов появились так называемые серверные страницы – response не генерируется полностью, серверный код выделяется специальными тэгами и «встраивается» в html. Наиболее успешные примеры серверных страниц: • PHP (open source) • JSP (sun) • ASP (microsoft)
ASP и JSP не являются новыми языками, это не более чем технологии, php имеет собственный C-подобный язык. Для написания JSP используется Java ASP по умолчанию поддерживает 2 языка – VBScript и Java. Script, однако существует возможность расширения этого списка.
5 основных объектов ASP Request – получение информации о запросе Response – управление выводом веб-сервера Session – работа с пользовательской сессией Application – работа с данными, актуальными для всех сессий Server – объект, в частности позволяющий создавать экземпляры com-объектов (Server. Create. Object(“[object name]”) ) ASP-приложение это потребитель com-объектов, поскольку в саму технологию заложено очень мало функциональности, программист может оперировать лишь с 5 ю перечисленными объектами и писать условия и циклы на Java. Script или VBScript
Lektsia_16_Mekhanizmy_dostupa_k_dannym.ppt