Теория СУБД

Какие бывают базы данных? В большинстве случаев решения программистов ограничиваются двумя типами: локальная и клиент-серверная. В первом случае получается шампунь "все-в-одном". Во втором мы разделяем данные и клиентское приложение и получаем два уровня.

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

ЛОКАЛЬНАЯ БАЗА

Самая простая база данных — ло­кальная. В этом случае база и прог­рамма расположены на одном компь­ютере. Соединение с файлом базы данных происходит через специаль­ный драйвер или напрямую. Драйвер умеет обрабатывать только простые запросы SQL-стандарта 1992 года и предоставлять данные программе или сохранять изменения в таблице. Все остальные манипуляции могут выпол­няться только программой. Таким об­разом, логика, данные и приложение работают как единое целое и не могут быть разделены.

Яркими и наиболее распространен­ными представителями такого рода баз являются Dbase (файлы с расши­рением .dbf), Paradox (расширение .db) и Access (расширение .mdb). Форматы Dbase и Paradox — это даже не базы данных, а таблицы, потому что в одном файле может храниться только одна таблица данных. Индек­сы, ускоряющие поиск и осуществля­ющие сортировку, находятся в от­дельных файлах. Таким образом, од­на база данных может состоять из множества файлов, и это иногда при­водит к определенным проблемам при поставке приложения конечному пользователю.

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

Самый главный недостаток локаль­ных баз данных, как говорит юморист М. Задорнов, — "они тупые". Да-да. Качество и скорость доступа напря­мую зависит от драйвера. В больши­нстве из них не было оптимизаторов SQL-запросов и какого-либо кеширо-вания. Возможности железа исполь­зовались минимально, поэтому на больших базах запросы выполняют­ся крайне медленно.

Таблицы Dbase и Paradox были раз­работаны слишком давно, и их самое слабое звено — это индексы. В этих таблицах нет транзакций и соответ­ствующего журнала. После добавле­ния новой записи, если драйвер не ус­пел обработать изменения в индексах и произошла ошибка (пропал свет или произошел зависон), то индекс рушится и для восстановления прихо­дится использовать специальные ути­литы или переформировывать индек­сы. В базах Access у меня таких проб­лем не было, потому что в них индек­сы защищены лучше.

Что такое разрушенный индекс? Ин­декс — это колонка, в которой все зна­чения строк обязательно уникальны. Чаще всего для этих целей использу­ется простой счетчик. Допустим, пользователь добавил запись и счет­чик присвоил ей значение 195, но са­мо значение счетчика не изменилось. При добавлении следующей записи счетчик снова пытается втулить нам число 195, но так как такая запись уже есть, происходит ошибка. Это и есть нарушение индекса, и лечить его достаточно просто (но нудно) — пере­формировать индекс.