Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы данных проектирование и реализация. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
7. ФИЗИЧЕСКОЕ ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ
Представление информации на логическом уровне позволяет перейти
к следующему этапу – физическому проектированию базы данных.
Между логическим и физическим проектированием существует по­стоянная обратная связь, так как решения, принимаемые на этапе физи­ческого проектирования с целью повышения производительности си­стемы, способны повлиять на структуру логической модели данных.
Основной целью физического проектирования базы данных явля­ется описание способа физической реализации логического проекта базы данных в конкретной СУБД. В случае реляционной модели данных под этим подразумевается следующее:
создание основных объектов базы данных (таблицы, представле-
ния и ограничения) использованием команд ЯОД или соответствую­щего интерфейса;
определение и реализация методов доступа к данным, обеспечи-
вающих требуемую производительность СУБД (индексы секционирование
1
Индексобъект базы данных, создаваемый с целью повышения произво-
дительности SQL-запросов. Индекс формируется из значений одного или не­скольких столбцов таблицы и указателей на соответствующие строки таблицы, а ускорение работы с использованием индексов достигается за счет того, что структура индекса оптимизирована для поиска.
2
Кластеробъект базы данных, используемый для физически совмест-
ного хранения одной или нескольких таблиц, которые часто соединяются вме­сте в SQL-запросах. Кластеры хранят взаимосвязанные строки разных таблиц вместе в одних и тех же блоках данных, что позволяет сократить количество операций дискового ввода-вывода и улучшить время доступа для соединений таблиц,
дельные части с раздельными параметрами физического хранения с целью по­вышения производительности и доступности.
входящих в кластер.
3
Секционированиеразделение хранимых объектов баз данных на от-
3
);
1
, кластеры2,
81
разработка средств защиты данных (роли, методы авторизации
и аутентификации);
анализ необходимости снижения уровня требований нормализа-
ции данных в логической модели, с целью повышения общей произво­дительности системы.
7.1. ИНДЕКСИРОВАНИЕ В БАЗАХ ДАННЫХ
Индекс
– объект базы данных, создаваемый для логического упоря­дочивания хранимых записей и повышения скорости извлечения дан­ных и сокращения времени выполнения запросов за счет:
быстрого поиска строк, соответствующих выражению WHERE; быстрого извлечения строк из других таблиц при выполнении
объединений JOIN;
быстрого определения величины MAX() или MIN() для заданного
индексированного столбца;
быстрой сортировки или группирования.
В системах без индексов весь поиск данных выполняется путем ска­нирования таблиц (последовательного просмотра). При сканировании таблиц прочитываются все записи и сравниваются с запрашиваемыми данными. Индекс позволяет избежать проведения последовательного просмотра таблиц и гарантирует отсутствие повторений значений в ин­дексированных полях записей.
Индекс содержит записи, состоящие из
значений одного или не­скольких столбцов и адреса (адресов) логических записей, содержащих эти значения. Значения в индексе упорядочены по ключу индексирова­ния, который может быть построен на основе одного или нескольких полей или вычисляемых значений.
Типы и виды индексов
Чтобы реализовать все преимущества индексов для ускорения до-
ступа к данным, применяется несколько типов индексов.
Индексы, обеспечивающие порядок сортировки:
по возрастанию;
по убыванию.
Индексы, различающиеся источником данных: по представлению. Индексированное представление – это любое
представление, для которого определен кластерный индекс. При создании
82
индекса по представлению результирующий набор представления орга­низуется и сохраняется в базе данных так же, как таблица с кластеризо­ванным индексом. Изменения данных в таблицах, участвующих в пред­ставлении, будут автоматически отражаться в представлении и в ин­дексе. В дополнение к кластерному индексу можно создавать другие не­кластеризованные индексы в
представлении, чтобы повысить произво-
дительность других запросов.
Обычно следует индексировать представления, данные которых от­носительно статичны, содержат большое количество строк и которые используются большим количеством запросов;
по выражениям. Индекс можно создать не только по полям таб-
лиц, но и по выражению, которое может включать функции, поля и ска­ляры. Это позволяет быстро находить данные в таблице по результатам вычислений.
Индексы, различающиеся по воздействию на источник данных:
кластерный индекс. При создании кластерного индекса записи
физически перестраиваются (сортируются) в соответствии со структу­рой индекса. Существует только один кластеризованный индекс для каждой таблицы, так как строки данных могут храниться в единствен­ном порядке, но каждая таблица может иметь несколько различных не­кластерных индексов, каждый из которых определяет свой собственный порядок следования
записей. Кластерные индексы эффективны при вы­борке диапазона значений. После того как запись с первым значением найдена с использованием кластерного индекса, записи с последую­щими значениями индекса гарантированно будут физически смежными, что обеспечит более быстрый доступ;
некластерный индекс. В отличие от кластерного такой индекс не
перестраивает физическую структуру таблицы, а лишь организует ссылки на соответствующие записи.
7.2. КЛАСТЕРИЗАЦИЯ
Кластер – специализированный объект базы данных, используемый для физически совместного хранения одной или нескольких таблиц, ко­торые часто соединяются вместе в SQL-запросах. Кластеры хранят вза­имосвязанные строки разных таблиц вместе в одних и тех же блоках данных, что позволяет сократить количество операций дискового ввода­вывода и уменьшить время доступа для соединений таблиц
83
, входящих
в кластер. После создания кластера в нем можно создавать таблицы. Пе­ред тем как добавлять строки в кластеризованные таблицы, необходимо создать индекс кластера. Кластеры не влияют на проектирование мо­дели данных приложений, их существование прозрачно для пользовате­лей и приложений. Данные, хранящиеся в кластере, обрабатываются с помощью тех же инструкций
SQL, что и данные, хранящиеся в некла­стеризованных таблицах. Кластеры целесообразно использовать для хранения одной или нескольких таблиц, которые часто используются в запросах и для которых запросы часто выполняют соединение данных из нескольких связанных таблиц либо извлекают связанные данные из одной таблицы.
Использование кластеров замедляет операции добавления, обновле­ния, удаления строк таблицы по сравнению с хранением таблицы вне кластера со своим собственным индексом. Кроме того, кластеры ис­пользуют дополнительный объем дисковой памяти, поскольку каждая отдельная таблица в кластере занимает больше блоков, чем если бы она хранилась вне кластера. Поэтому перед созданием кластера следует
убе­диться, что планируемый выигрыш в производительности запросов пре­высит дополнительную затрату ресурсов на сопровождение кластера.
7.3. СЕКЦИОНИРОВАНИЕ
Секционированисе
– разделение хранимых объектов баз данных на отдельные части с раздельными параметрами физического хранения с целью повышения управляемости, производительности и доступности в больших базах данных.
Секционирование реализовано во многих реляционных СУБД, та­ких как IBM DB2, Informix, Oracle Database, Microsoft SQL Server, PostgreSQL, MySQL, однако методы разбиения могут различаться в раз­ных СУБД.
Среди используемых критериев секционирования можно выделить:
секционирование по диапазонам значений;
хеш-секционирование;
секционирование по списку значений;
секционирование по интервалу; секционирование по ключам.
Секционирование может принести следующую пользу.
84
В определенных ситуациях оно значительно увеличивает быстро-
1.
действие, особенно когда большой процент часто запрашиваемых строк таблицы относится к одной или лишь нескольким секциям. Секциони­рование может сыграть роль ведущих столбцов в индексах, что позво­лит уменьшить размер индекса и увеличит вероятность нахождения наиболее востребованных частей индексов в памяти.
2.
Когда в выборке или изменении данных задействована большая
часть одной секции, последовательное сканирование этой секции может выполняться гораздо быстрее, чем случайный доступ по индексу к дан­ным, разбросанным по всей таблице.
3.
Редко используемые данные можно перенести на более дешевые
и медленные носители.
85
8. БЕЗОПАСНОСТЬ БАЗ ДАННЫХ
В современном мире информация становится стратегическим ресур­сом, одним из основных богатств экономически развитого государства, поэтому, рассматривая накопленные данные как информационный ре­сурс, оказывающий влияние на общество, бизнес и личность [31], необ­ходимо понимать, что данные нуждаются в защите, поскольку они, как и другие ресурсы (материальные, финансовые), подвержены уничтоже­нию (удалению), хищению ровое сообщество, страны и бизнес-организации принимают меры по защите своих информационных ресурсов (данных). Пренебрежение ме­рами защиты может приводить к угрозам:
для страны, если сведения о государственных и военных тайнах
станут известны потенциальному противнику;
для бизнеса, если коммерческие тайны будут доступны конкурен-
там;
для личности, если персональные данные попадут в руки крими-
нальных структур.
Здесь речь идет об утрате конфиденциальной информации. Однако искажение и безвозвратная потеря данных также создают угрозу биз­несу, поскольку доступ к данным есть необходимое условие для выпол­нения бизнес-процессов практически во всех сферах деятельности, и при отсутствии мер по возможны не менее серьезные последствия:
утраченная деловая репутация;
необратимые финансовые потери и долгий реабилитационный пе-
риод;
в самом тяжелом случае невозможность продолжить деятель-
ность.
и порче (искажению). Исходя из этого, ми-
защите и восстановлению утраченных данных
86
По своей природе большие базы данных никогда не будут свободны от злоупотреблений в результате нарушений условий безопасности: если большая система предназначена для облегчения доступа, она ста­новится небезопасной; если сделана водонепроницаемой, становится невозможно ее использовать («if you design a large system for ease of
access it becomes insecure, while if you make it watertight it becomes impossible to use») [32]. Это иногда называют «правилом Андерсона».
8.1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
Информационная безопасность – все аспекты, связанные с опреде­лением, достижением и поддержанием конфиденциальности, целостно­сти, доступности, подотчетности, аутентичности и достоверности ин­формации или средств ее обработки [11], т. е. деятельность по предот­вращению несанкционированного доступа, использования, раскрытия, искажения, изменения, исследования, записи или уничтожения инфор­мации, с учетом целесообразности применения и без какого-либо ущерба производительности организации. Успешное решение этой за­дачи в значительной мере достигается под влиянием широкого спектра законодательных и нормативных актов, которые регулируют способы доступа, обработки, хранения и передачи данных. Однако, во-первых, это задача непростая, во-вторых, это обходится недешево [33].
Защита информации
– деятельность, направленная на предотвраще­ние утечки защищаемой информации, несанкционированных и непредна­меренных воздействий на защищаемую информацию [34]. В этом стан­дарте применены следующие термины с соответствующими определени­ями.
Информационная безопасность –
защита конфиденциальности,
целостности и доступности информации.
Конфиденциальность – обеспечение доступа к информации только
авторизованным пользователям.
Целостность – обеспечение достоверности и полноты информации
и методов ее обработки.
Доступность – обеспечение доступа к информации и связанным
с ней активам авторизованных пользователей по мере необходимости.
Безопасность информации [данных] – состояние защищенности
информации [данных], при котором обеспечены ее [их] конфиденци­альность, доступность и целостность [34]. Безопасность информации
87
определяется отсутствием недопустимого риска, связанного с утечкой информации по техническим каналам, несанкционированными и не­преднамеренными воздействиями на данные и (или) на другие ресурсы автоматизированной информационной системы, используемые в авто­матизированной системе.
Защита данных – организационные, программные и технические
методы и средства, направленные на удовлетворение ограничений, установленных для типов данных или экземпляров типов данных в си­стеме обработки данных [13].
Организационные меры включают документированные процедуры и правила работы с разными видами информации, IТ-сервисами, сред­ствами защиты и т. д.
Технические меры заключаются в использовании аппаратных
и про­граммных средств контроля доступа, мониторинга утечек, антивирус­ной защиты, межсетевого экранирования, защиты от электромагнитных излучений и прочего.
Безопасность персональных данных – состояние защищенности
персональных данных, характеризуемое способностью пользователей, технических средств и информационных технологий обеспечить конфи­денциальность, целостность и доступность персональных данных при их обработке в информационных системах.
Защита персональных данных – комплекс мероприятий техниче-
ского, организационного и организационно-технического характера, направленных на защиту сведений, относящихся к определенному или определяемому на основании такой информации физическому лицу (субъекту персональных данных).
Конфиденциальность – понятие, которое употребляется по отно-
шению к данным. Это статус данных, и согласованный между лицом или организацией их предоставляющей, и организацией, их получаю­щей; он определяет требуемую степень защиты. Конфиденциальность данных относится не только к данным отдельных лиц, но и к любым данным, составляющим чью-либо собственность, или к секретным
дан­ным, обращение к которым требует конфиденциальности. Действую­щий Федеральный закон от 27.07.2006 № 149-ФЗ (в ред. от 03.04.2020) «Об информации, информационных технологиях и о защите информа­ции» описывает понятие «конфиденциальность»: «Конфиденциаль­ность информации – обязательное для выполнения лицом, получив­шим доступ к определённой информации, требование не передавать
88
такую информацию третьим лицам без согласия ее обладателя». Со­гласно этому же закону «информация – сведения (сообщения, данные) независимо от формы их представления».
В Указе Президента Российской Федерации «Об утверждении пе­речня сведений конфиденциального характера» (от 6 марта 1997 г. № 188) [35] к сведениям конфиденциального характера относятся сле­дующее.
1.
Сведения о фактах, событиях и обстоятельствах частной жизни
гражданина, позволяющие идентифицировать его личность (персональ­ные данные), за исключением сведений, подлежащих распространению в средствах массовой информации в установленных федеральными за­конами случаях.
2.
Сведения, составляющие тайну следствия и судопроизводства,
а также сведения о защищаемых лицах и мерах государственной за­щиты.
3.
Служебные сведения, доступ к которым ограничен органами го-
сударственной власти в соответствии с Гражданским кодексом Россий­ской Федерации и федеральными законами (служебная тайна).
4.
Сведения, связанные с профессиональной деятельностью, доступ
к которым ограничен в соответствии с Конституцией Российской Феде­рации и федеральными законами (врачебная, нотариальная, адвокатская тайна, тайна переписки, телефонных переговоров, почтовых отправле­ний, телеграфных или иных сообщений и т. д.).
5.
Сведения, связанные с коммерческой деятельностью, доступ к ко-
торым ограничен в соответствии с Гражданским кодексом Российской Федерации и федеральными законами (коммерческая тайна).
6.
Сведения о сущности изобретения, полезной модели или про-
мышленного образца до официальной публикации информации о них.
Целостность базы данных – соответствие имеющейся в базе дан-
ных информации ее внутренней логике, структуре и всем явно заданным правилам. Каждое правило, налагающее некоторое ограничение на воз­можное состояние базы данных, называется ограничением целостности. Эти ограничения определяются в большинстве случаев особенностями предметной области, хотя могут отражать и чисто информационные (лингвистические) характеристики.
Правило целостности сущностей
: атрибуты, входящие в состав не-
которого потенциального ключа, не могут принимать null-значений.
89
Правило целостности внешних ключей – внешние ключи не должны быть несогласованными, т. е. для каждого значения внешнего ключа должно существовать соответствующее значение первичного ключа в связанном отношении.
Ссылочная целостность – это ограничение базы данных, гарантиру­ющее, что ссылки между данными являются действительно правомер­ными и неповрежденными. Существуют две основные стратегии под­держания
ссылочной целостности.
RESTRICT (ОГРАНИЧИТЬ) – не разрешать выполнение опера-
ции, приводящей к нарушению ссылочной целостности.
CASCADE (КАСКАДНОЕ ИЗМЕНЕНИЕ) – разрешить выполне-
ние требуемой операции, но внести при этом необходимые изменения в связанные таблицы так, чтобы не допустить нарушения ссылочной це­лостности и сохранить все имеющиеся связи. Изменение начинается в родительской таблице и каскадно выполняется в дочерних таблицах. В реализации этой стратегии имеется одна тонкость, заключающаяся в том, что дочерние
таблицы сами могут быть родительскими для неко­торых третьих таблиц. При этом может дополнительно потребоваться выполнение какой-либо стратегии и для этой связи и т. д. Если при этом какая-либо из каскадных операций (любого уровня) не может быть вы­полнена, то необходимо отказаться от первоначальной операции и вер­нуть базу
данных в исходное состояние. Это сложная стратегия, но она
не нарушает связей между родительскими и дочерними таблицами.
Понятие согласованности или целостности данных является ключе­вым понятием баз данных [36] и очевидно, что ограничения должны быть формально объявлены для СУБД, после чего СУБД должна пред­писывать их выполнение. Объявление ограничений сводится просто к использованию соответствующих средств языка базы данных, а со­блюдение ограничений осуществляется с помощью контроля со сто­роны СУБД над операциями обновления, которые могут нарушить эти ограничения, и запрещения тех операций, которые их действительно нарушают. При первоначальном объявлении ограничения система должна проверить, удовлетворяет ли ему в настоящий момент база дан­ных
. Если это условие не соблюдается, ограничение должно быть от­вергнуто; в противном случае оно принимается (т. е. записывается в сло­варь базы данных) и начиная с этого момента соблюдается [37].
Доступность информации – состояние информации (ресурсов ав-
томатизированной информационной системы), при котором субъекты,
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]