Язык SQL

Представление реляционных таблиц в виде файлов


Используя определенные в предыдущих разделах методы, можно создать файл для хранения множества объектов. Файл, содержащий объекты одного типа, очень похож на реляционную таблицу, т.е. каждый объект файла представляет одну строку таблицы. В этом сайтерассматривается, как можно представить таблицы в виде файлов и какое влияние это представление оказывает на производительность реляционных операций.

Представить реляционную таблицу с помощью файла можно следующим образом.

1. Определяется класс объекта, значение которого представляет строку таблицы.

2. Создается файл для хранения объектов.

3. Для каждой строки таблицы создается объект и записывается в файл.

Можно Ьоступить по-другому, определив единый класс, который может хранить строку любой таблицы.

Реляционные операции можно представить как операции над этими файлами. Например, операцию выборки можно выполнить, открыв файл таблицы для ввода, а затем создав новый файл для хранения вывода. Далее записи таблицы считываются по очереди. После того как определенная строка загружается в объект памяти, к нему можно применить критерий отбора. Если объект удовлетворяет критерию отбора, он записывается в файл вывода. Когда все записи входного файла будут считаны, выходной файл будет содержать таблицу, являющуюся результатом операции выборки. Аналогично, операцию проекции можно выполнить, считывая записи и выводя только их поля, включенные в проекцию.

К сожалению, некоторые реляционные операции будут очень неэффективными, если их выполнять, используя такое последовательное представление файлов. Предположим, что в операции выборки указано определенное значение первичного ключа таблицы: select  from Movie where id=123. Даже если данному критерию удовлетворяет единственная запись, придется последовательно считывать файл до тех пор, пока эта запись не будет найдена. Рассматриваемая до сих пор структура файла не поддерживает непоследовательный доступ к файлам. Даже если точно знать местоположение определенной записи в файле, все равно не существует способа считать ее, не считав предварительно предшествующие ей записи.

Известно, что доступ к любому байту файла можно получить за одно и то же время. К сожалению, рассматриваемая до сих пор файловая структура поддерживает только последовательный доступ. Чтобы предоставить возможность прямого доступа к определенным объектам файлов, необходимо добавить дополнительный уровень организации. Ранее уже показывалось, как файлы можно организовать в виде полей, представляющих значения. Теперь нужно организовать эти поля в записи.

Комментарии закрыты