Эти типы должны быть выделены в код программы верхнего уровня с помощью стандартных объектов, называемых компонентами доступа к данным (Data Access Components), или объектами доступа к данным (Data Access Objects, или просто DAO).
Модель на плоских файлах
Идея этой модели совершенно проста: данные можно хранить в двоичных или в текстовых файлах. Модель состоит из текстуального описания структуры данных и имен, присваиваемых файлам с данными. Существуют приложения, в которых такой тип модели данных весьма полезен. Например, крупные поисковые механизмы на плоских файлах с индексами или хешированием работают гораздо быстрее и проще обслуживаются, чем огромные хранилища данных.
В этой модели может использоваться широкий диапазон файловых структур, от обычных последовательных файлов до b-деревьев, Ь*-деревьев, Ь+- деревьев, хеш-таблиц, биномиальных куч, структуры объединения-поиска и многие другие.
Рассмотрим конструкцию приложения для голосования в Интернете. Пусть есть несколько опросов и ряд вариантов в каждом из них. Модель данных на плоских файлах может выглядеть так:
Файл Polls:
Двоичный файл фиксированной длины. Название опроса: 40 байт. Вопрос: 250 байт.
Файл Options:
Двоичный файл фиксированной длины. Название опроса: 40 байт. Вариант: 80 байт. Голоса: 4 байт.
Файл
Двоичный файл переменной длины.
Структура: длина имени (1 байт) + имя + длина комментария (2 байт) + комментарий Текущий опрос:
Двоичный файл фиксированной длины, Название опроса: 40 байт.
Чтобы узнать, какое голосование является текущим, можно открыть файл Текущий опрос, прочесть 40 байт и получить Название опроса. После этого можно найти вопрос последовательным поиском названия опроса в файле
Таким же последовательным поиском можно получить все варианты. Голосование заключается только в том, чтобы добавить единицу к выбранному варианту. Комментарии вводятся путем дописывания данных к файлу комментариев. А вот удаление данных - трудная задача. Сначала надо пометить удаляемые данные пробелами в названии опроса в опросе или варианте, а затем создать процедуру упаковки, которая перепишет файл, физически удалив записи, помеченные как удаленные. Подробнее о развитых файловых структурах можно прочесть в книге «File Structures and Object Oriented Approaches in C++» издательства Addison-Wesley (ISBN 0-201874-01-6).
Модель данных, основанная на плоских файлах, действительно полезна при работе с большими объемами данных или запросами, которые нельзя подогнать под стандартные запросы SQL или XML. Например, такой поисковый механизм, как Google (http://www.google.com/)%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d1%83%d0%b5%d1%82"> http://www.google.com/)использует модель данных на плоских файлах для хранения информации, собираемой из Интернета. Дополнительное время, которое тратится на разработку, кодирование и сопровождение программ, управляющих этой информацией, компенсируется превосходной производительностью, отличающей это приложение.