Файл: Первый вопрос Иерархические базы данных.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 29.10.2023

Просмотров: 307

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Функции:

(Компиляция запросов) Синтаксический анализ (Query parser) – разбор запросов синтактически, если все верно, то разбирает запрос семантически и строит дерево запроса, описывающего запрос и его структуру

Оптимизация запроса (Query optimizer). происходит выбор наилучшего решения запроса из всех возможных. На выходе формируется план исполнения запроса.

Query Plan - документ, в котором перечислены этапы операций, которые нужно выполнить для получения результату, который нужен пользователю

QO определяет быстроту выполнения плана с помощью цены плана (cost (не в чем не измеряется)). Цена плана формируется из цены каждой операции. Самый быстрый план имеет наименьшую стоимость.

Show random_page_cost; покажет стоимость случайного чтения

---4

Show seq_page_cost; цена последовательного чтения

---1

Выполнения запроса (Query executer) - по шагам выполняет каждый пункт запроса

  1. Что представляют собой метаданные БД?

Метаданные — это данные, которые представляют информации о других данных

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

Метаданные в БД — это информация, которая описывает объекты базы данных.

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

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

В PostgreSQL можно посмотреть схему данных для:

Таблиц с помощью \dt или для одной таблицы \dt name

На метаданные можно влиять с помощью команд DML, так их можно создавать, изменять и удалять из схемы данных БД.

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


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

Все данные находятся в page

Базы данных – это совокупность структурированных и взаимосвязанных данных, относящихся к определенной предметной области.

Файловые структуры это

Все файлы находятся в отдельных файлах

При файловых структурах теряется

Контроль целостности

Безопасность данных - защита данных от преднамеренного или непреднамеренного нарушения секретности, искажения или разрушения.

Транзакционость

ACID

Отсутствует параллельная работа клиентов

Не поддерживается восстановление информации после сбоев

  1. Для чего используется хеш-функция?

  2. Что такое хеширование?

HASH функция — это функция, которая предоставляет по своему аргументу (аргументам) единственное числовое значение, которое взаимоднозначна с входным значением (значениями). Это функция односторонняя, то есть нельзя по результату получить первоначальные данные.

Хеширование — это процесс, выполняемый хэш функцией, преобразования входных данных в единственное числовое значение.

Основное свойство: выдавать разные выходные значения при разных комбинаций входных значений (2, 3, 5 и 3, 2, 5 дают разные результаты (одно число) в хэш функциях).

Одинаковые входные значения всегда дают один тот же результат. Но одинаковые выходные значения не означают что входные значения будут одинаковы эта ситуации называется коллизия хэш функций (при двух разных входных данных образуется один и тот же результат).

Хэш функция создаёт хэш, который используется для быстрого поиска данных, например для соединения таблиц (так как JOIN выполняется по хешу меньшей таблицы)

Помимо этого, хеш в других сферах используется для проверки целостности данных и криптографии

Доп инфа

Хэш таблица — это таблица с двумя колонками: 1 колонка содержит данные из основной таблицы, 2 колонка содержит адрес на основную таблицу. Причем эта таблица заполняется не равномерно, а по определенному правилу, на основе результата кэш функции выберется необходимая строка, номер, который будет

соответствовать результату кэш функции, и заполнится.

Но такой способ не рационален для малого количества записей, так, например, 2 записи в основной таблице с кэш 3 и 1002, то для основной таблицы нужна кэш таблица с 1002 строками как минимум.

Это не рациональность решена способом остатка от делания на максимальное количество записей в основной таблице. В предыдущем примере основная таблица рассчитана на 10 записей, то и кэш будет рассчитан на 10 записей. В прошлом примере кэш 3 и 1002 будет в 3 и 2 строке кэш таблицы.

Таблица данных

54

qqq

109

www

208

sss

32

vvv

Hash таблица (для таблицы 10 записей)







32

4







54

1



















208

3

109

2







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

Кэш для строк вычисляется по буквам (ASCII код).

В случае соединения таблицы по определенному полю, то (сначала без кэш) с помощью алгоритма NLJ реализуется чтение большей таблицы (по кол-ву строк) с вложенным чтением меньшей таблицы (то есть в два цикла).

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

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


  1. Что такое метаданные?

Ответ в вопросе 28

  1. Какие способы доступа к данным можно реализовать при помощи индекса?

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

Способы доступа к данным: быстрый поиск и быстрая сортировка данных (которая возможно если используется Б-дерево или бинарное дерево, так как данные в них отсортированы, а не хэш индекс).

Индексы полезны только при редкоизменяемых данных, так как не нужно постоянно изменять индексный файл.

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

  1. Какие значения содержат записи индексного файла?

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

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

Доп инфа

На основе таблицы индекс выбирается метод поиска записей

Метод бинарного дерева (дихотомия, метод половинного деления) производится только в таблицах отсортированного вида.

Суть метода: к совокупности n данных мы обращаемся к элементу, который находится по середине этой совокупности. В результате полученного значения поиск либо заканчивается (результат угадан) либо продолжается в том направлении смотря какое значение было найдено уже, то есть снова выбирается половина из выбранного направления поиска.

Скорость алгоритма = log2 (n), где n – количество записей в таблице

Плюсы

Индексы ускоряет выполнение инструкций SQL с условиями отбора, имеющими ссылки на индексный столбец (столбцы).


Минусы

Индекс занимает на диске дополнительное место

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

Полезно создавать индекс лишь для тех столбцов, которые часто используются в условиях отбора. Строиться объединения таблиц, производится сортировка.

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

СУБД всегда создает индекс для первичного ключа таблицы.

Если индекс не создан, то поиск производится только последовательно, сам по себе индекс не создается во время поиска, нужно специально создать, а потом искать записи.

  1. Как называется количество данных, передаваемых из вторичной памяти (памяти накопителя) в главную (оперативную) память за одно обращение?

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

Поиск и предоставление данных: определяется искомая запись, затем запрашивается диспетчер файлов, который определит страницу, на которой находится запись, затем для извлечения страницы запрашивается диспетчер дисков. Обычно страницы имеют размер 1, 2 или 4 Кбайт.

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

Диспетчер файлов – программное обеспечение, управляющее размещением данных на страницах. Соответственно все операции производится с данными страницы.

Извлечь, добавить, заменить, удалить запись из страницы

  1. Как называется процесс как можно более близкого физического размещения на диске логически связанных между собой и часто используемых данных?