Что такое структурированные файлы с индексным доступом и как с ними работать
Приветсвую!
Возник вопрос с тем что такое структурированные файлы с индексным доступом. Дело в том что мне нужно создать два файла(один с расширением .fl, а другой с расширением .ind). И вот вопрос в том как для начала их создать, а второй как их открыть и наполнить информацией(или же это можно сделать без открытия файлов такого формата). В условии задачи пишется о том что индексированный файл состоит из двух частей(собственно говоря из файла формата .fl и файла формата .ind). При этом упоминается и о том что файл формата .ind это индексная таблица которая содержит какую то информацию о предметной области.
Цель работы: Научится работать из структурированными файлами на основе лишь только языка Си
Окончательная формулировка вопроса: Как создать файлы подобного типа(софт или командная строка или еще что-то) и как наполнить эти файлы какими нибудь тестовыми данными
Ответы (1 шт):
что такое структурированные файлы с индексным доступом.
Ваш препод, наверное, мой ровесник, а может даже - старше :-)
То, о чём Вы говорите, это изобретение фирмы IBM. Они появились в IBM OS/360 в шестидесятых годах прошлого века.
Идея заключается в чём:
- В отсортированном файле можно легко и быстро найти нужную запись хотя бы методом деления пополам.
- В отсортированном файле очень трудно выполнять операции вставки/удаления записей. Каждый раз приходится сдвигать (в среднем) половину файла.
- Вот и была предложена идея ISAM - индексно-последовательный метод доступа.
Берём диск. На каждой дорожке резервируем (к примеру) 50% пустого места. Заливаем данные (отсортированные!) в рабочие области на всех дорожках подряд. Отдельно создаём индексный файл (отсортированный!) в котором для каждой дорожки прописано значение минимального индекса записей на этой дорожке.
Таким образом, когда нужно найти какую-то запись по ключу, то поиск идёт в два этапа:
- В индексном файле ищем дорожку
- На дорожке ищем запись
Вставляем новые записи в область расширения соответствующей дорожки.
Дураку понятно, что при интенсивной работе, область расширения рано или поздно закончится. Предусматривалось два варианта:
- Попытаться уместить новые записи в основной области, заново отсортировав все записи на дорожке. С учётом удалённых записей это могло сработать.
- Не помещающиеся записи перенести в т.н. "Индекс второго уровня".
Я не буду более подробно распространятся, так как с появлением СУБД эта технология приказала долго жить... И было это очень давно.