alan_beaulieu-learning_sql-ru (865932), страница 51
Текст из файла (страница 51)
D.1 языки программирования являются языками общего назначения. И всем им для доступа к БД нужен дополнительный драйвер или набор библиотек. Однако есть другие языки, разработанные специально для работы с БД и включающие определенныекоманды SQL (как минимум select, update, insert, delete, start transaction, commit и rollback).
В табл. D.2 приведены некоторые из этих языков и описаны среды, в которых они работают.293Дополнительные источникиТаблица D.2. Специализированные языки программирования баз данныхЯзык программирования РазработчикСреда выполненияPL/SQLOracleOracle DatabaseOracle Application ServerTransactSQLMicrosoftSQL ServerSQL2003 Stored Procedure MySQLLanguageMySQL Server (версии 5.0 и выше)PowerBuilderSybaseSybase EAServerКлиенты для Windows и UNIXPowerHouse 4GLCognosPowerHouse Application ServerProgress 4GLProgress Software OpenEdge DatabaseOpenEdge Application ServerПоследние три языка в табл. D.2 – это языки общего назначения, предназначенные для создания бизнесприложений, а первые три, предоставляемые тремя серверами БД, рассматриваемыми в данной книге,позволяют формировать модули следующих типов:Хранимые процедурыИменованные подпрограммы, принимающие параметры.Хранимые функцииИменованные функции, принимающие параметры и возвращающие значение.ТриггерыМодули, автоматически запускаемые сервером БД при определенном событии, например удалении данных из той или иной таблицы.Триггеры выполняются только сервером БД, а хранимые процедурыи функции выполняются в рамках сеанса БД точно так же, как команды SQL.
Поскольку хранимые функции возвращают значение, они могут вызываться из SQLвыражений во всех случаях, где может использоваться скалярный подзапрос. Для работы с Oracle Database, SQLServer или MySQL необходимо обязательно ознакомиться с одной изследующих книг:Мэйдин Фишер (Maydene Fisher) и др. «JDBC API Tutorial and Reference», Third Edition (Учебное пособие и справочник по JDBC API,3е издание), AddisonWesley, 2003.Билл Гамильтон (Bill Hamilton) «ADO.NET Cookbook» O’Reilly,2003.11Билл Гамильтон «ADO.NET. Сборник рецептов для профессионалов», СПб:Питер, 2004.294Приложение DАллигатор Декарт (Alligator Descartes), Тим Банс (Tim Bunce) «Programming the Perl DBI», O’Reilly, 2000.1Стивен Фейерштейн (Steven Feuerstein) и Билл Прибыл (Bill Pribyl)«Oracle PL/SQL Programming», Third Edition, O’Reilly, 2002.2Кен Хендерсон (Ken Henderson) «The Guru’s Guide to TransactSQL», AddisonWesley, 2000.3Также есть множество учебных курсов по программированию БД.
Ихможно найти в одном из следующих учебных центров:• Oracle University (http://education.oracle.com)• Learning Tree International (http://www.learningtree.com)• Microsoft Learning (learning)• MySQL Training (training)Проектирование БДЕсли вы новичок в SQL (а я предполагаю, что это так), то скорее всегобудете работать с имеющимися БД, по крайней мере, поначалу. Однако если вы также отвечаете за разработку БД для своего проекта, рекомендую не просто ознакомиться с кратким обзором проектированияи нормализации БД, приведенным в главе 2, а рассмотреть этот вопросболее внимательно.
На самом деле есть несколько разновидностей моделей БД, каждая из которых имеет специальное назначение:Логические моделиОбычно это представление высокого уровня детализации организации и среды, в которой осуществляется деятельность.Функциональные моделиОбычно это представление среднего уровня детализации отдельногосегмента деятельности организации; как правило, используется в дополнение к спецификации проекта.Физические моделиОбычно используются для формирования БД.Администратора БД, возможно, интересуют только физические модели, тогда как логические модели часто являются сферой интересов корпоративных архитекторов (если организации посчастливилось иметькоманду разработки корпоративной архитекторы).123Аллигатор Декарт и Тим Банс «Программирование на Perl DBI», СимволПлюс, 2000.С. Фейерштейн, Б.
Прибыл «Oracle PL/SQL для профессионалов», Питер,2003.Кен Хендерсон «Профессиональное руководство по TransactSQL», Питер,2005.Дополнительные источники295Как бы то ни было, прежде чем браться за выражения create table, необходимо серьезно подумать об использовании инструмента моделирования для построения визуальных моделей. При создании моделей БДобычно используется одна из двух методик:Моделирование сущностей и связей (Entityrelationship, ER)Используется практически исключительно для моделирования БД.Моделирование с использованием Унифицированного языка моделирования (Unified Modeling Language, UML)Универсальный инструмент моделирования для разработки объектноориентированного программного обеспечения.Если БД проектируется как часть проекта по разработке объектноориентированного программного обеспечения, команда разработки можетприобрести инструмент моделирования UML для объектного моделирования, чтобы использовать его и для проектирования БД.
Если вывольны в выборе инструментария, более полезным может оказатьсяодин из следующих ERинструментов, способных формировать полнофункциональные схемы БД (включая таблицы, ограничения, индексы, представления и т. д.) по одному нажатию клавиши:•ERwin Data Modeler (ERмоделирование)•Computer Associates (http://www.ca.com)•ER/Studio (ERмоделирование)•Embarcadero Technologies (http://www.embarcadero.com)•Rational Rose (UMLмоделирование)•IBM (http://www.ibm.com)•Visio (и ER моделирование, и UMLмоделирование)•Microsoft (http://www.microsoft.com)Ниже приведены две хорошие книги по проектированию БД:Майкл Дж.
Хернандес (Michael J. Hernandez) «Database Design forMere Mortals: A Handson Guide to Relational Database Design», Second Edition (Проектирование баз данных для простых смертных.Практическое руководство по проектированию реляционных базданных), AddisonWesley, 2003.Эрик Дж. Нейбург (Eric J. Naiburg) и Роберт А. Максимчук (RobertA. Maksimchuk) «UML for Database Design», AddisonWesley, 2001.11Эрик Дж. Нейбург и Роберт А.
Максимчук «Проектирование баз данныхс помощью UML», Вильямс, 2002.296Приложение DНастройка баз данныхНастройка БД – это, по сути, искусство и наука выявления и устранения узких мест производительности в:• Приложениях, организующих доступ к БД (SQL, блокировки, транзакции)• Схемах БД (проектирование, индексация, сегментирование таблиц)• Серверах БД (конфигурация серверов, журналирование, управление соединением)• Дисковых массивах, на которых хранятся файлы БД (конфигурации RAID, определение «горячих» точек)• Компьютерах, на которых располагаются серверы БД (конфигурация операционной системы, файловые системы)• Сетях, распространяющих данные на/с серверов БДВыявление и устранение узких мест в оборудовании и программномобеспечении такой широкой номенклатуры может показаться пугающесложной задачей, но большая часть работы обычно сосредоточена насхеме БД и языке SQL, который используется приложениями для доступа к БД.
Это никак не преуменьшает значимости конфигурированияоперационной системы, установки и конфигурирования сервера БД,а также компоновки ресурсов данных в дисковом массиве, но схемы БДи используемый для доступа к ним SQL – гораздо более динамичныекомпоненты системы, т. е. чреваты большим количеством проблем.Будь вы штатный специалист по вопросам производительности, программист БД или администратор БД, в круг вашей основной деятельности по настройке войдут:• Просмотр плана выполнения SQLвыражений для поиска неэффективных моментов• Разработка стратегий индексации для обеспечения эффективногодоступа• Доработка или переписывание SQLвыражений с целью повлиятьна выбор плана выполненияКак упоминалось в главе 3, каждая БД включает компонент под названием оптимизатор запросов, задачей которого является вычисление SQLвыражений и выбор эффективного пути доступа к информационным ресурсам для достижения желаемых результатов.
Результатработы оптимизатора – план выполнения, показывающий, какие ресурсы в каком порядке используются. Каждая из трех БД, обсуждаемых в книге, включает инструменты получения и просмотра планавыполнения SQLвыражения. Вам понадобится научиться генерировать и расшифровывать планы выполнения для своей БД.Просто чтобы дать вам понять, о чем идет речь, привожу созданныйMySQL план выполнения для запроса, организующего доступ к двумтаблицам:Дополнительные источники297mysql> EXPLAIN SELECT c.fed_id, a.account_id, a.avail_balance> FROM account a INNER JOIN customer c> ON a.cust_id = c.cust_id> WHERE c.cust_type_cd = 'I' \G*************************** 1. row ***************************id: 1select_type: SIMPLEtable: ctype: ALLpossible_keys: PRIMARYkey: NULLkey_len: NULLref: NULLrows: 13Extra: Using where*************************** 2. row ***************************id: 1select_type: SIMPLEtable: atype: refpossible_keys: fk_a_cust_idkey: fk_a_cust_idkey_len: 4ref: bank.c.cust_idrows: 1Extra:2 rows in set (0.00 sec)Чтобы увидеть план выполнения этого запроса, я просто поставил перед выражением select ключевое слово explain (объяснить), т.
е. серверполучил команду показать план выполнения, а не результирующийнабор запроса. План включает два этапа. Первый показывает, как будет осуществляться доступ к таблице customer (выполняется доступ ковсем строкам, поскольку столбец cust_type_cd не имеет индекса). Второй показывает, как будет организован доступ к таблице account (посредством внешнего ключа fk_a_cust_id). Формирование и расшифровка планов выполнения не является предметом рассмотрения для вводной книги по SQL, поэтому в конце данного раздела приведены имеющиеся источники (книги и учебные курсы).