- •1. История развития баз данных
- •3. Модели данных [1]
- •1. История развития баз данных
- •1.1. Файлы и файловые системы
- •1.2. Базы данных на больших эвм
- •1.3. Эпоха персональных компьютеров
- •1.4. Распределенные базы данных
- •1.5. Особенности настоящего периода:
- •2. Проблемы обработки информации
- •Основные функции субд
- •Типовая организация современной субд
- •3. Модели данных [1]
- •3.1. Системы управления файлами
- •3.2. Иерархические базы данных
- •3.3. Сетевые базы данных
- •3.4. Реляционные базы данных
- •Недостатки реляционных систем
- •3.5. Объектно-ориентированные базы данных
- •Преимущества и недостатки оосубд [8, с.817]
- •3.6. Объектно-реляционные базы данных
- •4. Реляционная модель данных [2]
- •5. Операции над отношениями
- •5.1. Теоретико-множественные операции реляционной алгебры
- •5.1.1 Объединение отношений
- •5.1.2. Пересечение отношений
- •5.1.3. Разность отношений
- •5.1.4. Расширенное декартово произведение
- •5.2. Специальные операции реляционной алгебры
- •5.2.1. Операция фильтрации
- •5.2.2. Операция проектирования
- •5.2.3. Операция условного соединения
- •5.2.4. Операция деления
- •5.2.5.Примеры использования операций реляционной алгебры
- •Целостность [8]
- •6. Проектирование бд Жизненный цикл бд
- •Проектирование бд
- •Проектирование бд с учетом конкретной архитектуры Архитектура клиент-сервер
- •Структура сервера базы данных
- •Проектирование распределенных бд
- •11.1. Концепции распределенных баз данных
- •Этапы проектирования реляционной базы данных
- •6.1. Разработка технического задания
- •6.2. Разработка структуры бд
- •6.3. Нормализация
- •6.3.1. Первая нормальная форма
- •6.3.2. Вторая нормальная форма
- •6.3.3. Третья нормальная форма
- •6.3.4. Нормальная форма Бойса-Кодда
- •6.3.5. Четвертая и пятая нормальные формы
- •6.3.6. Денормализация
- •Проектирование реляционной базы данных на основе декомпозиции универсального отношения (плоской таблицы)
- •7.Язык запросов sql (Structured Query Language)
- •7.1. История развития
- •7.2. Как работает sql?
- •7.3. Интерактивный и встроенный sql
- •7.4. Типы данных
- •7.6. Оператор выбора select (MySql)
- •7.6.1. Предикаты предложения where
- •7.6.2. Примеры использования оператора select
- •7.6.3. Применение агрегатных функций и вложенных запросов в операторе выбора
- •8. Система управления базами данных (субд) MySql
- •8.1. Преимущества MySql перед другими субд. Недостатки
- •8.2. Инструментарий, поставляемый с MySql
- •8.3. Установка и завершение связи с сервером
- •8.4. Команды sql для MySql. Правила оформления листингов
- •8.5. Основы использования MySql
- •8.5.1. Замечания по организации работ с MySql
- •8.5.2. Программы MySql
- •8.5.2.1. Стандартные опции программ MySql
- •8.5.2.2. Конфигурационные файлы
- •8.5.2.3. Переменные среды
- •8.5.2.4. Клиенты mysql и mysqlc
- •Программирование приложений
- •Использование специализированных библиотек и встраиваемого sql
- •Odbc - открытый интерфейс к базам данных на платформе ms Windows
- •Jdbc - мобильный интерфейс к базам данных на платформе Java
- •9. Администрирование бд
- •9.1. Управление данными на предприятии
- •9.2. Основные функции dba
- •9.3. Администрирование в MySql [1])
- •9.3.1. Обеспечение доступности данных
- •9.3.2. Поддержание целостности данных
- •9.3.3. Подготовка к катастрофе
- •9.3.4. Поддержка пользователей
- •9.3.5. Разработка и внедрение стандартов
- •9.3.6. О хранении данных
- •9.3.6.1. Журнал транзакций
- •9.3.6.2. Журнальные файлы
- •9.3.7. Безопасность
- •9.3.7.1. Схемы привилегий
- •9.3.7.2. Задание привилегий
- •9.3.8. Оптимизация
- •9.3.8.1. Оптимизация запросов
- •9.3.8.2. Оптимизатор запросов
- •9.3.8.3. Выбор типа столбцов и эффективность запросов
- •9.3.8.4. Эффективная загрузка данных
- •9.3.8.5. Оптимизация для администратора
- •10. Транзакции и параллельные вычисления
- •10.1. Параллельные запросы
- •10.2. Транзакции
- •10.3. Уровни изоляции
- •10.4. Выполнение транзакций
- •10.5. Блокировки
- •10.6. Программные блокировки
- •Мониторы транзакций
- •12. Направления и тенденции развития баз данных
- •12.1. Ограничения реляционных систем
- •12.2. Особенности построения информационных хранилищ
- •Что достигается через использование технологии хранилищ данных?
- •Проблемы хранилищ данных
- •12.3. Olap-технология
- •Правила для olap-систем
- •12.3.1. Реляционные olap-системы
- •12.3.2. Многомерные olap-системы
- •12.3.3. Принципы построения многомерной базы данных
- •12.4. Oltp-технологии
- •13. Интеграция субд в среду Web
- •13.1. Публикация бд в Интернете
- •13.1.1. Общие концепции публикации бд в Интернете
- •13.1.2. Технологии публикации бд в Internet.
- •13.2. Сценарии JavaScript, jScript и vbScript
- •13.3. Элементы управления ActiveX
- •13.4. Апплеты и сервлеты Java
- •13.5. Интерфейсы
- •13.5.1. Интерфейсы cgi и WinCgi
- •13.5.2. Интерфейс isapi/nsapi
- •13.5.3. Asp, php, idc/htx-страницы
- •13.5.4. Формирование Web-страниц
- •13.5.5. Интерфейсы ole db, ado, odbc
- •13.6. Статическая публикация бд
- •13.7. Динамическая публикация бд
- •13.9. Протоколы передачи гипертекста
- •13.10. Универсальный указатель ресурсов
- •13.11. Состав и теги html-документа
- •13.15. Двухуровневые Web-приложения
- •13.16. Трехуровневые Web-приложения
- •13.17. Многоуровневые Web-приложения
- •13.18. Характеристики интерфейсов ole db, ado и odbc
- •Список использованной литературы
- •Приложения 1. Типы таблиц, поддерживаемых MySql
- •Приложение 2. Встроенные функции
- •Управляющие функции sql для MySql
- •Статистические функции
- •Математические функции
- •Строковые функции
- •Функции работы с датой и временем
- •Приложение 3. Инструкции языка sql для MySql
- •Приложение 4. Маленькая база для маленькой компании (OpenOffice_MySql) Приложение 5. MySql – начинающим администраторам Приложение 6. О метаданных
Проектирование распределенных бд
11.1. Концепции распределенных баз данных
В современном бизнесе очень часто возникает необходимость предоставить доступ к одним и тем же данным группам пользователей, территориально удаленным друг от друга. В качестве примера можно привести банк, имеющий несколько отделений. Эти отделения могут находиться в разных городах, странах или даже на разных континентах, тем не менее, необходимо организовать обработку финансовых транзакций (перемещение денег по счетам) между отделениями. Результаты финансовых операций должны быть видны одновременно во всех отделениях.
Существуют два подхода к организации обработки распределенных данных:
Технология распределенной базы данных. Такая база включает фрагменты данных, расположенные на различных узлах сети. С точки зрения пользователей она выглядит так, как будто все данные хранятся в одном месте. Естественно, такая схема предъявляет жесткие требования к производительности и надежности каналов связи.
Технология тиражирования. В этом случае в каждом узле сети дублируются данные всех компьютеров. При этом:
передаются только операции изменения данных, а не сами данные,
передача может быть асинхронной (неодновременной для разных узлов),
данные располагаются там, где обрабатываются.
Это позволяет снизить требования к пропускной способности каналов связи, более того, при выходе из строя линии связи какого-либо компьютера, пользователи других узлов могут продолжать работу. Однако при этом допускается неодинаковое состояние базы данных для различных пользователей в один и тот же момент времени. Следовательно, невозможно исключить конфликты между двумя копиями одной и той же записи.
Распределенная база данных – это набор логически связанных между собой разделяемых данных (и их описаний), которые физически распределены в некоторой компьютерной сети.
Из этого вытекает следующее определение.
Распределенная СУБД - это программный комплекс, предназначенный для управления распределенными базами данных и позволяющий сделать распределенность информации прозрачной для конечного пользователя.
Существует 4 альтернативные стратегии размещения данных в системе:
Централизованное размещение. Предусматривается единственная БД на одном из сайтов. Высокий уровень затрат на передачу данных, низкий уровень надежности и доступности (любой отказ на центральном сайте приводит к параличу всей системы). Локальность ссылок минимальна;
Раздельное (фрагментированное) размещение. БД разбивается на непересекающиеся фрагменты, каждый из которых размещается на одном из сайтов системы. Стоимость хранения данных минимальна, но невысок уровень надежности и доступности данных. При правильно выбранном способе распределения данных уровень производительности относительно высок, а уровень затрат на передачу данных – низок;
Размещение с полной репликацией. Предусматривается размещение полной копии всей БД на каждый из сайтов системы. Локальность ссылок, надежность, доступность и уровень производительности системы максимальны, однако стоимость устройств хранения данных и уровень затрат на передачу данных в этом случае будут самыми высокими. Попыткой уменьшить недостатки этой стратегии является технология моментальных снимков, в соответствии с которой копии БД снимаются через определенный интервал времени (час, сутки, неделя). Однако это грозит неактуальностью копий в любой момент времени;
Размещение с выборочной репликацией. Эта стратегия является комбинацией первых трех методов. Целью применения данной стратегии является объединение всех преимуществ в разных стратегиях и одновременное исключение свойственных им недостатков. Благодаря гибкости эта стратегия используется чаще всего.
Система управления распределенными базами данных состоит из единой логической базы данных, разделенной на некоторое количество фрагментов. Каждый фрагмент базы данных сохраняется на одном или нескольких компьютерах, которые соединены между собой линиями связи и каждый из которых работает под управлением отдельной СУБД. Любой из сайтов способен независимо обрабатывать запросы пользователей, требующие доступа к локально сохраняемым данным, а также способен обрабатывать данные, сохраняемые на других компьютерах сети.
Пользователи взаимодействуют с распределенной базой данных через приложения. Приложения могут быть классифицированы как те, которые не требуют доступа к данным на других сайтах (локальные приложения), и те, которые требуют подобного доступа (глобальные приложения). Естественно, в распределенной СУБД должно существовать хотя бы одно глобальное приложение.
Поэтому любая система управления распределенными базами данных имеет следующие особенности.
Набор логически связанных разделяемых данных.
Сохраняемые данные разбиты на некоторое количество фрагментов.
Между фрагментами может быть организована репликация данных.
Фрагменты и их реплики распределены по различным сайтам.
Сайты связаны между собой сетевыми соединениями.
Работа с данными на каждом сайте управляется СУБД.
СУБД на каждом сайте способна поддерживать автономную работу локальных приложений.
СУБД каждого сайта поддерживает хотя бы одно глобальное приложение.
Полная поддержка для распределенных баз данных означает, что отдельное приложение может прозрачно обрабатывать данные, распределенные на множестве различных баз данных, управление которыми осуществляют разные СУБД, работающие на многочисленных машинах с различными операционными системами, соединенных вместе коммуникационными сетями. При этом понятие прозрачно означает, что приложение выполняет обработку данных с логической точки зрения так, как будто управление данными полностью осуществляется одной СУБД, работающей на отдельной машине, т.е. распределенная база данных выглядит для клиента как единый, монолитный сервер.
Распределенная база данных на самом деле является типом виртуального объекта, части которого физически сохраняются в ряду отдаленных реальных баз данных на удаленных узлах. При этом каждый узел обладает своими собственными базами данных, собственными локальными пользователями, собственной СУБД и программным обеспечением для управления транзакциями, а также своим собственным локальным диспетчером передачи данных.
Распределенные базы данных хранятся и обрабатываются на нескольких компьютерах, это повышает их производительность, доступность и устойчивость к сбоям. Чтобы все компьютеры оставались синхронизированными, по сети должны рассылаться обновления.
Обычный сервер хранит у себя все данные и обслуживает все клиентские запросы. Чтобы сделать запрос, клиент устанавливает соединение с сервером. Сервер анализирует инструкции, выполняет их, извлекает данные и возвращает результаты запроса.
По мере возрастания нагрузки производительность сервера снижается. Чтобы избежать этого, задействуют дополнительные ресурсы, например, наращивают память, ставят дополнительные процессоры и даже сетевые платы. Это эффективно, когда клиенты расположены в непосредственной близости от сервера (например, когда несколько серверов приложений взаимодействуют с одной СУБД). Но если сервер и клиенты удалены друг от друга, то производительность такой системы обратно пропорциональна расстоянию.
Решением этой проблемы являются распределенные базы данных, которые сегментируют хранимую информацию и перемещают отдельные ее блоки ближе к нужным клиентам. Можно, например, поместить таблицы на разных компьютерах или использовать несколько идентичных хранилищ. Во втором случае серверы взаимодействуют друг с другом для поддержания синхронизации. Если на одном из серверов происходит обновление данных, оно распространяется на все остальные серверы.
К недостаткам распределенных баз данных можно отнести то, что возрастает сложность управления ими. Но преимуществ больше:
Прежде всего – повышение производительности. Данные быстрее обрабатываются несколькими серверами и располагаются ближе к тем пользователям, которые чаще с ними работают.
Система становится более устойчивой, если она способна выдержать сбой одного из своих компонентов. В распределенной базе данных с симметричной схемой хранения (когда пользователь может осуществить доступ к любому заданному отношению с любой комбинацией известных значений атрибутов для извлечения других неизвестных значений атрибутов) исчезновение одного из серверов приводит только к замедлению работы пользователей, находящихся ближе к этому серверу, но в целом система остается работоспособной.
В несимметричной системе можно оптимизировать схему расположения данных. Чем ближе пользователи находятся к нужным им данным, тем меньше на их работу влияют сетевые задержки. В результате серверам приходится обрабатывать меньшие объемы данных. Это также соответствует повышению безопасности данных, поскольку их можно физически хранить в тех системах, где пользователи имеют право работать с соответствующими данными.
Дополнительно можно указать преимущества:
Отражение структуры организации. Персонал отделения может выполнить локальные запросы, а руководство – глобальные.
Разделяемость и локальная автономность.
Повышение доступности данных.
Повышение надежности.
Экономические выгоды. В подразделениях выгоднее устанавливать собственные маломощные компьютеры и собрать из них систему, равноценную по мощности одному большому компьютеру, чем модернизировать систему с мейнфреймом. Кроме того, достигается снижение трафика, а, следовательно, стоимости данных.
В целом, однако, применение распределенных баз данных связано с достаточно высоким риском, поскольку необходимо обеспечить соблюдение мер безопасности сразу на нескольких узлах, что не так-то просто реализовать.
Наряду с преимуществами можно указать и некоторые недостатки использования распределенных баз данных:
Повышение сложности. Обеспечение прозрачности распределенных СУБД требует обеспечения высокого уровня производительности, надежности и доступности. Кроме того, высоки требования к репликации, иначе не будет обеспечен этот уровень.
Увеличение стоимости. Требуется дополнительное оборудование, оплата каналов связи, кроме того, возрастут затраты на оплату труда персонала.
Проблемы защиты. Требуется организация контроля доступа к данным, а также защита сетевых соединений самих по себе.
Усложнение контроля над целостностью данных, т.е. за корректностью и согласованностью данных.
Отсутствие стандартов.
Недостаток опыта. Распределенные БД общего назначения еще не получили широкого распространения и не накоплен опыт эксплуатации таких систем.
Усложнение процедуры разработки базы данных. Приходится решать вопросы, связанные с принятием решения о фрагментации данных, с распределением фрагментов по отдельным сайтам и с организацией процедур репликации данных.
Причины использования распределенных баз данных:
1) Необходимость разместить часто используемые данные близко к клиентским приложениям, к которым нужно обращаться, и таким образом свести к минимуму число сообщений в сети и время доступа.
2) Необходимость расположить изменчивые данные в одном месте, сведя таким образом к минимуму проблемы, связанные с наличием нескольких обновляемых копий таких данных.
3) Стремление уменьшить влияние единичного отказа, например, отключения сервера.
Проектирование распределенных баз данных и ее сопровождение после ввода в эксплуатацию нельзя назвать тривиальными задачами.
Перед проектированием необходимо определить для каждой сущности свойства, имеющие отношение к распределению данных:
Готовность – в течение какого времени должна быть доступна информация.
Достоверность – насколько важно иметь доступ к актуальному значению.
Видимость – насколько широкие полномочия предоставляются при запросе.
Доступность – как часто необходимо запрашивать информацию.
Мутируемость – насколько широкие полномочия предоставляются при изменении.
Изменчивость – как часто требуется изменять информацию.
Если сущность можно разбить на несколько частей, то анализ должен дать схему фрагментации, в которой описаны:
все соответствия, которые могут использоваться при разбиении сущности на части;
порядок определения частей;
точка, из которой должна запрашиваться и обновляться каждая часть, то есть видимость, готовность, мутируемость и изменчивость части сущности.
Если ни одно из этих свойств от части к части не меняется, то необходимость разбиения сомнительна.
Распределенная обработка по сравнению с традиционными системами имеет ряд преимуществ:
данные располагаются близко к пользователям;
быстрый доступ к данным;
быстрая обработка данных;
возможность роста;
улучшение взаимодействия;
уменьшение стоимости операций;
дружественный интерфейс пользователя;
уменьшение опасности сбоя;
независимость от узла обработки данных.
К числу недостатков распределенной обработки можно отнести следующие:
сложность управления и контроля;
увеличение ошибок;
недостаточная стандартизация;
повышенные требования к условиям хранения данных;
сложность управления средой данных;
повышение стоимости обучения.
Чтобы считаться распределенной, СУБД должна обладать следующими функциональными возможностями:
прикладной интерфейс, обеспечивающий взаимодействие с конечными пользователями или прикладными программистами, а также с другими СУБД в рамках распределенной БД;
проверка достоверности при анализе запросов;
преобразование для выяснения, какие компоненты запроса являются распределенными, а какие локальными;
оптимизация запроса, гарантирующая выявление лучшей стратегии доступа;
отображение, позволяющее определить местоположение данных в локальных и удаленных фрагментах;
интерфейс ввода/вывода, обеспечивающий считывание/запись данных в постоянном месте хранения;
форматирование, подготавливающее данные для представления их конечному пользователю или для передачи в прикладные программы;
безопасность, т.е. обеспечение конфиденциальности данных как в локальных, так и в удаленных БД;
резервное копирование, которое гарантирует доступность и восстанавливаемость БД в случае аварии;
управление параллельным выполнением, обеспечивающее одновременный доступ к данным и гарантирующее целостность данных во всех фрагментах БД;
управление транзакциями, обеспечивающее переход данных из одного устойчивого состояния в другое. Сюда включается синхронизация локальных и удаленных транзакций, а также транзакции между несколькими распределенными сегментами.
