Язык SQL

Организация файлов записей переменной длины


Можно использовать для записей переменной длины те же подходы, что и для полей переменной длины, т.е. можно хранить запись в ограниченном текстовом представлении или в двоичном представлении с указанием длины.

При ограниченном текстовом представлении требуется, чтобы все поля были представлены в виде текстовых полей. Кроме того, выбранный в качестве разделителя записей символ не может появляться в представлении записи.

Существует множество стратегий, позволяющих гарантировать, что эти разделители и другие специальные символы не содержатся в текстовых полях. Например, в языке SQL символ одиночной кавычки внутри строки представляется двумя “идущими вместе” одиночными кавычками. Этот метод требует, чтобы за каждым настоящим разделителем следовал отличный от него символ. В HTML специальные символы типа “<” представляются строкой, начинающейся с “&”и заканчивающейся Символ меньше представляется строкой а амперсанд — строкой “&атр;”.

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

Операция считывания записи с указанием длины начинается со считывания длины. Затем указанное число байт считывается из файла и результаты помещаются в байтовый массив для декодирования и преобразования в значения полей согласно типу записи.

Операция записи для представления с указанием длины не может определить длину записи, пока объект не будет преобразован в его пс/гоковое представление. Здесь используются два подхода. Во-первых, можно записать ноль в поле длины, чтобы зарезервировать пространство, внести запись, а затем вернуться и перезаписать поле длины. Во-вторых, можно внести запись в байтовый массив, определить его длину, затем записать длину и массив байтов в файл. В дальнейших реализациях используется второй подход.

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