|
Программирование >> Реализация целостности данных
ЧАСТЬ 2 ироемщр;}ш>ше реявциовных систем баз данных придется предусмотреть механизм обновления данных, но это не так уж трудно. Можно привести и другие примеры данных, которые допустимо хранить локально: списки почтовых стран и регио- нальных отделений компании. Эти списки, как правило, достаточно компактны и обновляются относительно редко. Кроме того, пользователи част аются к этим данным. Решая вопрос, будет ли таб-храниться или на сетевом диске, руководствуются обычно именно этими соображениями; компактность таблицы, частота обновления данных, а также частота адения и число noJii.3o-вателей, обращающихся к данным. Очевидно, не имеет смысла размещать на локальных дисках компьютеров всех пользователей системы таблицу, к которой изредка обращается лишь системный администратор. А списки клиентов компании или списки студентов, напротив, не должны храниться локально. Данные в таких списках обновляются часто, и базы данных на сетевом ресурсе позволяет доставить пользователям возможность работать с последней версией базы. Еще один фактор, определяющий влияние схемы базы данных на производительность сети зоиание индексов. Упрощенно, индексы можно рассматривать как специальную небольшую таблицу, где все записи в определенном порядке. Эта таблица содержит только поля, записи в которых нужно упорядочить образом, и указатели на записи, хранящиеся в реальной таблице (рис. 10-4). СЁЛпегаЬгп Piamii Carnarvon Tigers Louisiana Fiery Hot Pepper SaucB =erth Pssties 65 . Fiery Hd\ Peppai Bs; 53 Perth Pasties 60 СапПеглЬе1 Pierrot ia Camarvnr Tigers New Orleans Cajun DsligMS Sdsj, IVIate ......* I3aipa!uraje Paylnva, Ltd. ............... .. Споре ratiyajje Qussoe Las Cabras Рас W-4. Индекс представляет собой специальную компактную таблицу, записи в которой отсортированы в определенном порядке ГЛАВА 101 Слема оаш даиныц; Следует пояснить, что подразумевается под термином указатель , если речь идет об индексе. Указатель в индексе не имеет ничего общего с указателем на объект или указателем на область памяти (эти термины широко используются в программировании). На самом деле. физическая реализация индексов гораздо сложнее, и соответствует приведенной мною модели лишь приближенно, но эту модель вполне можно считать рабочей. Более подробно об этом рассказывается в Microsoft Jet Database Engine Programmers Guide* - руководстве про программированию Microsoft Jet. Изменение физического порядка записей в базовой таблице при определении или изменении порядка сортировки, в большинстве случаев, задача слишком м. требуюшая больших затрат времени. Поэтому Microsoft Jet сортирует только файл индекса. Кроме существенного выигрыша в производительности, этот метод обеспечивает быстрый доступ к таблице с использованием различных ков сортировки, поскольку для каждой таблицы можно создать несколько индексов. В SQE Server существует класте;риьшмн<?ек(;. определяющий физический порядок записей в таблице. Для каждой таблицы может существовать не более одного кластерного индекса. Использование индексов позволяет существенно увеличить производительность системы при обработке данных. Часто Microsoft Jet выполняет сложные не к базе данных непос- редственно, а применяя только индекс. Даже для изолированных систем, не использующих сеть для доступа к данным, индексы существенно снижают время обработки данных, сокращая число операций чтения с локального диска. Для распределенных систем, данные передаются по сети, правильное использование индексов может стать критическим фактором, определяющим производительность. Приведу конкретный пример. В таблице Customers (Покупатели) содержится 100 000 записей, длина каждой - 1500 байтов. Требуется найти в базе данных запись, определенным усло- виям - запись, относящуюся к покупателю Джонс ракшн (Jones Construction), для которого известно значение идентификатора клиента Для этого нужно выполнить такой запрос: SELECT FROM Customers ERF CustomerlD JONSCON Если в таблице отсутствует индекс или первичный ключ, запрос выполняется следующим образом: механизм СУБД Microsoft Jet считает каждую из хранимых в базе данных записей, чтобы выбрать удов- ЧАСТЬ 2 ПроБкт 4рэаан№ реляциснных систем баз цапшх летворяющие критерию запроса. Это означает, что но сети передается около 150 Мб данных. Но если ноле Ci/,s?ome .D проиндексировано, явно или через объявление первичного ключа, механизм бач данных Microsoft Jet считывает только записи №кса, что означает передачу псего лиш иьких килобайтов. При этом нужная запись в базовой таблице оиределяется довольно быстро. Индексы могут увеличить производительность поистине ошелом-но следует что этот выигрыш отнюдь не дается да- ром. При индекса возникает дополнительная нагруз- ка на систему, поскольку при каждом добавлении или изменении за-иисей в базовой таблице Microsoft Jet обновляет индексы в ней. Как правило, эта дополнительная нагрузка невелика, и ее можно не принимать во внимание при проектировании системы. Однако чем больше индексов в одной таблице, тем существеннее влияние, оказываемое на производительность системы при обновлении данных. В конце концов, непродуманное индексов привести к ситуации, когда время, необходимое на поддержку высит за счет их использования. Двухуровневая архитектура В двухуровневой архитектуре база данных и механизм баз данных расположены на удаленное ютере. Каждый из них может нахо диться на одном компьютере или на разных. Одна база данных обязательно должна размещаться на одном компьютере; физически она может быть распределена между несколькими компьютерами, но логически такая система все равн танекя двухуровневой. Такую архитектуру можно реализовать только на основе SQL Server или другого сервера баз данных, например Oracle. При помощи механизма баз данных Microsoft Je aib ото невозможно. На первый взгляд, различие между базой данных, с которой пользователи работают но сети, и двухуровневой системой не так уж велико. Какая в сущности, разница, что использовать - Microsoft Jet на локальном или SQL Server на удаленное (бтере? Дело в том, что при работе с базой данных по сети все вычисления выполняются на локальном компьютере, а в двухуровневой системе часть вычислений выполняется а часть - на сервере баз данных. На рабочей станции обрабатываются события, вязанные с действиями пользователя, а удаленный компьютер управляет доступом к SQL Server выполняет все операции манипулирования с данными и отправляет результат на рабочую станцию. Поэтому двухуровневые СУБД называют также клиент-серверными системами (diem/ server systems).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |