КОРПОРАТИВНЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ
УДК 681.3
ФОРМИРОВАНИЕ БАЗЫ ЗНАНИЙ ЭКСПЕРТНОЙ СИСТЕМЫ ДИАГНОСТИКИ СУБД
© 2007 г. Т.В. Коломиец, М.П. Малыхина
Современные инструменты, которые помогают администраторам СУБД решать повседневные задачи по анализу деятельности вверенной им системы, используют в качестве входных данных статистику, собираемую из системного словаря БД. В дальнейшем эта статистика обрабатывается специализированными алгоритмами, которые могут, к примеру, сделать прогнозы относительно того, как изменится ситуация через определенный интервал времени или ответить на вопрос о том, как можно решить возникшую проблему. Однако, в силу отсутствия интеллектуальной составляющей, такие инструменты способны решить только те проблемы, для которых они были созданы, и только в локальных контекстах этих проблем. При этом они не могут предотвратить негативные последствия своих решений, поскольку просто не знают, какое влияние они могут оказать на работу других компонент БД. В результате специалист, не имея достаточных знаний о предметной области, положившись в решении проблемы на инструмент, применяет выданную этим инструментом рекомендацию и получает новые проблемы. Для предотвращения подобного рода ситуаций необходимо построить экспертную систему, которая могла бы рассуждать о возникающих проблемах в комплексе и искать оптимальные решения для их устранения. Исчисление предикатов является одним из способов формирования базы знаний экспертной системы подобного рода.
В данной статье приводится пример того, как с использованием исчисления предикатов можно описать одну из областей настройки производительности в СУБД Oracle - индексирование данных.
Ниже приводится перечень и трактовка основных объектов понятий, связанных в СУБД Oracle c индексированием и его влиянием на производительность, которые будут использоваться в данном примере.
Таблица. Таблица реляционной БД.
Столбец. Столбец реляционной таблицы.
Индекс. В примере рассматриваются два из нескольких видов индекса: на основе В*-дерева («btree-индекс») и индекс на основе битовой карты («b/t-индекс»).
Запрос. Стандартная SQL--инструкция SELECT.
Предикат запроса. Секция WHERE SQL-запроса. Избирательность предиката. Количество строк в выборке, полученное за счет применения предиката.
Избирательность запроса. Количество строк в выборке, полученное за счет применения всех условий ограничения запроса.
Организованность таблицы по столбцу означает, что большинство картежей с идентичным значением в данном столбце расположены в смежных блоках таблицы.
Дезорганизованность таблицы по столбцу означает, что большинство картежей с идентичным значением в данном столбце распределены случайно, по удаленным друг от друга блокам таблицы.
Далее необходимо составить систему выражений исчисления предикатов и интерпретировать ее на конкретном множестве объектов и отношений предметной области. Множество используемых атомарных предикатных выражений описано ниже в формате «предложение исчисления предикатов - семантика предложения».
table_org(tab, col) - таблица tab организована по столбцу col.
table_disorg(tab, col) - таблица tab дезорганизована по столбцу col.
btreeindex(col) - проиндексировать столбец col «btree-индексом».
bit index(col) - проиндексировать столбец col «bit-индексом».
query_columns_and(que, coll, coli) - столбцы coll и coli используются в предикатах запроса que, связа-ных логической операцией «И».
query_columns_or(que, coll, coli) - столбцы coll и coli используются в предикатах запроса que, связаных логической операцией «ИЛИ».
query_column(col, que) - столбец col задействован в ограничениях запроса que.
low_q_selectivity(que) - запрос que обладает низкой избирательностью.
high_q_selectivity(que) - запрос que обладает высокой избирательностью.
low_q_col_selectivity(que) - запрос que обладает низкой избирательностью по столбцу col.
high_q_col_selectivity(que) - запрос que обладает высокой избирательностью по столбцу col.
Следующим шагом после определения базовых атомарных предикатных выражений является составление системы предложений, описывающих отношения между этими атомарными выражениями. Предложения приведены ниже в формате «семантика предложения - описание с помощью исчисления предикатов».
Для каждой таблицы, если она дезорганизована по какому-либо столбцу и все запросы по данному столбцу обладают низкой избирательностью, - не следует создавать «¿tree-индекс» по данному столбцу:
VtabVcol (table _ disorg (tab, col) л
A^que (query _ column (col, que) л
л low _ q _ col _ selectivity (que, col
^ —btree _ index (col)).
Для каждой таблицы, если она организована по каким-либо столбцам, использующихся в запросах с высокой или средней избирательностью по этим столбцам, - следует создавать «btree-индексы» по данным столбцам:
VtabVcol (table _ org (tab, col) л ÁBque (query _ column (col, que) л л—low _ q _ col _ selectivity (que, col)) ^ ^ btree _ index (col)).
Для каждой таблицы, если она дезорганизована по каким-либо двум столбцам и все запросы, использующие эти столбцы в предикатах, объединенных логической операцией «И»/«ИЛИ», обладают высокой избирательностью, - следует создавать «btree-индексы» по данным столбцам:
VtabVcollVcol2 (table _ disorg (tab, coll) л
Atable _ disorg (tab, col2) л
лVque ((query _ columns _ and (que, coll, col2) v
v query _ columns _ or (que, coll, col2)) л
Ahigh _ q _ selectivity (que)) ^
^ btree _ index (coll) л btree _ index (col2)).
Для каждой таблицы, если она дезорганизована по каким-либо столбцам и существуют запросы, использующие эти столбцы в предикатах, объединенных логической операцией «И»/«ИЛИ», которые не обладают низкой избирательностью, - следует создавать «bit-индексы» по данным столбцам:
VtabVcollVcol2 (table _ disorg (tab, coll) л лtable _ disorg (tab, col2) л K^que ((query _ columns _ and (que, coll, col2) v v query _ columns _ or (que, coll, col2)) л л— low _ q _ selectivity (que)) ^ ^ bit _ index (coll) л bit _ index (col2)).
При таком описании механизм логических выводов может находить решения на различные вопросы вида «Следует ли создавать «btree-индекс», если заданы следующие условия запроса и таблица дезорганизована?», «Какие индексы следует создать для таблицы, если используются запросы, имеющие объединения предикатов с помощью логических операций?» и т.п. Основное преимущество сформированных таким образом знаний в том, что они могут быть присоединены к центральной базе знаний экспертной системы и использованы при поиске оптимального комплексного решения целого ряда проблем, не связанных с индексированием напрямую.
25 декабря 2006 г.
Кубанский государственный технологический университет, г. Краснодар
УДК 681.3
ОПТИМИЗАЦИЯ РЕПЛИКАЦИОННЫХ СХЕМ В РАСПРЕДЕЛЕННЫХ БАЗАХ ДАННЫХ ПРИ ДИНАМИЧЕСКИ ПОДКЛЮЧАЮЩИХСЯ КЛИЕНТАХ С РАЗЛИЧНЫМИ ДЛИНАМИ ОЧЕРЕДЕЙ
© 2007 г. Г.В. Сучков, В.Н. Кухарев
Введение
Конструирование схемы распределенной базы данных требует учета перспектив развития информационной системы. При увеличении числа клиентов, подключенных к базе данных, нагрузка на нее возрас-
тает, в результате чего вероятность допустимых потерь может возрасти выше критических значений.
Современные работы [1-7] анализируют поэтапное моделирование процесса добавления новых узлов с локальными базами данных в систему. Однако более