авторефераты диссертаций БЕСПЛАТНАЯ  БИБЛИОТЕКА

АВТОРЕФЕРАТЫ КАНДИДАТСКИХ, ДОКТОРСКИХ ДИССЕРТАЦИЙ

<< ГЛАВНАЯ
АГРОИНЖЕНЕРИЯ
АСТРОНОМИЯ
БЕЗОПАСНОСТЬ
БИОЛОГИЯ
ЗЕМЛЯ
ИНФОРМАТИКА
ИСКУССТВОВЕДЕНИЕ
ИСТОРИЯ
КУЛЬТУРОЛОГИЯ
МАШИНОСТРОЕНИЕ
МЕДИЦИНА
МЕТАЛЛУРГИЯ
МЕХАНИКА
ПЕДАГОГИКА
ПОЛИТИКА
ПРИБОРОСТРОЕНИЕ
ПРОДОВОЛЬСТВИЕ
ПСИХОЛОГИЯ
РАДИОТЕХНИКА
СЕЛЬСКОЕ ХОЗЯЙСТВО
СОЦИОЛОГИЯ
СТРОИТЕЛЬСТВО
ТЕХНИЧЕСКИЕ НАУКИ
ТРАНСПОРТ
ФАРМАЦЕВТИКА
ФИЗИКА
ФИЗИОЛОГИЯ
ФИЛОЛОГИЯ
ФИЛОСОФИЯ
ХИМИЯ
ЭКОНОМИКА
ЭЛЕКТРОТЕХНИКА
ЭНЕРГЕТИКА
ЮРИСПРУДЕНЦИЯ
ЯЗЫКОЗНАНИЕ
РАЗНОЕ
КОНТАКТЫ

Астрологический Прогноз на год: карьера, финансы, личная жизнь


Джон Гудсон, Роб Стюард

Санкт-Петербург

«БХВ-Петербург»

2013

УДК 004.65

ББК 32.973.26-018.2

Г93

Гудсон, Дж.

Г93 Практическое руководство по доступу к данным: Пер. с англ. / Дж. Гудсон,

Р. Стюард. — СПб.: БХВ-Петербург, 2013. — 304 с.: ил.

ISBN 978-5-9775-0921-3

Показано, насколько значительно промежуточный слой программного обеспечения может влиять на производительность приложений. Обсуждаются принципы и практи ческие методы разработки кода, применимые ко всем системам баз данных и API интерфейсам. Приводятся примеры API-интерфейсов для ODBC, JDBC и ADO.NET, а также примеры для баз данных DB2, Microsoft SQL Server, MySQL, Oracle и Sybase.

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

Для программных архитекторов, системных разработчиков и разработчиков приложений баз данных УДК 004. ББК 32.973.26-018. Группа подготовки издания:

Екатерина Кондукова Главный редактор Екатерина Капалыгина Зав. редакцией Сергея Таранушенко Перевод с английского Анна Кузьмина Редактор Ольги Сергиенко Компьютерная верстка Зинаида Дмитриева Корректор Марины Дамбиевой Оформление обложки Authorized translation from the English language edition, entitled The Data Access handbook, ISBN 978-0-137-14393-1, by Goodson J., Steward R., published by Pearson Education, Inc., Copyright © 2008 by Pearson Education. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without the prior permission from the publisher. RUSSIAN language edition published by BHV St. Petersburg, Copyright © 2013.

Pearson and the authors of the original edition hold no responsibility for any aspect of DVD and software.

Авторизованный перевод английской редакции The Data Access handbook, изданной Pearson Education, Inc., Copyright © 2008 by Pearson Education. Все права защищены. Никакая часть настоящей книги не может быть воспроизведена или передана в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая фотокопирование, записана на магнитный носитель, размещена в любых базах данных и информационно-поисковых системах без предварительного письменного разрешения издателя.

Перевод на русский язык "БХВ-Петербург" © 2013.

Pearson и авторы оригинального издания не несут никакой ответственности ни по каким вопросам, связанным с DVD и программным обеспечением.

Подписано в печать 04.04.13.

Формат 70100 /16. Печать офсетная. Усл. печ. л. 24,51.

Тираж 1000 экз. Заказ № "БХВ-Петербург", 191036, Санкт-Петербург, Гончарная ул., 20.

Первая Академическая типография "Наука" 199034, Санкт-Петербург, 9 линия, 12/ ISBN 978-0-137-14393-1 (англ.) © 2008 Pearson Education, Inc.

© Перевод на русский язык "БХВ-Петербург", ISBN 978-5-9775-0921-3 (рус.) Оглавление Введение........................................................................................................................................ Благодарности.............................................................................................................................. Об авторах.................................................................................................................................... Глава 1. Производительность уже не та, что была раньше................................................ Как обстоят дела сегодня?............................................................................................................................. Сеть......................................................................................................................................................... Драйвер баз данных............................................................................................................................... Среда...................................................................................................................................................... Прикладная программа баз данных..................................................................................................... О цели этой книги.......................................................................................................................................... Глава 2. Стратегии проектирования производительных приложений............................ Особенности разработки приложений......................................................................................................... Подключения к базам данных.............................................................................................................. Сведения о подключениях.......................................................................................................... Почему подключения затратны по производительности......................................................... Использование пула подключений............................................................................................ Анализ проблемы: проектирование подключений................................................................... Управление транзакциями.................................................................................................................... Управление фиксированием транзакций................................................................................... Уровни изоляции......................................................................................................................... Локальные и распределенные транзакции................................................................................. Инструкции языка SQL......................................................................................................................... Чем отличаются простые инструкции от подготовленных...................................................... Пулы инструкций........................................................................................................................ Выборка данных.................................................................................................................................... Основные сведения о процессе выборки данных драйвером.................................................. Выборка длинных данных.......................................................................................................... Ограничение объема возвращаемых данных............................................................................ Выбор правильного типа данных............................................................................................... Использование прокручиваемых курсоров............................................................................... Повышенная безопасность................................................................................................................... Сетевая аутентификация............................................................................................................. Шифрование данных в сети........................................................................................................ Статический и динамический SQL............................................................................................................... Сеть................................................................................................................................................................. Драйвер базы данных..................................................................................................................................... Знай свою систему баз данных...................................................................................................................... Использование инструментов объектно-реляционного отображения....................................................... Резюме............................................................................................................................................................. Глава 3. Важность промежуточного программного обеспечения баз данных................. Что такое промежуточное ПО БД................................................................................................................. Влияние промежуточного ПО БД на производительность приложения................................................... Драйверы баз данных..................................................................................................................................... Функции драйвера баз данных............................................................................................................. 6 Оглавление Архитектура драйверов баз данных..................................................................................................... Мостовая архитектура................................................................................................................. Архитектура на основе клиента базы данных........................................................................... Архитектура протокола базы данных уровня соединения....................................................... Архитектура независимого протокола....................................................................................... Параметры настройки производительности времени исполнения.................................................... Выборка больших объектов........................................................................................................ Понижение уровня сетевых операций....................................................................................... Выполнение операций над большими объемами данных........................................................ Настройка драйверов баз данных и поставщиков данных................................................................. Драйверы ODBC.......................................................................................................................... Драйверы JDBC........................................................................................................................... Поставщики данных ADO.NET.................................................................................................. Резюме............................................................................................................................................................. Глава 4. Среда: настройка на производительность.............................................................. Среда выполнения (Java и.NET).................................................................................................................. Машина JVM......................................................................................................................................... Сборка мусора............................................................................................................................. Клиентский и серверный режимы.............................................................................................. Среда.NET CLR.................................................................................................................................... Операционная система................................................................................................................................... Сетевое окружение......................................................................................................................................... Пакеты протокола базы данных........................................................................................................... Сетевые пакеты...................................................................................................................................... Настройка размера пакетов................................................................................................................ Анализ сетевого пути.......................................................................................................................... Сокращение числа сетевых скачков и конфликтов.......................................................................... Как избежать фрагментации сетевых пакетов.................................................................................. Основные сведения о блоке MTU............................................................................................ Сети VPN повышают уровень фрагментации пакетов........................................................... Локальные сети по сравнению с глобальными....................................................................... Выявление и устранение фрагментации сетевых пакетов...................................................... Повышение пропускной способности сети....................................................................................... Аппаратное обеспечение............................................................................................................................. Память.................................................................................................................................................. Обнаружение нехватки памяти................................................................................................ Настройка приложения и драйвера базы данных для минимизации использования памяти................................................................................





......................................................... Дисковая система................................................................................................................................ Выявление проблем доступа к диску....................................................................................... Настройка приложения для избежания ненужных обращений к диску................................ Центральный процессор..................................................................................................................... Выявление проблем производительности, связанных с центральным процессором........... Настройка приложения и драйвера базы данных на минимизирование использования процессорных ресурсов............................................................................................................. Сетевая плата....................................................................................................................................... Выявление сетевых проблем.................................................................................................... Настройка приложения и драйвера базы данных на эффективное использование сетевых ресурсов....................................................................................................................... Виртуализация..................................................................................................................................... Резюме........................................................................................................................................................... Глава 5. ODBC-приложения: создание качественного кода............................................. Управление подключениями....................................................................................................................... Эффективное подключение................................................................................................................ Оглавление Использование пула подключений.................................................................................................... Установка одного подключения по мере необходимости................................................................ Использование одного подключения для нескольких инструкций................................................. Эффективное получение информации о базе данных и драйвере................................................... Управление транзакциями........................................................................................................................... Управление фиксированием транзакций........................................................................................... Выбор правильной транзакционной модели..................................................................................... Выполнение инструкций SQL..................................................................................................................... Использование хранимых процедур.................................................................................................. Чем отличаются простые инструкции от подготовленных.............................................................. Использование массивов параметров................................................................................................ Использование библиотеки курсоров................................................................................................ Выборка данных........................................................................................................................................... Выборка длинных данных.................................................................................................................. Ограничение объема выбираемых данных........................................................................................ Использование привязанных столбцов.............................................................................................. Использование функции SQLExtendedFetch() вместо функции SQLFetch()................................... Определение количества строк в результирующем наборе............................................................. Выбор правильного типа данных....................................................................................................... Обновление данных..................................................................................................................................... Использование функции SQLSpecialColumns() для оптимизации обновлений и удалений.......... Использование функций каталога............................................................................................................... Сведение к минимуму использования функций каталога................................................................ Как избежать использования шаблонов поиска................................................................................ Использование пустого запроса для определения характеристик таблицы................................... Резюме........................................................................................................................................................... Глава 6. JDBC-приложения: создание качественного кода.............................................. Управление подключениями....................................................................................................................... Эффективное подключение................................................................................................................ Использование пула подключений.................................................................................................... Установка одного подключения по мере необходимости................................................................ Использование одного подключения для нескольких инструкций................................................. Эффективное отключение.................................................................................................................. Эффективное получение информации о базе данных и драйвере................................................... Управление транзакциями........................................................................................................................... Управление фиксированием транзакций........................................................................................... Выбор правильной транзакционной модели..................................................................................... Выполнение инструкций SQL..................................................................................................................... Использование хранимых процедур.................................................................................................. Чем отличаются простые инструкции от подготовленных.............................................................. Использование пакетов и подготовленных инструкций.................................................................. Использование методов getXXX для получения данных из результирующего набора.................. Получение автоматически создаваемых ключей.............................................................................. Выборка данных........................................................................................................................................... Выборка длинных данных.................................................................................................................. Ограничение объема выбираемых данных........................................................................................ Определение количества строк в результирующем наборе............................................................. Выбор правильного типа данных....................................................................................................... Выбор правильного курсора............................................................................................................... Однонаправленный курсор....................................................................................................... Нечувствительные курсоры...................................................................................................... Чувствительные курсоры.......................................................................................................... Обновление данных..................................................................................................................................... Использование позиционированных обновлений, вставок и удалений (методы updateXXX)....... Использование метода getBestRowIdentifier() для оптимизации обновлений и удалений............. 8 Оглавление Использование методов метаданных базы данных................................................................................... Сведение к минимуму использования методов метаданных базы данных..................................... Как избежать использования шаблонов поиска................................................................................ Использование пустого запроса для определения характеристик таблицы................................... Резюме........................................................................................................................................................... Глава 7. Приложения.NET: создание качественного кода............................................... Управление подключениями....................................................................................................................... Эффективное подключение................................................................................................................ Использование пула подключений.................................................................................................... Установка одного подключения по мере необходимости................................................................ Эффективное отключение.................................................................................................................. Эффективное получение информации о базе данных и поставщике данных................................. Управление транзакциями........................................................................................................................... Управление фиксированием транзакций........................................................................................... Выбор правильной транзакционной модели..................................................................................... Выполнение инструкций SQL..................................................................................................................... Выполнение инструкций SQL, не выбирающих или выбирающих небольшие объемы данных.. Использование метода Command.Prepare()....................................................................................... Использование массивов параметров и пакетов по сравнению с использованием подготовленных инструкций.............................................................................................................. Использование возможности массовой загрузки.............................................................................. Использование чистых управляемых поставщиков данных............................................................ Выбор объектов и методов.NET................................................................................................................ Избегаем объекта CommandBuilder................................................................................................... Выбор между объектами DataReader и DataSet............................................................................... Использование методов GetXXX для получения данных из объекта DataReader.......................... Выборка данных........................................................................................................................................... Выборка длинных данных.................................................................................................................. Ограничение объема выбираемых данных........................................................................................ Выбор правильного типа данных....................................................................................................... Обновление данных..................................................................................................................................... Резюме........................................................................................................................................................... Глава 8. Пулы подключений и пулы инструкций.............................................................. Модель пулов подключений для JDBC...................................................................................................... Настройка пулов подключений.......................................................................................................... Рекомендации по настройке............................................................................................................... Модель пулов подключений для ODBC..................................................................................................... Пулы подключений, соответствующие спецификации ODBC........................................................ Настройка пулов подключений.......................................................................................................... Рекомендации по настройке............................................................................................................... Модель пулов подключений для ADO.NET...................................................................................

............ Настройка пулов подключений.......................................................................................................... Рекомендации по настройке............................................................................................................... Использование повторной аутентификации с пулами подключений...................................................... Настройка пулов подключений с повторной аутентификацией в среде JDBC.............................. Использование пулов инструкций.............................................................................................................. Использование пулов инструкций с пулами подключений.............................................................. Рекомендации по настройке............................................................................................................... Резюме: большая картина............................................................................................................................ Глава 9. Разработка качественных эталонных тестов...................................................... Разработка эталонного теста....................................................................................................................... Определение целей эталонного теста................................................................................................ Оглавление Воспроизведение промышленной среды........................................................................................... Проектирование тестовой среды.............................................................................................. Использование реалистичных тестовых данных.................................................................... Изолирование тестовой среды............................................................................................................ Воспроизведение рабочей нагрузки................................................................................................... Оценка правильных задач................................................................................................................... Выполнение оценки в течение достаточного времени..................................................................... Подготовка базы данных.................................................................................................................... Выполнение по одному изменению за раз........................................................................................ Оценка других факторов..................................................................................................................... Пример эталонного теста............................................................................................................................ Создание тестовых данных................................................................................................................. Создание эталонного теста................................................................................................................. Резюме........................................................................................................................................................... Глава 10. Диагностика проблем производительности....................................................... С чего начать?.............................................................................................................................................. Изменения в установке приложения базы данных.................................................................................... Приложение базы данных........................................................................................................................... Драйвер базы данных................................................................................................................................... Параметры настройки производительности времени исполнения.................................................. Архитектура драйвера......................................................................................................................... Среда............................................................................................................................................................. Среда выполнения (Java и.NET)........................................................................................................ Среды JVM................................................................................................................................. Среда.NET CLR........................................................................................................................ Операционная система........................................................................................................................ Сетевое окружение.............................................................................................................................. Аппаратное обеспечение..................................................................................................................... Память........................................................................................................................................ Дисковая система...................................................................................................................... Центральный процессор........................................................................................................... Сетевой адаптер......................................................................................................................... Учебные примеры........................................................................................................................................ Учебный пример 1............................................................................................................................... Учебный пример 2............................................................................................................................... Учебный пример 3............................................................................................................................... Учебный пример 4............................................................................................................................... Учебный пример 5............................................................................................................................... Учебный пример 6............................................................................................................................... Учебный пример 7............................................................................................................................... Учебный пример 8............................................................................................................................... Резюме........................................................................................................................................................... Глава 11. Доступ к данным в сервис-ориентированных архитектурных средах.......... Что такое сервис-ориентированная архитектура?..................................................................................... Рекомендации по доступу к данным в средах SOA................................................................................... Привлечение экспертов в области работы с данными...................................................................... Разделение доступа к данным и бизнес-логики................................................................................ Разработка и настройка с прицелом на производительность.......................................................... Интеграция данных............................................................................................................................. Резюме........................................................................................................................................................... Глоссарий.................................................................................................................................... Предметный указатель............................................................................................................. Введение Земля плоская. В течение тысячелетий все математики, исследователи и философы мира знали, что это так. В VI столетии несколько греческих философов нашли доказательства, что Земля круглая. Тем не менее, люди еще в течение нескольких веков игнорировали этот, ныне неоспоримый факт.

Все проблемы с производительностью и масштабируемостью приложений можно решить путем настройки базы данных. Спросите экспертов по базам данных и они скажут вам это. Они даже смогут убедить вас потратить от нескольких тысяч до нескольких миллионов долларов в год на тонкую настройку программного обес печения базы данных, чтобы решить проблемы производительности. Если же такая настройка не решает проблему, то они скажут вам, что либо система управления базой данных, либо аппаратное обеспечение базы данных, либо и то и другое вме сте взятое, просто уже работает на пределе своих возможностей. Однако, если от всего времени, которое требуется для обработки запроса к базе данных, лишь только 5—25% затрачивается на работу собственно в самой базе данных, имеет ли смысл утверждение, что узкие места в производительности возникают оттого, что эти системы работают "на пределе возможностей"? Если бизнес-аналитик ожидает исполнения запроса к базе данных в течение10 секунд, и из этих 10 секунд только полсекунды тратится на обработку в базе данных, есть ли необходимость тратить время и деньги, пытаясь вычислить, как сократить эти полсекунды? Или, может быть, разумнее попытаться выяснить, как уменьшить другие девять с половиной секунд?

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

Введение Путь к написанию этой книги начинался по-разному для Джона и Роба, но закон чился одинаково для них обоих.

Джон Гудсон (John Goodson): "Несколько лет тому назад я делал доклад на конфе ренции в компании IBM, посвященный улучшению производительности JDBC приложений. После доклада ко мне подошел ИТ-директор и спросил: “Где можно получить дополнительную информацию по этому вопросу? Такую информацию нигде невозможно достать”. Я поразмыслил над этим секунду и сказал ему, что, по сути, такой информации нет ни в каком конкретном месте, так как она находится в головах нескольких людей, разбросанных по всему миру. После этого случая было много других ситуаций, когда ИТ-директор за ИТ-директором говорили мне:

“Я никогда не знал, что драйвер базы данных может играть такую значительную роль” или “Я всегда думал, что причина проблем с производительностью приложе ний кроется в базе данных”. Все технические статьи, написанные нами на эту тему, пользовались большим спросом, а все наши презентации по ней собирали огром ную аудиторию. Мы написали эту книгу потому, что настало время развеять мифы о том, что причина проблем производительности и масштабируемости кроется ис ключительно в базе данных. Представленные в этой книге рекомендации, советы и методы улучшения производительности должны быть доступными всем".

Роб Стюард (Rob Steward): "Я никогда не думал, что когда-либо напишу книгу.

Однажды я спросил одного своего приятеля, который пишет книги по программно му обеспечению: действительно ли стоит это делать. Он категорически сказал мне, что есть только одна причина, по которой когда-либо следует писать книгу о про граммном обеспечении. Его слова были: “Пиши книгу только тогда, когда ты твер до убежден, что у тебя есть о чем рассказать”. Проработав на сегодняшний день 15 лет в области программного обеспечения промежуточного слоя для баз данных, я видел много коряво написанного кода доступа к данным и, соответственно, много слишком медленно работающих приложений, которые нуждались в серьезных ис правлениях. Я потратил буквально годы своей жизни, помогая людям решать про блемы, которые они создали вследствие отсутствия у них знаний о том, что в дей ствительности происходит на стороне клиента при отправке запроса к базе данных.

Мы с Джоном делали презентации на эту тему на многочисленных конференциях и написали целый ряд статей и технических докладов, стремясь помочь как можно большему числу разработчиков понять тонкости кода доступа к данным. Когда Джон обратился ко мне с предложением совместного написания этой книги, я сразу же согласился. Я немедленно загорелся идеей поделиться с другими, и в намного большем масштабе, теми знаниями, которыми мы годами делились на разных фо румах. Я надеюсь, что каждый читатель найдет в этой книге что-то, отличающее “слишком медленные” приложения от “стремительно быстрых”, и использует это в своих будущих разработках".

Авторы надеются, что этой книгой будут пользоваться архитекторы программного обеспечения, ИТ-персонал, администраторы баз данных и разработчики в своей повседневной работе, чтобы предвосхищать, обнаруживать и решать проблемы производительности в своих приложениях баз данных. Настройка базы данных яв ляется необходимым условием для достижения хорошей производительности и 12 Введение масштабируемости. Мы знаем, что это так. Но в среде с хорошо настроенной СУБД причинами большинства проблем производительности является следующее:

некачественно спроектированная архитектура доступа к данным;

некачественно оптимизированный исходный код доступа к данным;

низкопроизводительные или некачественно настроенные драйверы базы данных;

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

В этой книге рассматриваются все эти проблемы — Земля все-таки круглая.

Книга состоит из следующих глав.

Глава 1. "Производительность уже не та, что была раньше". Рассматривается эволюция программного обеспечения промежуточного слоя баз данных и опре деляются области, в которых могут возникать узкие места.

Глава 2. "Стратегии проектирования производительных приложений". Предос тавляются рекомендации для проектирования приложений баз данных и на стройки программного обеспечения промежуточного слоя баз данных, которое соединяет приложение с сервером баз данных, для оптимальной производитель ности.

Глава 3. "Важность промежуточного программного обеспечения баз данных".

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

Глава 4. "Среда: настройка на производительность". Описываются разные уровни среды, через которые проходят запросы данных и ответы на них, объяс няется влияние этих уровней на производительность, а также предоставляются рекомендации по предотвращению превращения среды в узкое место.

Глава 5. "ODBC-приложения: создание качественного кода". Описываются ка чественные методы написания кода, использование которых может обеспечить оптимальную производительность разрабатываемым ODBC-приложениям.

Глава 6. "JDBC-приложения: создание качественного кода". Описываются каче ственные методы написания кода, использование которых может обеспечить оп тимальную производительность разрабатываемым JDBC-приложениям.

Глава 7. ".NET-приложения: создание качественного кода". Описываются каче ственные методы написания кода, использование которых может обеспечить оп тимальную производительность разрабатываемым.NET-приложениям.

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

Введение Глава 9. "Разработка качественных эталонных тестов". Предоставляются ба зовые рекомендации по написанию эталонных тестов, которым многие разра ботчики не следуют, хотя определенно должны.

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

Глава 11. "Доступ к данным в сервис-ориентированных архитектурных средах".

Предоставляются конкретные основные принципы для обеспечения качествен ной работы приложений баз данных в средах SOA1.

Глоссарий. Содержит определения терминов, используемых в книге.

Service-Oriented Architecture.

Благодарности Эта книга — результат двухгодичной работы, ставший возможным благодаря уча стию, знаниям и поддержке многих людей. Для Джона Гудсона (John Goodson) и Роба Стюарда (Rob Steward) предмет промежуточного программного обеспечения баз данных — дело жизни, воздух, которым они дышат со времени окончания кол леджа. Шерил Конрад (Cheryl Conrad) и Сьюзен Кинг (Susan King) замечательно справились с переводом наших мыслей в слова. Progress Software Corporation пре доставила нам возможность написать эту книгу.

Многие люди предоставили в высшей степени подробную информацию, которую мы использовали в этой книге, за что мы им чрезвычайно благодарны. В частности, особая благодарность — Скоту Брэдли (Scott Bradley), Джону Хобсону (John Hobson), Джеффу Лайнбаху (Jeff Leinbach), Конни Чилдри (Connie Childrey), Стиву Виму (Steve Veum), Майку Спинаку (Mike Spinak), Мэтту Доменсичу (Matt Domencic), Джесси Дэвису (Jesse Davis) и Марку Ван Каппеллену (Marc Van Cappellen) за их трудоемкий взнос. Никакая книга не была бы завершенной без тщательной проверки рецензентами и другими участниками проекта. Эту работу проделали Ланс Андерсон (Lance Anderson), Эд Лонг (Ed Long), Говард Фосдик (Howard Fosdick), Ален Дули (Allen Dooley), Терри Мейсон (Terry Mason), Марк Биамонте (Mark Biamonte), Майк Джонсон (Mike Johnson), Чарльз Гоулд (Charles Gold), Ройс Вильмшен (Royce Willmschen), Эйприл Гарнед (April Harned), Джон Томсон (John Thompson), Чарли Лигра (Charlie Leagra), Сью Паркис (Sue Purkis), Кэтрин Спинак (Katherine Spinak), Дипак Пател (Dipak Patel), Джон Ди Лонга (John De Longa), Грег Стаско (Greg Stasko), Фил Прудич (Phil Prudich), Джаякханна Па симуту (Jayakhanna Pasimuthu), Брайан Геннинг (Brian Henning), Свен Кайперс (Sven Cuypers), Филипп Филиарт (Filip Filliaert), Ганс Ди Смет (Hans De Smet), Грег Вилхойт (Gregg Willhoit), Билл Фахи (Bill Fahey), Крис Уокер (Chris Walker), Бетси Кент (Betsy Kent) и Эд Крэбтри (Ed Crabtree).

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

Мы будем благодарны читателям, которые сообщат нам об ошибках в книге или предоставят свои замечания по ней по адресу performance-book@datadirect.com.

Об авторах Джон Гудсон (John Goodson). Являясь исполнительным директором компании DataDirect Technologies, Джон отвечает за повседневную работу, коммерческое раз витие, производство продукции и долгосрочную корпоративную стратегию.

Джон в течение семи лет занимал должность ведущего инженера в компании Data General, работая над ее реляционной базой данных — DG/SQL. В компании DataDirect Technologies, где он начал работать в 1992 г., Джон занимал ответствен ные должности в области исследований и разработки, технической поддержки и маркетинга. Джон является хорошо известным и почитаемым светилом индустрии и экспертом в области передачи данных. Свыше 15 лет он тесно сотрудничает с компаниями Sun Microsystems и Microsoft в разработке и развитии стандартов доступа к базам данных, включая такие технологии, как J2EE, JDBC,.NET, ODBC и ADO. Джон принимает участие в работе комитета ANSI NCITS H2, который от вечает за разработку стандарта SQL, и в группе X/Open (Open Group) SQL Access Group, которая отвечает за разработку интерфейсов уровня вызовов для реляцион ных баз данных. Он также принимает активное участие в работе комитетов по раз работке стандартов Java, включая группу JDBC Expert Group. Кроме этого, Джон написал множество статей и прочитал массу публичных лекций на темы, связанные с управлением данными. Джон также является обладателем патента в области рас пределенных транзакций для промежуточного обеспечения Java для Microsoft SQL Server.

Джон окончил Политехнический университет Виргинии и университет штата в Блэксбурге и является бакалавром наук в области вычислительной техники.

Роб Стюард (Rob Steward). Как вице-президент отдела исследований и разработок компании DataDirect Teсhnologies, Роб отвечает за разработку, стратегию и повсе дневный контроль за продуктами, обеспечивающими доступ к данным, включая клиентское ПО Shadow suite для интеграции с мэйнфреймами и семейство драйве ров баз данных и средств доступа к данным DataDirect Connect: Connect for ODBC, Virginia Polytechnic Institute and State University.

16 Об авторах Connect for JDBC и Connect for ADO.NET. В круг его дополнительных обязанно стей по разработке продуктов входят решения DataDirect Sequelink и DataDirect XQuery, а также управление подразделением заказных технических разработок компании DataDirect.

Роб посвятил свыше 15 лет разработке промежуточного программного обеспечения для доступа к базам данных, включая поставщиков данных.NET и OLE DB и драй веры ODBC и JDBC. Он занимал несколько управленческих и технических долж ностей в компании DataDirect Technologies и входит в состав различных комитетов по стандартам. Ранее он работал в качестве ведущего разработчика программного обеспечения в компании Marconi Commerce Systems Inc.

Роб окончил университет штата Северная Каролина в г. Роли и является бакалав ром наук в области вычислительной техники.

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

программное обеспечение, которое сопрягает прило жения с базами данных.

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

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

18 Глава Прежде чем рассматривать, почему промежуточное программное обеспечение баз данных (ПО БД) играет важную роль в обеспечении оптимальной производитель ности приложений баз данных, давайте рассмотрим, каким образом менялось со стояние дел с производительностью в течение последних десяти лет.

Десять-пятнадцать лет тому причиной 95% проблем с производительностью при ложений баз данных было программное обеспечение управления базами данных.

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

это была корпоративная информация.

Но состояние дел в области производительности стало изменяться, когда эксперты начали делиться своими знаниями, излагая их в книгах по настройке БД и на пуб личных семинарах. В настоящее время благодаря большим объемам информации по настройке БД, доступным в книгах и в Интернете, многолетнему опыту и значи тельно лучшим средствам мониторинга БД задача настройки баз данных стала ме нее трудной.

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

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

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

Рис. 1.2. Промежуточное программное обеспечение баз данных Для сетевой среды уровень промежуточного ПО БД содержал следующие компо ненты:

сеть;

клиентское ПО БД, такое как Oracle Nets;

библиотеки, загружаемые в адресное пространство приложения при его под ключении к базе данных, такие как SSL-библиотеки для сетевого шифрования.

В скором времени разработчики начали осознавать потребность в стандартах связ ности баз данных, которые могли бы предоставить общий API-интерфейс для дос тупа к множественным базам данных. В отсутствие общего API-интерфейса разра ботчикам приходилось выбирать среди множественных решений связности баз данных, т. к. каждый поставщик баз данных предоставлял собственный фирменный API-интерфейс. Например, чтобы разработать приложение, которое могло бы иметь доступ к базам данных Microsoft SQL Server, Oracle и IBM DB2, разработчику тре бовалось знать три разных API-интерфейсов баз данных: Microsoft Database Library (DBLIB), Oracle Call Interface (OCI) и IBM Client Application Enabler (CAE) (рис. 1.3).

Введение стандартов связности баз данных, таких как ODBC, решило эту проблему.

С введением стандартов связности баз данных к уровню промежуточного ПО БД были добавлены драйверы баз данных. Среди прочего, драйвер базы данных обра батывает стандартизированные вызовы API-функций, отправляет SQL-запросы в базу данных и возвращает результаты приложению. Тема драйверов баз данных и возможного влияния выбора драйвера на производительность приложений баз дан ных подробно рассматривается в главе 3.

КАК ОБСТОЯТ ДЕЛА СЕГОДНЯ?

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

Где же прячутся проблемы производительности сегодня? Для большинства прило жений баз данных проблемы производительности теперь находятся в промежуточ

 

Похожие работы:





 
2013 www.netess.ru - «Бесплатная библиотека авторефератов кандидатских и докторских диссертаций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.