Введение
Файловая система, в которой данные хранятся в виде наборов записей.
В информатике файловая система, ориентированная на записи, – это файловая система, где данные хранятся как наборы записей. Это отличается от байтовой файловой системы, где данные рассматриваются как неформатированный поток байтов. Существует несколько различных возможных форматов записей; детали зависят от конкретной системы. В общем случае форматы могут быть фиксированной или переменной длины, с различными физическими организациями или механизмами дополнения; метаданные могут быть связаны с файловыми записями для определения длины записи, либо данные могут быть частью самой записи. Могут быть предусмотрены различные методы доступа к записям, например, записи могут извлекаться последовательно, по ключу или по номеру записи.
Происхождение и характеристики
Файловые системы, ориентированные на записи, часто ассоциируются с операционными системами мейнфреймов, такими как OS/360 и последующие версии, DOS/360 и последующие версии, и операционными системами среднего класса, такими как RSX 11 и VMS. Однако они возникли раньше в программном обеспечении, таком как система управления вводом/выводом (IOCS). Записи, иногда называемые логическими записями, часто записываются вместе в блоках, иногда называемых физическими записями; это норма для устройств прямого доступа и магнитных лент, но файлы на устройствах обработки пакетных данных обычно не блокируются, то есть в блоке содержится только одна запись. Файловые системы, ориентированные на записи, могут поддерживаться на носителях, отличных от устройств прямого доступа. Колода перфокарт может рассматриваться как файл, ориентированный на записи. Магнитная лента является примером носителя, который может поддерживать записи фиксированной или переменной длины. В файловой системе, ориентированной на записи, программист определяет структуру записей, которые могут использоваться в файле. Все прикладные программы, обращающиеся к файлу – будь то добавление, чтение или обновление записей – должны понимать структуру этих записей. В DOS/360, OS/360 и их преемниках нет ограничений на состав данных в записи, то есть отсутствует символ-разделитель; это не всегда верно для других программ, например, для определенных типов записей в RCA File Control Processor (FCP) на 301, 501, 601 и 3301. Файл создается, когда файловой системе отправляется запрос на его создание. В этом запросе может быть включена информация о файле, например, указание на то, что файл содержит записи фиксированной длины (все записи одинакового размера) и их размер. Альтернативно, может быть указано, что записи имеют переменную длину, а также максимальную длину записи. Дополнительно может быть указан коэффициент блокировки, тип данных (двоичный или текстовый) и максимальное количество записей. Может быть разрешено чтение только начала записи; следующее последовательное чтение возвращает следующий набор данных (запись), который автор намеревался сгруппировать. Также может быть разрешена запись только начала записи. В этих случаях запись дополняется нулями или пробелами, в зависимости от того, распознается ли файл как двоичный или текстовый. Некоторые операционные системы требуют включения в программу библиотечных подпрограмм, специфичных для формата записи. Это означает, что программа, предназначенная для чтения файла записей переменной длины, не сможет прочитать файл с фиксированной длиной. Таким образом, эти операционные системы должны предоставлять утилиты файловой системы для преобразования файлов из одного формата в другой. Это может потребовать копирования файла (что требует дополнительного места для хранения, времени и координации). Другие операционные системы включают различные подпрограммы и связывают соответствующую подпрограмму, основанную на организации файла, во время выполнения. В любом случае, для обеспечения целостности файла необходимо предоставить значительный объем защищенного кода для управления записями. Альтернативой файлу, ориентированному на записи, является потоковый файл, в котором файловая система рассматривает файл как неструктурированную последовательность байтов. Приложения могут, но не обязаны, накладывать структуру записей. Такой подход значительно уменьшает размер и сложность библиотеки и сокращает количество утилит, необходимых для обслуживания файлов. Распространенной практикой для текстовых файлов, представленных в виде потоков, является использование символа новой строки для разделения или завершения записей, обычно CR, CRLF или LF. К сожалению, время процессора, необходимое для поиска символа-разделителя записи, значительно, и исключение шаблона разделителя из данных часто нежелательно. Альтернативным решением является включение поля длины в каждую запись. Приложение-автор отвечает за наложение структуры записи, а приложение-читатель – за разделение записей.
Преимущества и издержки
У файла, ориентированного на записи, есть несколько преимуществ. После того, как программа записывает набор данных в виде записи, программа, читающая эту запись, воспринимает эти данные как единый набор. Часто файл содержит несколько связанных записей последовательно; после того, как программа прочитает начало последовательности, следующее последовательное чтение вернет следующий набор данных (запись), который автор намеревался сгруппировать вместе. Другое преимущество заключается в том, что запись имеет длину и обычно нет ограничений на состав битовых шаблонов записи данных, то есть отсутствует символ-разделитель. Обычно использование файлов, ориентированных на записи, связано с определенными затратами. Для записей фиксированной длины некоторые записи могут содержать неиспользуемое пространство, а для записей переменной длины поле-разделитель или поле длины занимают место. Блоки переменной длины могут иметь накладные расходы из-за разделителей или полей длины. Кроме того, существует накладной расход, обусловленный устройством. На магнитной ленте накладной расход обычно представлен промежутком между записями. На устройстве прямого доступа с секторами фиксированной длины в последнем секторе блока может быть неиспользуемое пространство. На устройстве прямого доступа с физическими записями переменной длины этот накладной расход обычно представлен метаданными и промежутками между записями. В файле, состоящем из записей переменной длины, определяется максимальная длина записи для определения размера метаданных длины, связанных с каждой записью. Важным преимуществом файловых систем, ориентированных на записи, является то, что они абстрагируют файлы, которые ранее хранились на бумаге. Запись может содержать данные, связанные с конкретным объектом, например, зданием, контактом, сотрудником, деталью, площадкой. Вторым стимулом для идеи ориентации на записи является то, что в некотором смысле это более естественная ориентация для постоянного хранения на энергонезависимом, но медленном физическом устройстве хранения. Большинство физических устройств хранения данных могут обмениваться информацией только блоками. Значительная часть современных ядер операционных систем и связанных с ними драйверов устройств посвящена сокрытию естественно структурированной и ограниченной (и в некотором смысле блок является просто физической записью) природы физических устройств хранения. Не случайно, что файловые системы, ориентированные на записи, возникли раньше в истории вычислительной техники, чем файловые системы, ориентированные на потоки байтов, когда возможности абстракции были гораздо меньше.