
- •Информационное обеспечение систем управления
- •1. Информационные системы и базы данных (лекция 1)
- •1.1. Понятие информационной системы, информационное обеспечение
- •1.2. Понятие базы данных
- •1.3. Понятие системы управления базами данных
- •1.3.1. Обобщенная архитектура субд
- •Предметная область
- •1.3.2. Достоинства и недостатки субд
- •1.4. Категории пользователей базой данных
- •1.4.1. Общая классификация пользователей бд
- •1.4.2. Администратор базы данных
- •1.4.3. Разделение функций администрирования
- •2. Проектирование баз данных (лекция 2)
- •2.1. Жизненный цикл информационной системы
- •2.2. Подходы и этапы проектирования баз данных
- •2.2.1. Цели и подходы к проектированию баз данных
- •«Описание предметной области» ↔ «схема внутренней модели базы данных».
- •2.2.2. Этапы проектирования баз данных
- •3. Архитектуры субд (лекции 3-4)
- •3.1. Телеобработка
- •3.2. Файловый сервер
- •3.3. Технология «клиент/сервер»
- •3.4. Понятие независимости данных
- •4. Инфологическое проектирование базы данных (лекции 5-6)
- •4.1. Модель «сущность-связь»
- •4.2. Классификация сущностей, расширение er-модели
- •4.3. Проблемы er-моделирования
- •5. Выбор субд (лекция 7)
- •5.1. Метод ранжировки
- •5.2. Метод непосредственных оценок
- •5.3. Метод последовательных предпочтений
- •5.4. Оценка результатов экспертного анализа
- •6. Даталогические модели данных (лекции 8-9)
- •6.1. Иерархическая модель
- •6.2. Сетевая модель
- •6.3. Реляционная модель
- •6.4. Достоинства и недостатки даталогических моделей
- •7. Физическая организация данных в субд (лекции 10-11)
- •7.1. Списковые структуры
- •7.1.1. Последовательное распределение памяти
- •7.1.2. Связанное распределение памяти
- •7.2. Модель внешней памяти
- •7.3. Методы поиска и индексирования данных
- •7.3.1. Последовательный поиск
- •7.3.2. Бинарный поиск
- •7.3.3. Индекс - «бинарное дерево»
- •7.3.4. Неплотный индекс
- •7.3.5. Плотный индекс
- •3.3.6. Инвертированный файл
- •8. Внутренний язык субд (лекции 12-13)
- •8.1. Теоретические языки запросов
- •8.1.1. Реляционная алгебра
- •8.1.2. Реляционное исчисление кортежей
- •8.1.3. Реляционное исчисление доменов
- •8.1.4. Сравнение теоретических языков
- •8.2. Определение реляционной полноты
- •8.3. Введение в язык sql
- •8.3.1. Краткая история языка sql
- •8.3.2. Структура языка sql
- •8.3.3. Типы данных sql
- •9. Распределенные базы данных и субд (лекция 14)
- •9.1. Основные определения, классификация распределенных систем
- •9.2. Преимущества и недостатки распределенных субд
- •9.3. Функции распределенных субд
- •9.4. Архитектура распределенных субд
- •9.5. Разработка распределенных реляционных баз данных
- •9.5.1. Распределение данных
- •9.5.2. Фрагментация
- •9.5.3. Репликация
- •9.5.3.1. Виды репликации
- •9.5.3.2. Функции службы репликации
- •9.5.3.3. Схемы владения данными
- •9.5.3.4. Сохранение целостности транзакций
- •9.5.3.5. Моментальные снимки таблиц
- •9.5.3.6. Триггеры базы данных
- •9.5.3.7. Выявление и разрешение конфликтов
- •9.6. Обеспечение прозрачности
- •9.6.1. Прозрачность распределенности
- •9.6.2. Прозрачность транзакций
- •9.6.3. Прозрачность выполнения
- •9.6.4. Прозрачность использования
- •10. Защита и секретность данных. (лекции 15-16)
- •10.1. Понятие информационной безопасности. Основные составляющие
- •10.1.1. Понятие информационной безопасности
- •10.1.2. Основные составляющие информационной безопасности
- •10.2. Распространение объектно-ориентированного подхода на информационную безопасность
- •10.2.1. Основные понятия объектно-ориентированного подхода
- •10.2.2. Применение объектно-ориентированного подхода к рассмотрению защищаемых систем
- •10.3. Наиболее распространенные угрозы
- •10.3.1. Основные определения и критерии классификации угроз
- •10.3.2. Наиболее распространенные угрозы доступности
- •10.3.3. Некоторые примеры угроз доступности
- •10.3.4. Основные угрозы целостности
- •10.3.5. Основные угрозы конфиденциальности
- •10.4. Административный уровень информационной безопасности
- •10.4.1. Основные понятия
- •10.4.2. Политика безопасности
- •10.4.3. Программа безопасности
- •10.5. Управление рисками
- •10.5.1. Основные понятия
- •10.5.2. Подготовительные этапы управления рисками
- •10.5.3. Основные этапы управления рисками
- •10.6. Процедурный уровень информационной безопасности
- •10.6.1.Основные классы мер процедурного уровня
- •10.6.2. Управление персоналом
- •10.6.3. Физическая защита
- •10.6.4. Поддержание работоспособности
- •10.6.5. Реагирование на нарушения режима безопасности
- •10.6.6. Планирование восстановительных работ
- •10.7. Основные программно-технические меры
- •10.7.1. Основные понятия программно-технического уровня информационной безопасности
- •10.7.2. Особенности современных информационных систем, существенные с точки зрения безопасности
- •10.7.3. Архитектурная безопасность
7.1.1. Последовательное распределение памяти
Последовательное распределение – простой и естественный способ хранения линейного списка. В этом случае узлы списка размещаются в последовательных элементах памяти (рис.3.1) [17].
При последовательном распределении вектор данных логически отделен от описания структуры хранимых данных. Например, если структура данных представляет собой линейный список (файл записей фиксированной длины), то описание структуры хранится в отдельной записи и содержит:
а) N – размер вектора данных, т.е. количество элементов списка записей;
б) т – размер элемента списка, т.е. размер записи, например, в байтах;
в) β – адрес базы, указывающий на начало вектора данных в памяти.
Рис. 3.1. Пример последовательного распределения памяти для представления линейного списка
В этом случае адрес каждой записи можно вычислить с помощью адресной функции, отображающей логический индекс, идентифицирующий запись в структуре, в адрес физической памяти
В случае линейного списка адресная функция состоит из операций смещения и масштабирования. Любые отношения, которые можно выразить на языке целых чисел, можно истолковать как отношения между элементами памяти, получая при этом всевозможные варианты структур.
В качестве примера (из [17]) рассмотрим реализацию с помощью линейного списка при последовательном распределении памяти для логической структуры типа регулярного двоичного дерева (рис. 3.2). Идея способа заключается в том, что начиная с элемента памяти α(1), делают его корнем дерева, размещают там данные, соответствующие узлу У1. В элементах памяти α(2) и α(3) размещают непосредственных потомков узла У1 – узлы У2 и У3, и т.д. В общем случае, непосредственные потомки узла Уk размещаются по адресам: α(2k) и α(2k+1). Адресная функция имеет вид
где k – номер узла древовидной структуры; β – базовый адрес; т – размер элемента памяти, который требуется для хранения данных узлов дерева (каждый узел представляет собой запись фиксированной длины). По дереву, которое при этом получается, можно двигаться в обоих направлениях, так как от узла Уk можно перейти к его потомкам, удвоив k (или удвоив k и прибавив единицу). Можно двигаться к узлу, являющемуся исходным для узла Уk, разделив k пополам и отбросив дробную часть. Адрес соответствующего узлу элемента памяти определяется по адресной функции.
Рассмотрим еще один способ реализации, который применим только для двоичных деревьев. Если для представления двоичного дерева используется вектор памяти от элемента i до элемента j включительно, то корень дерева размещается в элементе памяти с адресом
где – знак округления до ближайшего меньшего целого.
Рис. 3.2. Пример реализации структуры типа регулярного двоичного дерева с помощью линейного списка
Корень дерева размещается в середину вектора. В элементах памяти от i-гo до (m-1)-гo включительно размещается левое поддерево. В элементах памяти от (m+1)-го до j-го включительно размещается правое поддерево. Аналогично процесс повторяется для размещения каждого поддерева. Приведенный способ позволяет реализовать двоичное сбалансированное дерево.
Существует ряд других способов представления древовидных структур [4, 13, 17]. С помощью приемов, основанных на свойствах целых чисел, можно с помощью последовательного распределения организовать в памяти некоторые сетевые структуры. Однако для представления сложных сетевых структур требуются более гибкие методы построения в памяти ЭВМ, которые невозможно получить с помощью последовательного распределения памяти. В этом случае используется связанное распределение памяти.