Материал: BD шпорки

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
  1. Язык sql: создание и использование представлений (просмотров) и индексов

Представление (VIEW) — объект базы данных, являющийся результатом выполнения запроса к базе данных, определенного с помощью оператора SELECT, в момент обращения к представлению.

Преимущества использования представлений:

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

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

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

Создание представлений

Для создания представления используется оператор CREATE VIEW, имеющий следующий синтаксис:

CREATE [OR REPLACE]

[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

VIEW view_name [(column_list)]

AS select_statement

[WITH [CASCADED | LOCAL] CHECK OPTION]

Алгоритмы представлений

Существует два алгоритма, используемых MySQL при обращении к представлению: MERGE и TEMPTABLE.

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

В случае алгоритма TEMPTABLE, MySQL заносит содержимое представления во временную таблицу, над которой затем выполняется оператор, обращенный к представлению.

Обновляемость представлений

Представление называется обновляемым, если к нему могут быть применимы операторы UPDATE и DELETE для изменения данных в таблицах, на которых основано представление.

При использовании в определении представления конструкции WITH [CASCADED | LOCAL] CHECK OPTION все добавляемые или изменяемые строки будут проверяться на соответствие определению представления.

Изменение данных (UPDATE) будет происходить только если строка с новыми значениями удовлетворяет условию WHERE в определении представления. Добавление данных (INSERT) будет происходить только если новая строка удовлетворяет условию WHERE в определении представления.

Индексы применяются для быстрого поиска строк с указанным значением одного столбца. Без индекса чтение таблицы осуществляется по всей таблице начиная с первой записи, пока не будут найдены соответствующие строки. Чем больше таблица, тем больше накладные расходы. Если же таблица содержит индекс по рассматриваемым столбцам, то MySQL может быстро определить позицию для поиска в середине файла данных без просмотра всех данных. Для таблицы, содержащей 1000 строк, это будет как минимум в 100 раз быстрее по сравнению с последовательным перебором всех записей. Однако в случае, когда необходим доступ почти ко всем 1000 строкам, быстрее будет последовательное чтение, так как при этом не требуется операций поиска по диску.

Индексы используются для того, чтобы:

  • Быстро найти строки, соответствующие выражению WHERE.

  • Извлечь строки из других таблиц при выполнении объединений.

  • Найти величины MAX() или MIN() для заданного индексированного столбца. Эта операция оптимизируется препроцессором, который проверяет, не используете ли вы WHERE key_part_4 = константа, по всем частям составного ключа < N. В этом случае MySQL сделает один просмотр ключа и заменит выражение константой MIN(). Если все выражения заменяются константой, запрос моментально вернет результат:

  • SELECT MIN(key_part2),MAX(key_part2) FROM table_name where key_part1=10

  • Производить сортировку или группирование в таблице, если эти операции делаются на крайнем слева префиксе используемого ключа (например ORDER BY key_part_1,key_part_2). Если за всеми частями ключа следует DESC, то данный ключ читается в обратном порядке.

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

  1. Назначение и функции субд

Основные функции СУБД

  • управление данными во внешней памяти (на дисках);

  • управление данными в оперативной памяти с использованием дискового кэша;

  • журнализация изменений, резервное копирование и восстановление базы данных после сбоев;

  • поддержка языков БД (язык определения данных, язык манипулирования данными).

Программное обеспечение, предназначенное для работы с базами данных, называется система управления базами данных (СУБД). СУБД используются для упорядоченного хранения и обработки больших объемов информации.

СУБД организует хранение информации таким образом, чтобы ее было удобно:

  • просматривать,

  • пополнять,

  • изменять,

  • искать нужные сведения,

  • делать любые выборки,

  • осуществлять сортировку в любом порядке.

Системы управления базами данных (СУБД) используются для упорядоченного хранения и обработки больших объемов информации. В процессе упорядочения информации СУБД генерируют базы данных, а в процессе обработки сортируют информацию и осуществляют ее поиск.

  1. Управление словарем данных и обеспечение безопасности данных в субд

Словарь данных предназначен для хранения метаданных, т.е. описаний структур и свойств данных и их взаимосвязи, дат создания объектов БД, списка авторизованных пользователей и т. д.

Т. к. любые программы получают доступ к БД через СУБД, то использование словаря данных упрощает разработку прикладных программ за счет использования уже имеющихся стандартов организации и именования данных.

Управление хранением, преобразованием и представлением данных

СУБД создает сложные структуры, необходимые для хранения данных, освобождая пользователя от знания деталей их физического представления в памяти компьютера.

Кроме того, СУБД преобразует запросы пользователя в команды, обеспечивающие определение физического местоположения нужной информации, ее извлечение, обработку и форматирование с целью предания вида, удобного для чтения.

Обеспечение безопасности данных

СУБД создает систему, которая обеспечивает защиту и конфиденциальность пользовательских данных, содержащихся в БД.

Правила безопасности устанавливают: какие пользователи могут получить доступ к БД, а также какие операции разрешено выполнить тому или иному пользователю над конкретными объектами БД. Такие разрешенные операции называются привилегиями.

Установка, контроль и снятие привилегий – администратор БД.

  1. Обеспечение целостности данных в субд

В СУДБ предусмотрены средства обеспечения целостности данных, что позволяет постоянно поддерживать СУБД в вирт. состоянии.

Обеспечение целостности данных основано на использовании механизма транзакций при выполнении различных операции с объектами БД.

Транзакция - последовательность выполнения операций в БД, которая рассматривается как некоторое неделимое действие, осмысленное с т. зр. пользователя.

Можно сказать, что транзакция – лог. 1 работы системы, которая реализует некоторую прикладную функцию, например, перевод денег с одного счета на другой в банковской системе.

Если все операции, составляющие транзакцию, успешно выполняются, то СУБД фиксирует в БД изменения, произведенные этой транзакцией.

В этом случае говорят, что транзакция подтверждается или фиксируется.

Если хотя бы одна из операций не будет выполнена, то БД останется в том же состоянии, что и перед началом выполнения транзакции, т. е. все операции, составляющие транзакцию, отменяются и транзакция соответственно не подтверждается (отказывается).

Т. о. операции с БД выполняются только в рамках транзакции, каждая из которых переводит БД из одного целостного состояния в другое.

  1. Механизм тиражирования (репликации) данных в субд

Работа распределенной БД базируется над синхронной фиксацией изменений сразу на нескольких узлах системы, что предъявляет жесткие требования к производительности и надежности каналов.

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

Действительно, далеко не всегда требуется поддерживать идентичность БД на различных узлах в любое время – достаточно это делать лишь в определенные критические моменты времени. Можно накапливать изменения на одном узле в виде последовательности транзакций и периодически копировать эти изменения на другие узлы. Эти функции выполняют специальные модули СУБД – репликаторы.

Его задача – автоматически синхронизировать БД, распр-ой системы и тем самым обеспечивать актуальность их копий, или как их называют реплик.

  1. Типы баз данных

Видов и типов баз данных очень много

Иерархическая база данных, структура иерархических баз данных

Иерархическая база данных – каждый объект при таком хранение информации представляется в виде определенной сущности, то есть, у этой сущности могут быть дочерние элементы, родительские элементы, а у тех дочерних могут быть еще дочерние элементы, но есть один объект, с которого все начинается. Получается своеобразное дерево. Примером иерархической базы данных может быть, документ в формате XML или файловая система компьютера, пример с файловой системой компьютера я приводил, когда рассматривал структуру XML документа, в рубрике Заметки о XML.

Сетевая база данных, структура сетевых баз данных

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

Реляционные базы данных, структура реляционных баз данных особенности реляционных баз данных

Главной особенностью реляционных баз данных является, то, что объекты внутри таких баз данных хранятся в виде набора двумерных таблиц. То есть, таблица состоит из набора столбцов, в котором может указываться: название, тип данных(дата, число, строка, текст и т.д.). Еще одной важной особенность реляционных БД является, то, что число столбцов фиксировано, то есть, структура базы данных известна заранее, а вот число строк или рядов в реляционных базах данных ничем не ограничено, если говорить грубо, то строки в реляционных базах данных и есть объекты, которые хранятся в базе данных.

  1. Распределенные базы данных. Двенадцать правил Дейта для распределенных баз данных

Распределенная база данных (DDB – distributed database) – это совокупность логически взаимосвязанных баз данных, распределенных в компьютерной сети. Распределенная система управления базой данных определяется как программная система, которая позволяет управлять распределенной базой данных таким образом, чтобы ее распределенность была прозрачна для пользователей.

Распределенная база данных — это совокупность нескольких взаимосвязанных баз данных, которые физически распределены по различным местам, которые обмениваются данными через компьютерную сеть.

Распределенная система управления базами данных (DDBMS) — это централизованная программная система, которая управляет распределенной базой данных таким образом, как если бы она все хранилась в одном месте.

Основой этих правил явл то что рабд должна восприниматься пользователем точно так же как и привычная БД

1. Локальная автономность. Локальные данные должны находиться под локальным владением и управлением.

  1. Управление многопользовательским доступом к данным в субд

СУБД включает в себя средства, обеспечивающие доступ к данным нескольким пользователям одновременно без нарушения целостности данных.

В основе этого лежат механизмы транзакции и блокировки.

Транзакция - последовательность выполнения операций в БД, которая рассматривается как некоторое неделимое действие, осмысленное с т. зр. пользователя.

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

Транзакции и блокировки тесно связаны друг с другом.

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

Эти задержки можно снизить, снизив размеры фрагментов данных, захватываемые транзакцией.

В частности, можно блокировать сразу всю БД (неприемлемый вариант), таблицу, часть таблицы (страницу), отдельную строку. Все эти варианты известны под названием «уровни блокировки».

Большинство СУДБ использую блокировки на уровне страниц или строк. Т. к. размер страниц невелик, то время ожидания транзакции для доступа к странице оказывается вполне приемлемым.

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

  1. Управление резервным копированием и восстановлением данных в субд

СУДБ содержит специальные утилиты, с помощью которых администратор БД может выполнять регулярные и экстренные процедуры резервного копирования и восстановления данных.

Восстановление данных происходит в следующих 2-х случаях:

  1. аварийный отказ аппаратуры (жесткий сбой системы)

В этом случае данные повреждаются физически.

  1. После аварийного отказа ПО (мягкий сбой системы)

Мягкий сбой системы характеризуется утратой оперативной памяти, но данные, хранящиеся на диске, остаются неповрежденными. Для восстановления данных, необходимо, чтобы они сохранялись в БД с некоторой избыточностью, позволяющей восстановить то состояние, которое было перед сбоем. Такую избыточность обеспечивают полная активная копия БД и журнал транзакций. Журнал транзакций содержит перечень всех транзакций, выполненных после создания последней архивной копии данных с описанием всех деталей каждой транзакции. Полная архивная копия БД создается практически с учетом скорости накопления журнала транзакций и, как правило, размещается на другом сетевом диске. Для восстановления данных, поврежденных в результате жесткого сбоя системы, используют последнюю по времени полную архивную копию БД и журнал транзакций. Восстановление данных состоит в том, что, исходя из полной архивной копии, по журналу транзакций последовательно воспроизводится работа всех поврежденных транзакций. В результате БД восстанавливается в то состояние в котором, в котором она была перед повреждением. Восстановление данных после мягкого сдоя системы осуществляется как часть процедуры перезагрузки системы. При перезагрузке системы транзакции подвергаются анализу для выявления завершившихся транзакций и транзакций, прерванных из-за сбоя. Транзакции, подтвержденные до наступления сбоя, но результат выполнения, которых не записан на диск, выполняются заново. Транзакции, незавершившиеся из-за сбоя, и транзакции, результат которых записан на диск, откатываются.

Самым плохим случаем является ситуация, когда разрушены физически и БД, и журнал транзакций. Единственно, что можно сделать, это восстановить состояние БД на момент резервного копирования. Чтобы не допустить возникновения такой ситуации, БД и журнал транзакций необходимо размещать на физически разных дисках, упр-х физически разными контролями