Язык SQL

Файлы записей


Для поддержки организации файлов в виде записей необходимо следующее. Во- первых, нужно иметь возможность записывать и считывать записи за один шаг. Во- вторых, нужно иметь возможность перемещаться в определенное место файла перед тем, как производить чтение или запись. Первое требование удовлетворяется путем определения интерфейсов для чтения и записи, а второе — с помощью использования класса RandomAccessFile.

Как правило, файл организуется в виде последовательности записей. Записи могут иметь одинаковую или различную длину. Файл записей фиксированной длины — это файл, все записи данных в котором имеют одинаковую длину. Файл записей переменной длины содержит записи различных размеров.

Одним из преимуществ файла записей фиксированной длины является то, что адрес записи можно вычислить по ее индексу. Смещение записи от начала файла находится путем умножения индекса записи на ее длину. Если индекс интересующей записи известен, можно подойти прямо к этой записи в файле. Такое вычисление невозможно выполнить для файлов записей переменной длины. В них, чтобы найти определенную запись, необходимо запомнить ее адрес или считывать все записи, пока нужная запись не будет найдена.

Записи фиксированной длины не увеличивают скорость доступа к определенным записям, так как быстрый доступ зависит от знания индекса записи. Запоминание индекса записи практически так же сложно, как запоминание ее точного адреса. Чтобы запомнить любое из этих значений, оно должно храниться в некоторой структуре данных.

Другое очевидное преимущество файлов записей фиксированной длины проявляется, когда файлы хранятся в отсортированном виде. При фиксированной длине записей можно осуществлять двоичный поиск файла для нахождения записи с определенным ключом: вычисляется адрес средней записи файла, производится чтение этой записи, а затем процесс продолжается для предшествующих ей или следующих за ней записей в зависимости от значения ее ключа. При этом нужно рассмотреть в среднем log2(n) записей для содержащего п записей файла. Однако если файл содержит 1,000,000 записей, то двоичный поиск потребует считывания порядка 20 записей, это слишком много, чтобы можно было считать данную стратегию эффективной.

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