![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Логический ввод-вывод предоставляет приложениям и пользователям доступ к записям.
Метод доступа
Наиболее близкий пользователю уровень файловой системы. Он обеспечивает стандартный интерфейс между приложениями и файловыми системами и устройствами, содержащими данные.
Различные методы доступа отражают различные структуры файлов и различные пути доступа и обработки данных.
Таким образом, файловая система играет роль промежуточного слоя, экранизирующего все сложности физической организации долговременного хранилища данных и создающего для программы более простую модель – логическую модель этого хранилища. Кроме того, она представляет набор удобных в использовании команд для манипулирования файлами.
В общем случае данные, содержащиеся в файле, имеют некоторую логическую структуру, которая показывает, как организован файл.
Знание структуры файла необходимо для того, чтобы правильно осуществлять его обработку.
Могут быть две ситуации:
1. Поддержание структуры данных целиком возлагается на приложения
2. В поддержании структуры файла определенная роль отводится файловой системе
В первом случае, когда все действия, связанные со структуризацией и интерпретацией файл, целиком относятся к ведению приложения, файл представляется файловой системе неструктурированной последовательностью данных.
В этом случае первая модель файла – поток байт. Подобная модель широко используется в современных ОС, а первоначально стала использоваться в Unix. Неструктурированная модель файла позволяет легко организовать разделение файла между несколькими приложениями, поскольку разные приложения могут по-своему структурировать и интерпретировать разные данные, содержащиеся в файлах.
Другая модель файла – структурный файл. В этом случае поддержание структуры файла поручается файловой системе. Файловая система видит файл как упорядоченную последовательность логических записей. В этом случае файловая система предоставляет приложению доступ к записи, а вся дальнейшая обработка данных, содержащихся в этой записи, выполняется приложением.
Известно пять фундаментальных способов организации файлов:
· смешанный файл;
· последовательный файл;
· индексно-последовательный файл;
· индексируемый файл;
· файл прямого доступа.
При выборе способа организации файла нужно учитывать несколько критериев:
· быстроту доступа;
· легкость обновления;
· экономность хранения;
· простоту обслуживания;
· надежность.
Смешанный файл. Это наименее сложная форма организации файла. Данные накапливаются в порядке поступления, когда запись состоит из одного пакета данных. Записи могут иметь различные или одинаковые поля, расположенные в различном порядке (рис. 4.12). Каждое поле описывает само себя, включая как имя, так и значение. Длина каждого поля должна быть указана явно либо посредством применения разделителя.
Поскольку смешанный файл не имеет никакой структуры, то доступ к записи осуществляется полным перебором всех записей файла. Смешанные файлы используются в том случае, когда данные накапливаются и сохраняются перед обработкой, или если данные неудобны для организации. Файлы этого типа рационально используют дисковое пространство, хорошо подходят для полного набора. Обновление записей достаточно сложно, также как и вставка записи.
Последовательный файл. Для записей используется фиксированный формат. Все записи имеют одинаковую длину (но иногда и не одинаковую) и состоят из одинакового количества полей фиксированной длины, организованных в определенном порядке (рис. 4.13). Поскольку длина и позиция каждого поля известны, то сохранению подлежат только значения полей. Атрибутами файловой структуры является имя и длина каждого поля.Одно определенное поле (или несколько полей) называется ключевым. Оно однозначно идентифицирует запись, так как это поле различно для каждой записи. Более того, записи сохраняются в «ключевой» последовательности: в алфавитном порядке для текстового ключа и в числовом - для числового. Последовательные файлы часто используются пакетными приложениями и обычно являются оптимальным вариантом, если эти приложения выполняют обработку всех записей. Удобно и то, что такой файл можно хранить как на диске, так и на магнитном диске. Для диалоговых приложений последовательный файл малоэффективен, поскольку для нахождения нужной записи требуется последовательный перебор записи файла. Правда, если в оперативную память загрузить весь файл, возможен более эффективный метод поиска. Дополнения к файлу или изменения в записях создают проблемы.
Обычно последовательный файл сохраняется с последовательной организацией записей внутри блока, т. е. физическая организация файла в точности соответствует логической. Новые записи размещаются в отдельном смешанном файле, называемом журнальным файлом или файлом транзакции. Периодически в пакетном режиме выполняется слияние основного и журнального файлов в новый файл с корректной последовательностью ключей.
Альтернативной организацией может быть физическая организация в виде списка с использованием указателей. В каждом физическом блоке сохраняется одна или несколько записей, и каждый блок содержит указатель на следующий блок. Для вставки новых записей достаточно изменить указатели, и нет необходимости в том, чтобы новые записи занимали определенную физическую позицию. Это удобство достигается за счет определенных накладных расходов и дополнительной работы. Если в последовательном файле записи имеют одну и ту же длину, то можно вычислить адрес требуемой записи по ее номеру, номеру текущей записи и длине записи. Если записи имеют переменную длину, такой подход невозможен.
Индексно-последователъный файл. Одним из методов преодоления недостатков последовательного файла является индексно-последовательная организация файла. В этом случае файл состоит из трех частей (файлов): главный файл, содержащий записи с последовательно идущими ключами, индексный файл, содержащий индексное поле и указатель в главный с ключами, файл переполнения (рис. 4.14).
Для поиска нужной записи по ее ключу сначала выполняется поиск в индексном файле. После того как в нем найдено наибольшее значение ключа, которое не превышает искомое, продолжается поиск в главном файле. Например, пусть последовательный файл (главный) содержит 1 млн. записей. Для поиска определенного ключевого значения необходимо в среднем 0,5 млн. операций доступа к записям. Если создать индексный файл, содержащий 1000 элементов, то потребуется в среднем 500 операций доступа к индексному файлу, после чего еще нужно в среднем 500 операций доступа к главному файлу. В результате средняя длина поиска уменьшается с 0,5 млн. до 1000. Еще лучший результат можно получить, используя многоуровневую индексацию. При этом нижний уровень индексного файла рассматривается как последовательный файл, для которого создается индексный файл верхнего уровня.
Дополнения к файлу обрабатываются следующим образом. В каждой записи главного файла содержится дополнительное поле, невидимое для приложения и являющееся указателем на файл переполнения. Если в файле производится вставка новой записи, она добавляется в файл переполнения. Запись в главном файле, непосредственно предшествующая новой записи в логической последовательности, обновляется и указывает на новую запись в файле переполнения. Время от времени выполняется слияние индексно-последовательного файла с файлом переполнения.
Индексированный файл. Индексно-последовательный файл сохраняет одно ограничение последовательного файла: эффективная работа с файлом ограничена работой с ключевым полем. Если необходимо производить поиск записи по какой-либо иной характеристике, отличной от ключевого поля, то оказываются непригодными обе организации последовательного файла, в то время как в некоторых приложениях эта гибкость крайне желательна.
Для достижения гибкости необходимо использование большого количества индексов, по одному для каждого типа поля, которое может быть объектом поиска. В обобщенном индексированном файле доступ к записям осуществляется только по их индексам. В результате в размещении записей нет никаких ограничений до тех пор, пока указатель, по крайней мере, в одном индексе ссылается на эту запись. Кроме того, в таком файле легко реализуются записи
переменной длины.
Используется два типа индексов. Полный индекс содержит по одному элементу для каждого типа записей главного файла. Сам по себе индекс организовывается в виде последовательного файла для облегчения поиска. Частный индекс содержит элементы для записей, в которых имеется интересующее пользователя поле. При добавлении новой записи в главный файл необходимо обновлять все индексные файлы.
Индексированные файлы используются теми приложениями, в которых время доступа к информации является критической характеристикой и редко требуется обработка всех записей в файле.
Файл прямого доступа. Такой файл использует возможность прямого доступа к блоку с известным адресом при хранении файлов на диске. В каждой записи в этом случае также имеется ключевое поле.
Дата публикования: 2014-11-04; Прочитано: 512 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!