- •Раздел 6. Компьютерные технологии использования систем управления
- •1. История создания баз данных.
- •1.1. Нулевое поколение: менеджеры записей (4000 г. До н.Э. – 1900 г.)
- •1.2. Первое поколение: менеджеры записей (1900 г. – 1955 г.).
- •1.3. Второе поколение: программируемое оборудование обработки записей (1955 г. – 1970 г.)
- •1.3.1. Архитектура субд.
- •Отдельные
- •Администратор
- •Описание на языке конкретной субд
- •Описание хранимых данных
- •1.4. Третье поколение: оперативные сетевые базы данных (1965 г.–1980 г.)
- •1.4.1. Иерархические субд.
- •1.4.2. Сетевые базы данных.
- •1.5. Четвертое поколение: реляционные базы данных (1980 г. – 1995 г.).
- •1.5.1. Таблицы.
- •Office city region mgr target sales
- •1.5.2. Первичные ключи.
- •1.5.3. Отношения предок/потомок.
- •Office cyti region
- •Empl_num name age rep_office
- •1.5.4. Внешние ключи.
- •2. Язык aql как стандартный язык базы данных.
- •2.1. Язык sql.
- •2.2. Роль sql.
- •2.3. Достоинства sql.
- •2.3.1. Независимость от конкретных субд.
- •2.3.2. Переносимость с одной вычислительной системы на другие.
- •2.3.3. Стандарты языка sql.
- •2.3.4. Протокол odbc и компания Microsoft.
- •2.3.5. Реляционная основа.
- •2.3.6. Высокоуровневая структура, напоминающая английский язык.
- •2.3.7. Интерактивные запросы.
- •2.3.8. Программный доступ к базе данных.
- •2.3.9. Различные представления данных.
- •2.3.10. Полноценный язык для работы с базами данных.
- •2.3.11. Динамическое определение данных.
- •2.3.12. Архитектура клиент/сервер.
- •2.4. Пятое поколение: мультимедийные базы данных (1995 г. - …)
- •People Name Adress
- •People Name Adress Papers Picture Voice
- •2.5. Основные требования.
- •2.5.1. Расширяемость.
- •2.5.2. Производительность.
- •2.5.3. Сопровождение в оперативном режиме.
- •2.5.4. Устойчивость.
- •3. Технология хранения данных. Корпоративные базы данных.
- •3.1. Современные требования к корпоративным базам данных.
- •3.2. Потребность в анализе данных.
- •3.3. Хранилища данных.
- •3.4. Хранилища и киоски данных.
- •3.5. Анализ данных в корпоративных системах.
- •3.5.1. Olap - передовая технология анализа.
- •3.5.2. Многомерное представление.
- •3.5.3. Хранение данных olap.
- •3.5.4. Разновидности olap.
- •3.6. Размышления и предсказания.
2.5.2. Производительность.
В современных системах используются два основных метода повышения производительности – распараллеливание алгоритмов и многопроцессорная обработка при помощи нитей.
Распараллеливание алгоритмов.
Одним из способов повышения производительности серверов баз данных является распараллеливание алгоритмов. Существует три типа распараллеливания, применимых к архитектуре сервера баз данных: параллельные операции ввода-вывода с диском, параллельные утилиты и параллельная обработка запросов. Параллельные операции ввода-вывода с диском позволят серверу эффективно использовать многомерные таблицы и разбиение таблиц. Поддержка физического разбиения таблиц особенно важна для параллельного ввода-вывода с диском, при правильной реализации существенно возрастает эффективность и управляемость ресурсами. Параллельные операции-утилиты (сортировка, построение индексов, загрузка, резервирование, восстановление) используют как параллельную обработку, так и параллельные обмена с диском, однако обычно распараллеливание допускает лишь небольшое число компонент.
В отличие от параллельных обменов и параллельных утилит, параллельная обработка запросов имеет гораздо более сложный вид. Обработка запроса обычно требует осуществления горизонтального параллелизма или вертикального параллелизма.
Если каждая из операций баз данных разработана таким образом, что она управляется запросом (т.е. подход потока данных), сервер может использовать параллелизм, одновременно выполняя разные операции баз данных. Например, операция, выбирающая записи по значению поля, может выполняться одновременно с операцией доступа к записям с диска и не должна ждать, пока все записи будут считаны. Аналогично, выбранные записи могут быть загружены для сортировки для начального разбиения в соответствии с ключом сортировки, пока выполняются операции выбора и доступа. Вдобавок к независимости реализации от степени параллелизма проблемно-ориентированный подход допускает прозрачное включение новых существенно параллельных алгоритмов. Это позволяет использовать современные достижения в области алгоритмов для увеличения производительности.
Этот подход, напоминающий конвейер команд в современных процессорах, называется вертикальным параллелизмом. Сочетание вертикального и горизонтального параллелизма увеличивает общую пропускную способность и уменьшает время отклика по сравнению с обычным последовательным подходом. Степень улучшения называется ускорением.
Многопроцессорная обработка с помощью нитей.
Метод обработки запросов пользователя, с которым связаны наименьшие накладные издержки, называется многопроцессорной обработкой с помощью нитей (отличается от моделируемой обработки). Нить как вариант процесса представляет собой управление контекстом, работающее под управлением одного процесса, он может быть либо порожден внутри процесса (например, сервер базы данных), либо средствами ОС. Переключатель контекста процесса уровня ОС – это более дорогое действие, чем переключатель уровня самой нити, так же как и операции создания и уничтожения процессов по сравнению с аналогичными операциями для нитей. В принципе, нити могут выполнять одновременные задания с помощью саморазмножения, создавая нити, похожие на подпроцессы. Поскольку ОС не требуется создавать, распределять или прерывать множественные процессы, накладные расходы многопроцессорных баз данных, использующие нити, будут ниже, чем для других архитектур.
Оптимизация.
Возможности оптимизатора запроса сервера базы данных в большей степени определяет способность реляционной СУБД эффективно выполнять множественную обработку данных. Особенно важна способность оптимизатора запросов использовать подходящие индексы, ограничивающие выделенные строки, и обрабатывать запросы, ссылающиеся на различные таблицы. Оптимизатор не должен быть чувствителен к синтаксису SQL. Он должен быть чувствителен к статистикам данных и распределениям значений данных; таки образом можно оценить ожидаемую стоимость обработки запросов и выбрать схему, отвечающую наименьшим издержкам.
Управление ресурсами.
Эффективное управление ресурсами состоит из двух частей: прозрачной поддержки соответствующих ресурсов и эффективного использования специальных ресурсов. Критически важной является прозрачная поддержка ресурсов. Например, при разработке приложения в архитектуре клиент-сервер разработчик не может (и не должен) делать предположения о том, как клиент и сервер будут обмениваться сообщениями. На разработку не должно влиять то, какие средства используются – сетевые или общей памяти; при разработке также нельзя ограничивать их использование.
Одним из наиболее важных ресурсов является память. Приложения реляционных СУБД используют память для поддержки состояния соединений, а также для кэширования запросов и результатов. Без эффективного управления общей памятью архитектура сервера баз данных не способна удовлетворить всем требованиям.
Параллельная обработка запросов.
Параллельная обработка запросов позволяет решить проблему низкой производительности для сложных запросов и объемных баз данных. Получая доступ и обрабатывая данные параллельно, параллельная обработка запросов может привести к существенному увеличению производительности для DSS и пакетной обработки. Такое увеличение производительности позволяет включать самые сложные запросы в транзакции читать/писать без ущерба целостности данных и изоляции транзакций. При подходящей величине времени отклика очереди DSS, которые были бы невозможны на традиционных системах, становятся возможными и не конкурируют разрушительным образом с приложениями OLTP.