- •Министерство образования и науки Российской Федерации
- •Цель лекции
- •План лекции
- •1 Происхождение вычислительных машин
- •2 Изучение алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Биты и их хранение
- •2 Оперативная память
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Устройства внешней памяти
- •3 Хранение и поиск файлов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление числовых значений
- •2 Хранение целых чисел
- •3 Хранение дробей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление текста
- •2 Представление изображений
- •Достоинства пиксельной графики
- •Недостатки пиксельной графики
- •Достоинства векторной графики
- •Недостатки векторной графики
- •3 Представление звука
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Сжатие изображений
- •2 Ошибки передачи данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Архитектура эвм
- •2 Связь процессора с другими устройствами
- •3 Другие архитектуры
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Машинный язык
- •2 Пример машинного языка
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Выполнение программы
- •2 Пример выполнения программы
- •3 Программы и данные
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Логические операции
- •2 Операции сдвига
- •3 Арифметические операции
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция операционных систем
- •2 Архитектура операционных систем
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие процесса
- •2 Управление процессами
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Классификация сетей
- •2 Сетевые протоколы*
- •3 Безопасность сетей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие алгоритма
- •2 Представление алгоритма
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Теория решения задач
- •2 Общие методы решения задач
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритм последовательного поиска
- •2 Управление циклами
- •3 Алгоритм сортировки методом вставки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритмы поиска и сортировки
- •2 Управление рекурсией
- •3 Разработка рекурсивных процедур
- •План лекции
- •1 Эффективность алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •2 Верификация программ
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция и классификация языков программирования
- •2 Концепции традиционного программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Процедурные единицы
- •2 Реализация языка программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Объектно-ориентированное программирование
- •2 Декларативное программирование
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структуры данных
- •Integer Scores (2.9).
- •2 Статические и динамические структуры
- •3 Указатели
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Массивы
- •2 Списки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структура и функции стека
- •2 Реализация стека
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Очереди
- •2 Деревья
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Пользовательские типы данных
- •Int Age;
- •2 Классы
- •Int *StackEntries;
- •3 Стандартная библиотека шаблонов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Роль операционной системы
- •2 Последовательные файлы
- •3 Вопросы программирования
- •0000000010000110
- •001100010011001100110100
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения индексации
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения хеширования
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Общие вопросы
- •2 Система управления базой данных
- •3 Поддержка целостности баз данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Модели баз данных
- •2 Реляционная модель баз данных
- •3 Объектно-ориентированные базы данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Интеллект и машины
- •2 Распознавание образов
- •3 Мышление
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Искусственные нейронные сети
- •2 Генетические алгоритмы
- •Контрольные вопросы
- •Невычислимые функции Цель лекции
- •План лекции
- •1 Основы машины Тьюринга
- •2 Невычислимая функция
- •3 Сложность задач
- •Листинг 1. Процедура MergeLists для объединения двух упорядоченных списков
- •Листинг 2. Алгоритм сортировки слиянием, реализованный в процедуре MergeSort
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Шифрование с открытым ключом
- •2 Модульная арифметика
- •Контрольные вопросы
- •Литература
- •Internet-ресурсы
2 Система управления базой данных
Типичная система базы данных состоит из двух уровней — прикладного уровня и уровня управления базой данных (рис. 2). Приложения отвечают за общение с пользователем (обычно с человеком, но иногда и с другим компьютером). Таким образом, именно они определяют внешние характеристики системы. Приложение может общаться с пользователем посредством диалога, состоящего из вопросов и ответов, или по сценарию заполнения пропусков данных в специальных формах. Оно может работать как в текстовом, так и в графическом (GUI) режиме.
Программное обеспечение не манипулирует данными напрямую. Фактическое управление базой данных осуществляется на другом прикладном уровне, называемом системой управления базой данных, СУБД (database management system — DBMS). После того как приложение определило, какое действие требуется пользователю, оно применяет СУБД как абстрактный инструмент для получения нужных результатов. Если запрос направлен на добавление или удаление данных, именно СУБД в действительности обновляет базу данных. Если запрос предназначен для получения информации, СУБД выполняет требуемый поиск.

Рисунок 2 – Концептуальные уровни базы данных
Разделение уровней приложений и СУБД имеет несколько преимуществ. Одно из них заключается в возможности создания и использования абстрактных инструментов, которые, как мы снова и снова убеждаемся, являются основной концепцией упрощения в разработке приложений. Если такие детали, как управление индексами, решение проблем переполнения и обновление указателей, изолированы внутри СУБД, разработку программного обеспечения можно существенно упростить. Более того, возьмем случай распределенной (distributed database) базы данных (базы данных, которая размещается на нескольких машинах в сети). Если бы не существовало СУБД, процедуры для своевременного отслеживания изменения фактического расположения различных частей базы данных пришлось бы поместить в приложения. Однако эти процедуры можно внедрить в хорошо спроектированную СУБД, а приложения разрабатывать без учета того, распределена ли база данных по многим машинам или она хранится на одном компьютере.
Распределенные базы данных. Как вы узнали, базы данных создавались для объединения и централизации информации. Однако с современной точки зрения базы данных рассматриваются как способ интеграции информации, которая может храниться на различных компьютерах в локальной сети или в Интернете. Например, международная корпорация может хранить и обслуживать записи о сотрудниках на соответствующих местных узлах, связывая эти записи по сети для создания распределенной базы данных — одной большой интегрированной базы, данные которой хранятся на различных машинах.
Распределенная база данных может содержать фрагментированные и/или реплицированные (дублированные) данные. Первый случай иллюстрируется предыдущим примером записей сотрудников, когда различных фрагменты базы данных записаны на разных машинах. Во втором случае дубликаты одного компонента базы данных хранятся в различных местах. Репликацию можно производить для сокращения времени, необходимого для получения информации. В обоих случаях возникает проблема, не свойственная более традиционным централизованным системам, а именно: как замаскировать распределенную природу базы данных, чтобы она работала как единая система, и как гарантировать идентичность реплицированных частей базы данных при каждом обновлении. В свою очередь, изучение распределенных баз данных — это популярная область исследований компьютерных технологий.
Второе преимущество отделения приложений от СУБД состоит в том, что такая организация позволяет управлять доступом к базе данных. Приняв, что любой доступ к базе данных будет производиться только через СУБД, мы определяем, что именно она будет реализовывать ограничения, обусловленные различными подсхемами. В частности, СУБД может использовать всю схему базы данных для своих внутренних нужд и одновременно ограничивать приложение так, чтобы каждый пользователь оставался в рамках определенной для него подсхемы.
Еще одна причина разделения пользовательского интерфейса и фактического управления данными на два различных программных уровня — это достижение независимости данных (data independence), то есть возможности изменить организацию базы данных, не меняя приложение. Например, отделу кадров понадобится добавить во все записи дополнительное поле, указывающее, будет ли сотрудник принимать участие в новой корпоративной программе по страхованию здоровья. Если бы приложение обменивалось данными непосредственно с базой данных, такое изменение формата данных потребовало бы модификации всех приложений, работающих с этой базой. В результате изменения, инициированные в отделе кадров, привели бы к изменению и в программе обработки платежных ведомостей, и в программе печати адресных наклеек для информационного бюллетеня компании.
Разделение приложений и СУБД устраняет необходимость перепрограммирования. Для реализации в базе данных изменений, необходимых одному пользователю, нужно модифицировать только общую схему и подсхемы пользователей, которых эти изменения касаются. Подсхемы всех остальных пользователей не меняются, поэтому приложения, работающие с неизмененными подсхемами, модифицировать не требуется.
