Информационная система повышения производительности хранилищ структурированных данных тема диссертации и автореферата по ВАК РФ 05.13.01, кандидат наук Бельченко Илья Владимирович

  • Бельченко Илья Владимирович
  • кандидат науккандидат наук
  • 2020, ФГБОУ ВО «Кубанский государственный технологический университет»
  • Специальность ВАК РФ05.13.01
  • Количество страниц 159
Бельченко Илья Владимирович. Информационная система повышения производительности хранилищ структурированных данных: дис. кандидат наук: 05.13.01 - Системный анализ, управление и обработка информации (по отраслям). ФГБОУ ВО «Кубанский государственный технологический университет». 2020. 159 с.

Оглавление диссертации кандидат наук Бельченко Илья Владимирович

ВВЕДЕНИЕ

ГЛАВА 1. Анализ методов и средств повышения производительности информационных систем

1.1. Анализ типовых структур информационных систем

1.2. Анализ альтернатив и критериев задачи выбора способа повышения производительности информационной системы, основанной на хранилище данных

1.3. Анализ существующих методов и алгоритмов повышения производительности хранилищ данных

Выводы по главе

ГЛАВА 2. Методики оптимизации модели данных хранилища на основе кластеризации атрибутов

2.1. Описание предметной области повышения производительности хранилищ данных

2.2 Формализация задачи оптимизации модели данных в виде теоретико-множественной модели

2.3. Эвристический алгоритм поиска субоптимального разделения таблицы, основанный на кластерном анализе группы запросов для хранилищ данных крупных информационных систем

2.4. Разработка методики субоптимальной реструктуризации табличных структур хранилищ данных небольших информационных систем на основе многомодального распределения атрибутов

Выводы по главе

ГЛАВА 3. Система повышения производительности хранилищ данных на основе методик кластеризации атрибутов

3.1. Структура и состав информационной системы

3.2. Разработка модуля хранения данных информационной системы

3.3. Структурная схема программного обеспечения

Выводы по главе

ГЛАВА 4. Оценка эффективности методического обеспечения повышения производительности хранилищ данных

4.1. Условия, этапы и алгоритм проведения расчетов оценки эффективности методического обеспечения повышения производительности

хранилищ данных

4.2. Оценка влияния размера атрибута данных на время выполнения запросов на чтение информации

4.3. Оценка эффективности методики на основе альфа-квазиэквивалентности

4.4. Оценка эффективности применения методики на основе многомодального распределения

Выводы по главе

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Приложение А. Программный код ИС повышения производительности хранилищ данных на основе методик кластеризации атрибутов

Приложение Б. Акты об использовании и внедрении результатов диссертационной работы

Приложение В. Участие в научных конкурсах

Приложение Г. Свидетельства о государственной регистрации программ для ЭВМ

Рекомендованный список диссертаций по специальности «Системный анализ, управление и обработка информации (по отраслям)», 05.13.01 шифр ВАК

Введение диссертации (часть автореферата) на тему «Информационная система повышения производительности хранилищ структурированных данных»

ВВЕДЕНИЕ

Актуальность темы исследования. В настоящее время в области информационно-коммуникационных технологий наблюдается тенденция к укрупнению и централизации разрабатываемого программного обеспечения. Это обусловлено увеличением доступности и полосы пропускания сети интернет для конечного пользователя. Укрупнение и централизация являются решением проблемы, связанной с эксплуатационным обслуживанием информационных систем, основанных на хранилищах данных. На сегодняшний день информационное и методическое обеспечение принятия решений при выборе способа повышения производительности хранилищ данных состоит из набора рекомендаций, либо разрабатывается для каждой компании отдельно, что усложняет процесс принятия решений.

Высокое распространение получили информационные системы с централизованным клиент-серверным хранилищем данных. Данный факт обусловлен общим интерфейсом взаимодействия, например для мобильных приложений, настольных информационных систем, WEB-систем. Общая схема организации данных для широкого слоя ИС позволяет сделать вывод о необходимости выделения единого структурного элемента - клиент-серверного хранилища данных как объекта для исследований. По этим причинам разработка методического обеспечения для повышения производительности хранилищ данных является актуальной и востребованной задачей.

Вопросы выбора способов повышения производительности информационных систем широко освещены в трудах: Кульба В.В., Мещеряков С.В., Дятчина Д.В., Полухин К.В. [1, 2,3,4].

Отдельные аспекты, связанные с анализом и разработкой методов повышения производительности хранилищ данных рассмотрены в работах: Кульба В.В., Stéphane Faroult, Скотт В., Эмблер, Прамодкумар, Дж. Садаладж, Dmitri Korotkevitch [1, 5, 6, 7].

К проблемам и методам решения задач кластерного анализа можно отнести работы: Вятченин Д.А., Кофман А., Поспелова Д.А., Барсегян А. А. [8, 9,10, 11].

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

Объектом исследования являются табличные структуры хранилищ данных информационных систем.

Предметом исследования являются применение методик реструктуризации структур данных хранилищ для повышения производительности информационных систем.

Целью исследования является повышение производительности информационных систем, посредством разработки методического обеспечения ускоренной обработки запросов хранилищ данных.

Задачи исследования:

1. Провести анализ методов и средств повышения производительности информационных систем.

2. Формализовать задачу оптимизации модели данных информационных хранилищ в виде теоретико-множественной модели.

3. Разработать эвристический алгоритм поиска субоптимального разделения таблицы, основанный на кластерном анализе группы запросов для хранилищ данных крупных информационных систем .

4. Разработать методики субоптимальной реструктуризации табличных структур хранилищ данных небольших информационных систем на основе многомодального распределения атрибутов.

5. Разработать систему повышения производительности хранилищ данных на основе методик кластеризации атрибутов.

6. Дать оценку эффективности методического обеспечения повышения производительности хранилищ данных.

Научная новизна диссертационной работы заключается в разработке новых подходов к реструктуризации хранилищ данных для повышения их производительности. В ходе диссертационной работы были получены следующие результаты:

1. Формализована задача оптимизации модели данных информационных хранилищ в виде теоретико-множественной модели.

2. Разработаны методики оптимизации модели данных хранилища на основе кластеризации атрибутов.

3. Разработана информационная система повышения производительности хранилищ данных на основе методик кластеризации атрибутов.

4. Проведена апробация методик и оценка их эффективности.

Результаты, изложенные в диссертационной работе, могут быть

использованы при решении задач повышения производительности различных информационных систем, основанных на хранилищах данных.

Теоретическая значимость работы заключается в том, что в процессе исследований проанализированы типовые структуры информационных систем, их достоинства, недостатки, распространение: основными архитектурами информационных систем является трехуровневая архитектура с тонким клиентом - браузером, WEB - сервером и хранилищем данных.

Систематизированы методы повышения производительности информационных систем на основе хранилищ данных. Выявлено негативное влияние возраста информационной системы на ее производительность. Проведен анализ методов повышения производительности хранилищ данных, по результатам которого были выявлены их достоинства и недостатки. Обоснован выбор метода хранения данных на основе вертикально разделенных таблиц. Определено влияние размера блока данных физической модели хранилища на производительность. Предложен эвристический алгоритм поиска субоптимального разделения таблицы, основанный на кластерном анализе группы запросов для хранилищ данных крупных информационных систем. Разработана методика субоптимальной реструктуризации табличных структур хранилищ данных небольших информационных систем на основе многомодального распределения атрибутов.

Разработанная методика оптимизации модели данных информационной системы на основе кластеризации альфа-квазиэквивалентности позволяет провести кластерный анализ группы запросов на чтение информации и выбрать разбиение табличных структур данных, минимизирующее среднее время выполнения запросов. Сложность алгоритма полиномиальна.

Методика оптимальной реструктуризации табличных структур данных небольших информационных систем на основе многомодального распределения позволяет получить разбиения табличных структур на основе группировки атрибутов по частоте их появлений в запросах на чтение информации. Сложность алгоритма логарифмическая.

Практическая ценность полученных результатов состоит в следующем, что в разработанной информационной системе реализованы методики позволяющие:

— реструктурировать хранилища данных, для повышения производительности на 18% - 22%. Также определена оценка влияния размера атрибута данных на время выполнения запросов на чтение информации,

определяющая влияние на объем передаваемых между твердотельным накопителем и другими видами памяти данных.

— повысить производительности крупных информационных систем за счет реструктуризации данных на основе кластерного анализа статистики запросов, которая позволяет минимизировать среднее время выполнения запроса на чтение данных;

— повысить производительности небольших информационных систем за счет оптимальной реструктуризации данных на многомодального распределения атрибутов.

Разработано программное обеспечение, реализующее методики реструктуризации данных. Выполнено в виде WEB-системы, что повышает ее доступность. ПО генерирует программный код запросов реструктуризации существующей табличной структуры данных, на чтение информации с учетом полученной реструктуризации данных, оценки эффективности полученных структур данных.

При решении поставленных задач использовались методы системного анализа, теории множеств, методы нечеткой кластеризации, объектно-ориентированный анализ информационных систем.

Информационная система разработана при помощи языка программирования C# на платформе ASP.NET MVC 5 (среда разработки программных приложений Microsoft Visual Studio 2018).

Основные положения, выносимые на защиту:

1. Результаты анализа существующих методов и алгоритмов повышения производительности хранилищ данных.

2. Формализация задачи оптимизации модели данных информационных хранилищ в виде теоретико-множественной модели.

3. Эвристический алгоритм поиска субоптимального разделения таблицы, основанный на кластерном анализе группы запросов для хранилищ данных крупных информационных систем.

4. Разработка методики субоптимальной реструктуризации табличных структур хранилищ данных небольших информационных систем на основе многомодального распределения атрибутов.

5. Информационная система повышения производительности хранилищ структурированных данных.

Степень достоверности и апробации результатов.

Основные результаты диссертации докладывались на следующих конференциях:

VIII Международной научно-практической конференции «Научные чтения имени профессора Н.Е. Жуковского» (Краснодар, 2018); VII Международной научно-практической конференции молодых ученых, посвященной 56-й годовщине полета Ю.А. Гагарина в космос. (Краснодар, 2017); III Всероссийской заочной научно-методической конференции «Использование современных информационных технологий в образовании». (Армавир, 2016); VI Международной научно-практической конференции молодых ученых, посвященной 55-й годовщине полета Ю.А. Гагарина в космос. (Краснодар, 2016); V Международной научно-практической конференции молодых ученых, посвященной 54-й годовщине полета Ю.А. Гагарина в космос. (Краснодар, 2015).

По результатам выполненных в диссертации исследований опубликовано 13 научных работ, из них: 1 статья в журналах, входящих в реферативную базу Scopus, 1 статья в журналах, входящих в реферативную базу Web of Science, 5 статей в рецензируемых журналах, рекомендованных ВАК при Минобрнауки РФ, 6 статей в научных журналах и материалы конференций. Получено одно свидетельство о государственной регистрации программы для ЭВМ.

Структура и объем диссертации. Диссертация состоит из введения, 4-ех глав, заключения и библиографии. Общий объем диссертации 135 страниц машинописного текста, включая 58 рисунков, 39 таблиц и 4 приложений. Библиография включает 59 наименований на 8 страницах.

ГЛАВА 1. АНАЛИЗ МЕТОДОВ И СРЕДСТВ ПОВЫШЕНИЯ

ПРОИЗВОДИТЕЛЬНОСТИ ИНФОРМАЦИОННЫХ СИСТЕМ

1.1. Анализ типовых структур информационных систем

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

Хранение информации, ее структурирование, поддержание функционала добавления и изменения - основные задачи функционирования большинства информационных систем.

В связи с ростом информационных объемов, возрастающих требований к минимизации времени реакции информационной системы на действия пользователя вопрос повышения производительности информационных систем, основанных на хранилищах данных, становится особенно актуальным.

Множество информационных систем можно разделить на набор видов в соответствии со степенью принадлежности тому или иному видообразующему свойству.

В [12] приводит классификацию информационных систем по масштабу:

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

— Групповые информационные системы ориентированы на коллективное использование информации членами рабочей группы и строятся на основе локальной вычислительной сети.

— Корпоративные информационные системы ориентированы на крупные компании и могут поддерживать территориально разнесенные узлы или сети.

Классификация информационных систем по масштабу представлена на рисунке 1.1.

Рисунок 1.1 - Классификация ИС по масштабу

Классификация информационных систем по способу организации архитектуры (по методике взаимодействия клиента с хранилищем данных). По способу организации архитектуры групповые и корпоративные информационные системы подразделяются на классы [12]:

— системы на основе архитектуры файл-сервер (File Server, FS-модель). Все основные функции приложения информационной системы располагаются на клиенте. На сервере находятся файлы с данными и поддерживается доступ к данным. В этой модели клиент обращается к серверу на уровне файловых команд, система управления файлами считывает запрашиваемые данные из хранилища данных и по блокам передает эти данные клиентскому приложению.

— системы на основе архитектуры клиент-сервер. Такая система характеризуется наличием двух взаимодействующих самостоятельных процессов - клиента и сервера, которые могут выполняться на разных компьютерах, обмениваясь данными по сети. Особенностью архитектуры

клиент-сервер является наличие выделенных серверов хранилищ данных, обрабатывающих запросы на языке структурированных запросов (Structured Query Language, SQL) и выполняющих поиск, сортировку и агрегирование информации. Отличительная черта серверов хранилищ данных - наличие справочника данных, в котором зафиксирована структура хранилища, ограничения целостности данных, форматы и серверные процедуры обработки данных по вызову или по событиям в программе.

— системы на основе многоуровневой архитектуры. Многоуровневая архитектура стала развитием архитектуры клиент-сервер и в своей классической форме состоит из трех уровней: нижний уровень - приложения клиентов, средний уровень - сервер приложений, верхний уровень - удаленный специализированный сервер хранилищ данных, выделенный для услуг обработки данных и файловых операций.

— системы на основе Интернет/Интранет-технологий. Структура информационной системы имеет следующий вид: браузер - сервер приложений - сервер хранилищ данных - сервер динамических страниц - web-сервер.

Классификация информационных систем по способу организации архитектуры представлена на рисунке 1.2.

Рисунок 1.2 - Классификация ИС по способу организации архитектуры

По способам организации хранения данных выделяют иерархические, сетевые и реляционные информационные системы [12]:

— Иерархическая модель хранилища данных состоит из объектов с указателями от родительских объектов к потомкам, соединяя вместе связанную информацию. Иерархические хранилища данных могут быть представлены как дерево, состоящее из объектов различных уровней. Верхний уровень занимает один объект, второй — объекты второго уровня и т. д.

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

— Реляционная модель данных предполагает, что данные хранятся в плоских таблицах. Фактически данные могут быть организованы и иначе, но пользователи и приложения, обращающиеся к данным, должны работать с данными так, как если бы они размещались в таких таблицах. В упрощенном виде плоская таблица - это таблица, каждая ячейка которой может быть однозначно идентифицирована указанием строки и столбца таблицы. Кроме того, в одном столбце все ячейки должны содержать данные одного простого типа [12].

Классификация информационных систем по способам организации хранения данных представлена на рисунке 1.3.

Классификация И С по спосооам организации хранения данных

Иерархическая модель данных Сетевая модель данных Реляционная мсдель данных

Рисунок 1.3 - Классификация ИС по способу организации хранения

данных

Анализ классификации информационных систем позволил выделить важную подсистему - хранилище данных. Хранилища данных пришли на смену устаревшим способам хранения данных в виде типизированных файлов и позволили стандартизировать методы доступа к данным, их представления, а также хранения.

Наиболее распространенная схема организации ИС основана на разделении информационной системы на подсистемы программных приложений и подсистему хранилищ данных.

При анализе схемы организации информационной системы можно выделить следующие элементы системы:

— Программное приложение - программный продукт, реализующий интерфейс взаимодействия пользователя с информационной системой, обработку и представление данных. Программное приложение может быть как WEB-системой, так и мобильным приложением, настольным приложением. При явном отличии этих приложений, их функционал во многом схож.

— Хранилище данных - совокупность программно-аппаратных средств, осуществляющих хранение данных, обеспечивающих доступ к ним. Хранилище данных представляет собой файловую структуру для хранения файлов.

Схема организации ИС, основанной на хранилище данных, представлена на рисунке 1.4.

Рисунок 1.4 - Наиболее распространенная схема организации ИС, основанной на хранилище данных

После классификации ИС, а также выделения наиболее распространенной схемы ее организации приведем классификацию хранилищ данных.

По технологии обработки данных хранилища подразделяются на централизованные и распределенные. Централизованное хранилище хранится на одной выбранной вычислительной машине, назначенной сервером хранилищ данных. Эта вычислительная машина может быть как мэйнфреймом с организацией доступа к ней с использованием терминалов - или файловым сервером локальной сети.

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

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

Возможны однородные и неоднородные распределенные хранилища данных. В однородном случае каждое локальное хранилище данных управляется одной и той же системой управления. В неоднородной системе локальные хранилища данных могут относиться даже к разным моделям данных. Сетевая интеграция неоднородных хранилищ данных - очень сложная проблема. Многие решения известны на теоретическом уровне, но пока не удается справиться с главной проблемой: недостаточной эффективностью интегрированных систем. Более успешно решается промежуточная задача -интеграция неоднородных SQL-ориентированных систем. Этому в большой степени способствует стандартизация языка SQL.

Примером распределенного хранилища данных может служить System R. В данной системе разработчики прикладных программ и конечные пользователи остаются в среде языка SQL. Возможность использования SQL основывается на обеспечении System R прозрачности местоположения данных. Система автоматически обнаруживает текущее местоположение упоминаемых в запросе пользователя объектов данных; одна и та же прикладная программа, включающая предложения SQL, может быть выполнена в разных узлах сети. При этом в каждом узле сети на этапе компиляции запроса выбирается наиболее оптимальный план выполнения запроса в соответствии с расположением данных в распределенной системе.

Задача построения оптимального плана расположения данных среди узлов распределенного хранилища данных решалась и решается многими известными учеными. Разработчиком основ теории и принципов построения оптимальных модульных систем обработки данных, локальных и распределенных хранилищ данных является Кульба Владимир Васильевич [1].

Следует отметить высокое распространение структурированных хранилищ данных.

По способу доступа хранилища данных разделяются на хранилища с локальным доступом и с сетевым доступом. Для всех современных хранилищ данных можно организовать сетевой доступ с многопользовательским режимом работы.

Централизованные хранилища данных с сетевым доступом могут иметь следующую архитектуру, которая представлена на рисунке 1.5:

— файл-сервер;

— клиент-сервер хранилища данных;

— «тонкий клиент» - сервер приложений - сервер хранилищ данных (трехуровневая архитектура).

Архитектура централизованного хранилища данных

1

Файл-сервер Клиент-сервер Трехуровневая архитектура

Рисунок 1.5 - Архитектуры централизованного хранилища данных

Файл-сервер. Архитектура файл-сервер подразумевает назначение одной из вычислительных машин сети в качестве файлового сервера. На этот компьютер устанавливается операционная система для выделенного сервера. На нем же хранится совместно используемое хранилище данных в виде одного файла или группы файлов. Все другие компьютеры сети выполняют функции рабочих станций. Файлы хранилища данных в соответствии с пользовательскими запросами передаются на рабочие станции, где и производится обработка информации.

Исторически это одна из первых архитектур организации централизованных хранилищ данных. Передача файлов на рабочие станции, их обработка, а также последующее сохранение затрагивают проблему совместного доступа к данным, контроля их версий, внесенных изменений. При

большой интенсивности доступа к одним и тем же данным производительность информационной системы падает. Схема организации локальной сети с хранилищем данных в виде файлового сервера представлена на рисунке 1.6.

Рабочие станцил

Файл-серверное-храм ил лще да иных

Рисунок 1.6 - Схема организации ИС с хранилищем данных в виде файлового

сервера

Клиент-сервер. В этой архитектуре на выделенном сервере, работающем под управлением серверной операционной системы, устанавливается специальное программное обеспечение (ПО) хранилища данных, например от компании Microsoft или Oracle. Программное обеспечение хранилища данных подразделяется на две части: клиентскую и серверную. Основа работы клиент-серверного хранилища данных - использование языка запросов (SQL). Запрос на языке SQL, передаваемый клиентом (рабочей станцией) серверу, порождает поиск и извлечение данных на сервере [13]. Извлеченные данные транспортируются по сети от сервера к клиенту. Тем самым количество передаваемой по сети информации уменьшается во много раз.

Данная архитектура была распространена в виду низкой пропускной способности сети Интернет, отсутствием функциональных WEB-браузеров. Разработка программного обеспечения для ИС с рассматриваемой архитектурой велась преимущественно на платформах Borland Delphi, Windows Forms и т.д. ИС, построенные по схеме организации с клиент-серверным хранилищем данных, обладали рядом недостатков, связанных с тем, что основные вычислительные процессы выполнялись на клиентских станциях. Администраторы сталкивались с проблемами версионности ПО, необходимостью обязательного процесса инсталляции программного обеспечения, а также установкой обновлений.

Схема организации ИС с клиент-серверным хранилищем данных представлена на рисунке 1.7.

Рабочие станции

Рисунок 1.7 - Схема организации ИС с клиент-серверным хранилищем данных

Трехуровневая архитектура функционирует в Интранет и Интернет сетях. Клиентская часть («тонкий клиент»), взаимодействующая с пользователем, представляет собой НТМЬ-страницу в Web-браузере либо настольное

приложение, взаимодействующее с Web-сервисами. Вся программная логика вынесена на сервер приложений, который обеспечивает формирование запросов к хранилищу данных, передаваемых на исполнение. Сервер приложений может быть Web-сервером или специализированной программой.

Клиентские рабочие станции выполняют функции генерации 'ЕВ-запросов и отображения результатов их выполнения. Так как вся вычислительная нагрузка ложится на сервер, то тонкий клиент обладает минимальной аппаратной конфигурацией без какого-либо ущерба производительности. К этой архитектуре относятся и мобильные приложения.

Стоит отметить преимущества данной архитектуры:

1. Поддержка кроссплатформенности, так как для работы информационной системы на клиентских станциях необходимо наличие программы-браузера.

2. Отсутствие издержек на администрирование ИС на клиентских станциях. Так как пользовательские данные и настройки находятся на сервере, то при выходе из строя клиентской станции нет необходимости переустановки программного обеспечения. Достаточно запустить браузер на новом оборудовании.

Похожие диссертационные работы по специальности «Системный анализ, управление и обработка информации (по отраслям)», 05.13.01 шифр ВАК

Список литературы диссертационного исследования кандидат наук Бельченко Илья Владимирович, 2020 год

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Кульба, В.В. Теоретические основы проектирования оптимальных структур распределённых баз данных. / В.В. Кульба, С.С. Ковалевский, С.А. Косяченко, В.О. Сиротюк // Серия «Информатизация России на пороге XXI века». - М.: СИНТЕГ, 1999. - 660 с.

2. Мещеряков, С.В. Методы эффективной организации баз данных и их приложений в промышленных системах: дис. д.т.н. / С.В. Мещеряков -Санкт-Петербург: ФГБОУ ВПО «СПбШУ», 2012.

3. Дятчина, Д.В. Повышение эффективности управления базами данных на основе оптимизации запросов с альтернативными маршрутами их выполнения: дис. к.т.н. / Д.В. Дятчина - Липецк: ФГБОУ ВПО «Липецкий государственный технический университет», 2013.

4. Полухин, К.В. Исследование и разработка статистических методов группирования запросов в сложной информационной системе: дис. к.т.н. / К.В. Полухин - С.Пб.: Санкт Петербургский институт информатики и автоматизации РАН, 2006.

5. Эмблер, Скотт В., Садаладж, Прамодкумар Дж. Рефакторинг баз данных: эволюционное проектирование / Скотт В. Эмблер, Прамодкумар Дж. Садаладж - М.: ООО ''И.Д. Вильямс'', 2007. - 672 с.

6. Stéphane Faroult Refactoring SQL Applications. O'Reilly Media, 2008. - 297 с.

7. Korotkevitch, Dmitri. Expert SQL Server In-Memory OLTP. Land O Lakes / Dmitri Korotkevitch, Florida, USA, 2017.- 314 с.

8. Вятченин Д.А. Нечеткие методы автоматической классификации: Монография / Д.А. Вятченин— Мн.: УП «Технопринт», 2014. — 219 c.

9. Кофман, А. Введение в теорию нечетких множеств: Пер. с франц. / А. Кофман— М.: Радио и связь, 1982. — 432 c.

10. Нечеткие множества в моделях управления и искусственного интеллекта / Под ред. Д. А. Поспелова.— М.: Наука. Гл. ред. физ.-мат. лит., 1986.— 312 с.

11. Барсегян, А. А., Куприянов, М. С., Холод, И. И., Тесс, М. Д., Елизаров, С. И. Анализ данных и процессов: учеб. Пособие. 3-е изд., перераб. и доп. / А. А. Барсегян, М. С. Куприянов, И. И. Холод, М. Д. Тесс, С. И. Елизаров. — СПб.: БХВ-Петербург, 2009. — 512 с.

12. Избачков, Ю.С., Петров, В.Н. Информационные системы: Учебник для ВУЗов. 2-е изд. / Ю.С Избачков, В.Н. Петров - СПб.: Питер, 2006. - 656с.

13. Кайт, Т. Oracle для профессионалов: архитектура, методики программирования и особенности версий 9i, 10g и 11g, 2-е изд.: Пер. с англ. / Т. Кайт- М.: ООО «И.Д. Вильямс», 2011. - 848 с.

14. Лаптев, В.Н., Сопильняк, Ю.Н., Дьяченко, Р.А., Бельченко, И.В., Бельченко, В.Е. Об одном из системных подходов к повышению качества образовательного процесса в системах косвенного документооборота / В.Н. Лаптев, Ю.Н. Сопильняк, Р.А. Дьяченко, И.В. Бельченко, В.Е. Бельченко // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета - Краснодар: ФГБОУ ВО КУБГАУ, 2016. № 118. С. 1213-1222.

15. Лаптев, В.Н., Сопильняк, Ю.Н., Дьяченко, Р.А., Бельченко, И.В., Бельченко, В.Е. Повышение качества организации образовательного процесса за счет внедрения системы "Социальная сеть образовательной организации" / В.Н. Лаптев, Ю.Н. Сопильняк, Р.А. Дьяченко, И.В. Бельченко, В.Е. Бельченко // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета - Краснодар: ФГБОУ ВО КУБГАУ, 2016. № 118. С. 1202-1212.

16. Согоян, С.С., Дьяченко, Р.А., Бельченко, И.В. Об одном из подходов к повышению мотивации учащихся к образовательной и внеучебной деятельности за счет рейтинговой системы / С.С. Согоян, Р.А. Дьяченко, И.В. Бельченко // Политематический сетевой электронный научный журнал

Кубанского государственного аграрного университета - Краснодар: ФГБОУ ВО КУБГАУ, 2016. № 122. С. 748-757.

17. Черняева Э.П., Дьяченко, Р.А., Бельченко, И.В., Бельченко, В.Е. Об одном из системных подходов к созданию конспекта лекции в образовательной организации с применением информационных технологий / Э.П. Черняева, Р.А. Дьяченко, И.В. Бельченко, В.Е. Бельченко // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета - Краснодар: ФГБОУ ВО КУБГАУ, 2017. № 125. С. 130-140.

18. Andrusenko, E. Yu., Egizaryants, A. A., Lapshin, N. A., Belchenko, V. E., Belchenko, I. V., Dyachenko R. A. Methodology to improve the quality in the organiza-tion of the educational process through the im-plementation of software / E. Yu. Andrusenko, A. A. Egizaryants, N. A. Lapshin, V. E. Belchenko, I. V. Belchenko, R. A. Dyachenko // AMAZONIA INVESTIGA Том: 8 Выпуск: 18 Стр.: 396-408 Опубликовано: JAN-FEB 2019. Режим доступа: https://www.amazoniainvestiga.info/index.php/amazonia/article/view/331/308

19. Google Аналитика: https://analytics.google.com/ (дата обращения 1.010.2019)

20. Богданова, А.В., Дьяченко, Р.А., Бельченко, И.В. Повышение качества образовательного процесса за счет внедрения системы "Электронное расписание" в учебной организации / Богданова А.В., Дьяченко Р.А., Бельченко И.В. // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета - Краснодар: ФГБОУ ВО КУБГАУ, 2016. № 117. С. 873-885.

21. Михайловский, Н.Э. Архитектура информационной системы, оценка рисков и совокупная стоимость владения / Н.Э. Михайловский // Директор ИС. - 2002. - № 6. - С. 12-17.

22. Фейгин, В.С., Терсков, В.А. Решение задачи обеспечения заданной производительности вычислительных комплексов при построении защищенных информационных систем / В.С. Фейгин, В.А. Терсков // Актуальные проблемы авиации и космонавтики - Красноярск: ФГБОУ ВО «Сибирский

государственный университет науки и технологий имени академика М.Ф. Решетнева», 2012. - С. 379-380.

23. Родзин, С.И. Теория принятия решений: лекции и практикум: Учебное пособие. / С.И. Родзин - Таганрог: Изд-во ТТИ ЮФУ, 2010. 336 с.

24. Бельченко, И.В., Дьяченко, Р.А., Терехов, В.В. Иллюстрация применения метода дельфи для решения задачи выбора направления развития предприятия / И.В. Бельченко, Р.А. Дьяченко, В.В. Терехов // В сборнике: Автоматизированные информационные и электроэнергетические системы Материалы II Межвузовской научно-практической конференции - Краснодар: ФГБОУ ВПО КубГТУ, 2012. С. 243-244.

25. Аудит производительности ИТ-систем. URL: https://www.iemag.ru/analitics/detail.php?ID=34380 (дата обращения 4.10.2019)

26. Тарасов С.В. СУБД для программиста. Базы данных изнутри [Электронный ресурс] / С.В. Тарасов. — Электрон. текстовые данные. — М. : СОЛОН-ПРЕСС, 2015. — 320 c. — 978-2-7466-7383-0. — Режим доступа: http : //www.iprbookshop .ru/65415 .html

27. Boronski, R., Bocewicz, G. Relational Database Index Selection Algorithm. Communications in Computer and Information Science. / R. Boronski, G. Bocewicz - Brunow, Poland, 2014. С. 338-347.

28. Бельченко, И.В., Дьяченко, Р.А., Бельченко, В.Е. К вопросу повышения производительности базы данных за счет оптимальной индексации таблиц / И.В. Бельченко, Р.А. Дьяченко, В.Е. Бельченко // Электронный сетевой политематический журнал "Научные труды КубГТУ" - Краснодар: ФГБОУ ВО «Кубанский государственный технологический университет, 2018. № 3. С. 584586.

29. Бельченко, И.В., Дьяченко, Р.А. Методика повышения производительности информационной системы за счет оптимальной реструктуризации данных / И.В. Бельченко, Р.А. Дьяченко // Известия высших учебных заведений. Поволжский регион. Технические науки - Пенза: ГОУВО «Пензенский государственный университет», 2018. № 1. С. 26-38.

30. Шварц, Б., Зайцев, П., Ткаченко, В., Заводны, Дж., Ленц, А., Бэллинг, Д. MySQL. Оптимизация производительности, 2-е издание. / Б. Шварц, П. Зайцев, В. Ткаченко, Дж. Заводны, А. Ленц, Д. Бэллинг - Пер. с англ. - СПб.: Символ-Плюс, 2010. - 832 с.

31. Фишер, А.В. Разработка методического аппарата системного анализа при использовании хронологической информации: дис. к.т.н. / А.В. Фишер - ФГБОУ ВО «КубГТУ», Краснодар, 2014.

32. Дьяченко, Р.А., Бельченко, И.В., Гуляев, Н.А. Об одном из подходов к диагностированию проблем в информационной системе за счет использования экспертной системы в виде продукционной модели представления знаний / Р.А. Дьяченко, И.В. Бельченко, Н.А. Гуляев // Электронный сетевой политематический журнал "Научные труды КубГТУ" -Краснодар: ФГБОУ ВО «Кубанский государственный технологический университет, 2016. № 16. С. 319-325.

33. Багдасарян, Р.Х., Атрощенко, В.А., Пиотровский, Р.А., Дьяченко, Р.А., Бельченко, В.Е., Бельченко, И.В. Системный анализ и разработка методического аппарата для создания информационного обеспечения региональных электроэнергетических сетей. Монография / Р.Х. Багдасарян, В.А. Атрощенко, Р.А. Пиотровский, Р.А. Дьяченко, И.В. Бельченко, В.Е. Бельченко - Армавир: РИО АГПУ, 2016. - 164 с.

34. Петров, А.Б. Перспективы дальнейшего роста быстродействия информационной системы / А.Б. Петров // Cloud of Science - М.: Негосударственное образовательное учреждение высшего образования Московский технологический институт, 2019. № 3. С. 519-527.

35. Гребенюк В.М. О проблемах определения возможностей масштабирования сложных систем / В.М. Гребенюк — М.: Вестник евразийской науки, 2013. — 61 c.

36. Гребенюк В.М. О проблемах определения возможностей масштабирования сложных систем / В.М. Гребенюк — М.: Вестник евразийской науки, 2013. — 61 c.

37. Михнов, Д.К., Курилина, Е.А. Исследование моделей архитектур серверных приложений корпоративных информационных систем ВосточноЕвропейский журнал передовых технологий / Д.К. Михнов, Е.А. Курилина -Украина. Харьков: Украинская государственная академия железнодорожного транспорта, 2014. №2. C. 34-38.

38. Дейнека, А. В., Жуков, Б. М. Современные тенденции в управлении персоналом. Учебное пособие, Южный институт менеджмента./ А. В. Дейнека, Б. М. Жуков - М.: Академия Естествознания, 2019. - 403 с.

39. Голиков, О.И., Панкратов, И.А. Исследование способов повышения эффективности обработки данных в реляционных БД на примере СУБД MySQL / О.И. Голиков, И.А. Панкратов // Вестник Волжского университета им. В.Н. Татищева - Тольятти: Волжский университет им. В.Н. Татищева 2016, Т. 2. № 2. С. 124-130.

40. Филатов, А.Н. Разработка метода колоночной выборки данных для реляционных СУБД / А.Н. Филатов // Время открытий - Новокузнецк: Индивидуальный предприниматель Кектышева Е. И., 2019. №5. C. 10-14.

41. Teradata URL: https://www.teradata.ru/ (дата обращения 22.06.2019)

42. Columnstore Indexes Described URL: https://docs.microsoft.com/ru-m/sql/relational-databases/indexes/columnstore-indexes-described?view=sql-server-2014 (дата обращения 22.06.2019)

43. Чигарина, Е.И. Базы данных: учеб. пособие / Е.И. Чигарина. -Самара.: Изд-во СГАУ, 2015. - 208 с.

44. Atroshchenko, V.A., Belchenko, V.Y., Belchenko, I.V., Dyachenko, R.A. Development and research of statistical methods and optimization algorithms of search for solutions in intelligence automated systems / V.A. Atroshchenko, V.Y. Belchenko, I.V. Belchenko, R.A. Dyachenko // International Journal of Pharmacy and Technology. 2016. Т. 8. № 2. С. 14137-14149.

45. Бельченко, И.В. Методика повышения производительности крупных информационных систем за счет реструктуризации данных на основе кластерного анализа статистики запросов / И.В. Бельченко // Cloud of Science -

М.: Негосударственное образовательное учреждение высшего образования Московский технологический институт, 2018. Т. 5. № 2. С. 352-366.

46. Полещук, О.М., Полещук, И.А. Кластеризация элементов множества полных ортогональных семантических пространств / О.М. Полещук, И.А. Полещук // Вестник московского государственного университета леса -лесной вестник. - М.: МГУЛ 2003. - С. 117-127.

47. Бельченко, И.В., Дьяченко, Р.А. Методика повышения производительности небольших информационных систем за счет оптимальной реструктуризации данных на основе многомодального распределения атрибутов / И.В. Бельченко, Р.А. Дьяченко // Вестник Новосибирского государственного университета. Серия: Информационные технологии. -Новосибирск: Новосибирский государственный университет, 2018. Т. 16. № 2. С. 19-30.

48. Документация по SQL. URL: https://docs.microsoft.com/ru-ra/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver15 (дата обращения 19.05.2018)

49. Бельченко, И.В., Дьяченко, Р.А., Бельченко, В.Е. Об одном методе защиты местоположения (адреса) сервера баз данных / И.В. Бельченко, Р.А. Дьяченко, В.Е. Бельченко // Электронный сетевой политематический журнал "Научные труды КубГТУ" - Краснодар: ФГБОУ ВО «Кубанский государственный технологический университет, 2016. № 16. С. 331-337.

50. ASP.NET MVC Pattern URL: https://dotnet.microsoft.com/apps/aspnet/mvc (дата обращения 22.06.2019)

51. Сидорова, Е.Д., Бельченко, И.В., Черняева, Э.П. Роль моделирования данных в системном анализе. В сборнике: «Использование современных информационных технологий в образовании» / Е.Д. Сидорова, И.В. Бельченко, Э.П. Черняева // сборник трудов III Всероссийской заочной научно-методической конференции - Армавир: АГПУ, 2016. С. 88-90.

52. Бельченко, И.В., Дьяченко, Р.А., Бельченко, В.Е. Проблемы внедрения информационных систем в образовательных организациях. В

сборнике: Научные чтения имени профессора Н.Е. Жуковского / И.В. Бельченко, Р.А. Дьяченко, В.Е. Бельченко //Сборник научных статей VIII Международной научно-практической конференции «Научные чтения имени профессора Н.Е. Жуковского» - Краснодар: КВВАУЛ им. Героя Советского Союза А.К. Серова, 2018. С. 289-291.

53. Бельченко, И.В. К вопросу способов организации хранения специальных типов данных в реляционных структурах / И.В. Бельченко // Электронный сетевой политематический журнал "Научные труды КубГТУ" -Краснодар: ФГБОУ ВО «Кубанский государственный технологический университет, 2018. № 3. С. 573-576.

54. Бельченко, И.В., Дьяченко, Р.А., Бельченко, В.Е. Проблемы внедрения информационных систем в образовательных организациях. В сборнике: Научные чтения имени профессора Н.Е. Жуковского / И.В. Бельченко, Р.А. Дьяченко, В.Е. Бельченко //Сборник научных статей VIII Международной научно-практической конференции «Научные чтения имени профессора Н.Е. Жуковского» - Краснодар: КВВАУЛ им. Героя Советского Союза А.К. Серова, 2018. С. 289-291.

55. Электронное расписание. URL: https://www.it-institut.ru (дата обращения 1.10.2019)

56. Иванов, В.И., Новиков, С.П. Программное средство исследования различных алгоритмов кэширования в реляционных СУБД / В.И. Иванов, С.П. Новиков // Молодой исследователь Дона. - Ростов-на-Дону: Донской государственный технический университет, 2018. № 3 (12). С. 58-61.

57. Бельченко, И.В., Дьяченко, Р.А., Бельченко, В.Е. К вопросу хранения нейронной сети с обратным распространением ошибки в реляционных базах данных / И.В. Бельченко, Р.А. Дьяченко, В.Е. Бельченко // Электронный сетевой политематический журнал "Научные труды КубГТУ" -Краснодар: ФГБОУ ВО «Кубанский государственный технологический университет, 2016. № 16. С. 57-61.

58. Методы организации хранения данных в СУБД URL: https://www.osp.ru/os/2003/03/182716/ (дата обращения 1.10.2019)

59. Свидетельство о государственной регистрации программы для ЭВМ № 2014610010. Информационная система поддержки принятия решений при выборе оптимальной реструктуризации данных / И.В. Бельченко, Р. А. Дьяченко / Зарег. 31.08.2018. М.: Роспатент. 2018.

ПРИЛОЖЕНИЕ А

Программный код ИС повышения производительности хранилищ данных на основе методик кластеризации атрибутов

using OptimisationBox;

using ProjectForDissertation.Core;

using ProjectForDissertation.DataBox;

using ProjectForDissertation.Models;

using ProjectForDissertation.OptimisationBox;

using System.Diagnostics;

using System.Web.Mvc;

namespace ProjectForDissertation.Controllers {

public class OptimisationManagementController : Controller {

public ActionResult GetOptimisationSplitTableWithMultimodalDistribution(Int64 ProjectId)

{

UserDataBox userBox = new UserDataBox(); QueryDataBox queryBox = new QueryDataBox(); TableAttrDataBox tableAttrBox = new TableAttrDataBox(); DTypesDataBox dtBox = new DTypesDataBox(); ProjectsDataBox projectBox = new ProjectsDataBox(); List<TableAttrCore> attrsForTable = tableAttrBox.GetTableAttrs(ProjectId); List<QueryCore> queries = queryBox.GetQueriesForProject(ProjectId); MultimodalDistribution multimodalBody = new MultimodalDistribution(queries, attrsForTable);

List<Int64[]> mas = multimodalBody.GetChildTabls(600000, queries, attrsForTable, dtBox.GetDataTypes(projectBox.GetProject(ProjectId).DBType.Id));

OptimisationSplitTableModel model = new OptimisationSplitTableModel(); model.SplitResultChildTabes = mas; model.queriesForExperiment = queries; Int32 iterator = 1;

foreach (Int64[] m in mas)

{

String SplitCommand = String.Empty; SplitCommand += "select ";

for (int i = 0; i < attrsForTable.Count; i++) {

if (m[i] != 0 || i == 0) {

SplitCommand += String.Format("{0},", attrsForTable[i].AttributName);

}

if (i == attrsForTable.Count - 1)

{

SplitCommand = SplitCommand.Remove(SplitCommand.Length - 1);

SplitCommand += String.Format(" INTO {0}{1} from {2} \n\n ", projectBox.GetProject(ProjectId).ProjectName, iterator, projectBox.GetProject(ProjectId).ProjectName);

model.ChildTablesNames.Add(String.Format("{0}{1}", projectBox.GetProject(ProjectId).ProjectName, iterator)); iterator++;

}

}

model.CreateTableCommands.Add(SplitCommand);

}

foreach (QueryCore q in queries)

{

String SelectForParentTableCommand = String.Empty;

SelectForParentTableCommand += " DECLARE @StartTime datetime, @EndTime datetime SELECT @StartTime=GETDATE(); select "; String WhereInstruction = " where ";

for (int i = 0; i < attrsForTable.Count; i++) {

if (q.AttrsForQuery[i].IsInQuery)

{

SelectForParentTableCommand += String.Format("{0},", q.AttrsF orQuery [i] .AttrF orTable.AttributName);

if (i != 0)

{

WhereInstruction += String.Format(" {0} ='2tmCDKQjOJ' or",

q.AttrsF orQuery [i] .AttrF orTable.AttributName);

}

}

if (i == attrsForTable.Count - 1) SelectForParentTableCommand = SelectForParentTableCommand.Remove(SelectForParentTableCommand.Length - 1);

WhereInstruction = WhereInstruction.Remove(WhereInstruction.Length - 2);

SelectForParentTableCommand += String.Format(" from {0} ", projectBox.GetProject(ProjectId).ProjectName);

SelectForParentTableCommand += WhereInstruction;

SelectForParentTableCommand += "SELECT @EndTime=GETDATE() SELECT

DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in milliseconds]";

}

}

model.SelectCommandForOldTable.Add(SelectForParentTableCommand);

}

List<AttrChildTableCore> AttrWithChildTable = new List<AttrChildTableCore>(); for (int i = 0; i < attrsForTable.Count; i++)

{

Int32 NumberChildTab = 1;

foreach (Int64[] m in mas)

{

if (m[i] == 1)

{

AttrWithChildTable.Add(new AttrChildTableCore

{

AttrName = attrsForTable[i].AttributName, TableName = String.Format("{0}{1}", projectBox.GetProject(ProjectId).ProjectName, NumberChildTab)

break;

}

NumberChildTab++;

}

}

foreach (QueryCore q in queries) {

String SelectForChildTablsCommand = String.Empty; List<String> TableWithQuery = new List<string>();

SelectForChildTablsCommand += " DECLARE @StartTime datetime, @EndTime datetime SELECT @StartTime=GETDATE(); select "; String WhereInstruction = " where ";

for (int i = 0; i < attrsForTable.Count; i++) {

if (q.AttrsForQuery[i].IsInQuery)

{

SelectForChildTablsCommand += String.Format("{0}.{1},", AttrWithChildTable[i].TableName, AttrWithChildTable[i].AttrName);

TableWithQuery.Add(AttrWithChildTable[i].TableName);

if (i != 0)

{

WhereInstruction += String.Format(" {0}.{1}='2tmCDKQjOJ' or",

AttrWithChildTable[i].TableName, AttrWithChildTable[i].AttrName);

}

}

if (i == attrsForTable.Count - 1)

{

SelectForChildTablsCommand = SelectForChildTablsCommand.Remove(SelectForChildTablsCommand.Length - 1); TableWithQuery = TableWithQuery.Distinct().ToList(); WhereInstruction = WhereInstruction.Remove(WhereInstruction.Length - 2); String FromForQuery = String.Empty; FromForQuery += " from ";

if (TableWithQuery.Count == 1)

{

FromForQuery += TableWithQuery[0];

}

else {

for (Int32 m = 1; m < TableWithQuery.Count; m++) {

if (m == 1)

{

FromForQuery += String.Format(" {0} inner join {1} on {2}.Id={3}.Id ",

TableWithQuery[m - 1], TableWithQuery[m], TableWithQuery[m - 1], TableWithQuery[m]);

}

else {

FromForQuery += String.Format(" inner join {0} on {1}.Id={2}.Id ",

TableWithQuery[m], TableWithQuery[m - 1], TableWithQuery[m]);

}

}

}

FromForQuery += WhereInstruction;

FromForQuery += String.Format(" SELECT @EndTime=GETDATE() SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in milliseconds] "); SelectForChildTablsCommand += FromForQuery;

model.SelectCommandForChildTable.Add(SelectForChildTablsCommand);

}

}

}

for (Int32 iChildTable = 0; iChildTable < model.CreateTableCommands.Count;

iChildTable++)

{

string ConnectStr =

WebConfigurationManager.ConnectionStrings["TestServer"].ConnectionString; SqlConnection con = new SqlConnection(ConnectStr); string LogCommand = model.CreateTableCommands[iChildTable]; SqlCommand LogSel = new SqlCommand(LogCommand, con); LogSel.CommandTimeout = 0; con.Open();

Int64 countRow = LogSel.ExecuteNonQuery(); con.Close();

}

Int64 CommandForChildTableTime = 0;

for (Int32 iCommand = 0; iCommand < model.SelectCommandForChildTable.Count;

iCommand++) {

for (Int32 iFriquency = 0; iFriquency < queries[iCommand].Frequency; iFriquency++) {

string ConnectStr =

WebConfigurationManager.ConnectionStrings["TestServer"].ConnectionString;

SqlConnection con = new SqlConnection(ConnectStr);

string LogCommand = model.SelectCommandForChildTable[iCommand];

SqlCommand LogSel = new SqlCommand(LogCommand, con);

LogSel.CommandTimeout = 0;

ClearCASHDB();

con.Open();

SqlDataReader LogRead = LogSel.ExecuteReader();

LogRead.NextResult();

LogRead.Read();

model.AllElementForSumTimeForChildsAfterSplitTable += " " + (LogRead.GetInt32(0)).ToString();

CommandForChildTableTime += LogRead.GetInt32(0); con.Close();

}

}

model.TimeForChildsAfterSplitTable = CommandForChildTableTime; Int64 CommandForOldTableTime = 0;

for (Int32 iCommand = 0; iCommand < model.SelectCommandForOldTable.Count;

iCommand++) {

for (Int32 iFriquency = 0; iFriquency < queries[iCommand].Frequency; iFriquency++) {

string ConnectStr =

WebConfigurationManager.ConnectionStrings["TestServer"].ConnectionString; SqlConnection con = new SqlConnection(ConnectStr);

string LogCommand = model.SelectCommandForOldTable[iCommand]; SqlCommand LogSel = new SqlCommand(LogCommand, con); LogSel.CommandTimeout = 0;

ClearCASHDB(); con.Open();

SqlDataReader LogRead = LogSel.ExecuteReader();

LogRead.NextResult();

LogRead.Read();

model.AllElementForSumTimeForOldTable += " " + (LogRead.GetInt32(0)).ToString();

CommandForOldTableTime += LogRead.GetInt32(0); con.Close();

}

}

model.TimeForOldTable = CommandForOldTableTime;

for (Int32 iChildTable = 0; iChildTable < model.ChildTablesNames.Count; iChildTable++)

{

string ConnectStr =

WebConfigurationManager.ConnectionStrings["TestServer"].ConnectionString; SqlConnection con = new SqlConnection(ConnectStr); string LogCommand = String.Format(" DROP TABLE {0}", model.ChildTablesNames[iChildTable]);

SqlCommand LogSel = new SqlCommand(LogCommand, con);

con.Open();

Int64 countRow = LogSel.ExecuteNonQuery(); con.Close();

}

return View("GetOptimisationSplitTable", model);

}

public ActionResult GetOptimisationSplitTable(Int64 ProjectId)

{

UserDataBox userBox = new UserDataBox(); QueryDataBox queryBox = new QueryDataBox(); TableAttrDataBox tableAttrBox = new TableAttrDataBox(); DTypesDataBox dtBox = new DTypesDataBox(); ProjectsDataBox projectBox = new ProjectsDataBox(); List<TableAttrCore> attrsForTable = tableAttrBox.GetTableAttrs(ProjectId); List<QueryCore> queries = queryBox.GetQueriesForProject(ProjectId); OptimisationBody Experiment = new OptimisationBody(attrsForTable.Count, queries); List<Int64[]> mas = Experiment.GetChildTabls(600000, queries, attrsForTable, dtBox.GetDataTypes(projectBox.GetProject(ProjectId).DBType.Id)) ;

OptimisationSplitTableModel model = new OptimisationSplitTableModel(); model.SplitResultChildTabes = mas; model.queriesForExperiment = queries; Int32 iterator = 1;

foreach (Int64[] m in mas)

{

String SplitCommand = String.Empty; SplitCommand += "select ";

for (int i = 0; i < attrsForTable.Count; i++) {

if (m[i] != 0 || i == 0) {

SplitCommand += String.Format("{0},", attrsForTable[i].AttributName);

if (i == attrsForTable.Count - 1)

{

SplitCommand = SplitCommand.Remove(SplitCommand.Length - 1); SplitCommand += String.Format(" INTO {0}{1} from {2} \n\n ", projectBox.GetProject(ProjectId).ProjectName, iterator, projectBox.GetProject(ProjectId).ProjectName);

model.ChildTablesNames.Add(String.Format("{0}{1}", projectBox.GetProject(ProjectId).ProjectName, iterator)); iterator++;

}

}

model.CreateTableCommands.Add(SplitCommand);

}

foreach (QueryCore q in queries)

{

String SelectForParentTableCommand = String.Empty;

SelectForParentTableCommand += " DECLARE @StartTime datetime, @EndTime datetime SELECT @StartTime=GETDATE(); select "; String WhereInstruction = " where ";

for (int i = 0; i < attrsForTable.Count; i++)

{

if (q.AttrsForQuery[i].IsInQuery) {

SelectForParentTableCommand += String.Format("{0},", q.AttrsF orQuery [i] .AttrF orTable.AttributName); if (i != 0) {

WhereInstruction += String.Format(" {0}='2tmCDKQjOJ' or",

q.AttrsF orQuery [i] .AttrF orTable.AttributName);

}

}

if (i == attrsForTable.Count - 1)

{

SelectForParentTableCommand = SelectForParentTableCommand.Remove(SelectForParentTableCommand.Length - 1);

WhereInstruction = WhereInstruction.Remove(WhereInstruction.Length - 2); SelectForParentTableCommand += String.Format(" from {0} ", projectBox.GetProject(ProjectId).ProjectName);

SelectForParentTableCommand += WhereInstruction;

SelectForParentTableCommand += "SELECT @EndTime=GETDATE() SELECT

DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in milliseconds]";

}

}

model.SelectCommandForOldTable.Add(SelectForParentTableCommand);

}

List<AttrChildTableCore> AttrWithChildTable = new List<AttrChildTableCore>();

for (int i = 0; i < attrsForTable.Count; i++) {

Int32 NumberChildTab = 1;

foreach (Int64[] m in mas)

{

if (m[i] == 1)

{

AttrWithChildTable.Add(new AttrChildTableCore

{

AttrName = attrsForTable[i].AttributName, TableName = String.Format("{0}{1}", projectBox.GetProject(ProjectId).ProjectName, NumberChildTab)

});

break;

}

NumberChildTab++;

}

foreach (QueryCore q in queries)

{

String SelectForChildTablsCommand = String.Empty; List<String> TableWithQuery = new List<string>();

SelectForChildTablsCommand += " DECLARE @StartTime datetime, @EndTime datetime SELECT @StartTime=GETDATE(); select "; String WhereInstruction = " where ";

for (int i = 0; i < attrsForTable.Count; i++) {

if (q.AttrsForQuery[i].IsInQuery)

{

SelectForChildTablsCommand += String.Format("{0}.{1},", AttrWithChildTable[i].TableName, AttrWithChildTable[i].AttrName);

TableWithQuery.Add(AttrWithChildTable[i].TableName);

if (i != 0)

{

WhereInstruction += String.Format(" {0}.{1}='2tmCDKQjOJ' or",

AttrWithChildTable[i].TableName, AttrWithChildTable[i].AttrName);

}

}

if (i == attrsForTable.Count - 1

{

SelectForChildTablsCommand = SelectForChildTablsCommand.Remove(SelectForChildTablsCommand.Length - 1); TableWithQuery = TableWithQuery.Distinct().ToList(); WhereInstruction = WhereInstruction.Remove(WhereInstruction.Length - 2); String FromForQuery = String.Empty; FromForQuery += " from ";

if (TableWithQuery.Count == 1)

{

FromForQuery += TableWithQuery[0];

}

else

{

for (Int32 m = 1; m < TableWithQuery.Count; m++) {

if (m == 1)

{

FromForQuery += String.Format(" {0} inner join {1} on {2}.Id={3}.Id ",

TableWithQuery[m - 1], TableWithQuery[m], TableWithQuery[m - 1], TableWithQuery[m]);

}

else

{

FromForQuery += String.Format(" inner join {0} on {1}.Id={2}.Id ",

TableWithQuery[m], TableWithQuery[m - 1], TableWithQuery[m]);

}

}

}

FromForQuery += WhereInstruction;

FromForQuery += String.Format(" SELECT @EndTime=GETDATE() SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in milliseconds] "); SelectForChildTablsCommand += FromForQuery;

model.SelectCommandForChildTable.Add(SelectForChildTablsCommand);

}

}

}

for (Int32 iChildTable = 0; iChildTable < model.CreateTableCommands.Count;

iChildTable++)

{

string ConnectStr =

WebConfigurationManager.ConnectionStrings["TestServer"].ConnectionString; SqlConnection con = new SqlConnection(ConnectStr);

string LogCommand = model.CreateTableCommands[iChildTable]; SqlCommand LogSel = new SqlCommand(LogCommand, con); LogSel.CommandTimeout = 0; con.Open();

Int64 countRow = LogSel.ExecuteNonQuery(); con.Close();

}

Int64 CommandForChildTableTime = 0;

for (Int32 iCommand = 0; iCommand < model.SelectCommandForChildTable.Count;

iCommand++) {

for (Int32 iFriquency = 0; iFriquency < queries[iCommand].Frequency; iFriquency++) {

string ConnectStr =

WebConfigurationManager.ConnectionStrings["TestServer"].ConnectionString; SqlConnection con = new SqlConnection(ConnectStr); string LogCommand = model.SelectCommandForChildTable[iCommand]; SqlCommand LogSel = new SqlCommand(LogCommand, con); LogSel.CommandTimeout = 0; ClearCASHDB(); con.Open();

SqlDataReader LogRead = LogSel.ExecuteReader(); LogRead.NextResult();

LogRead.Read();

model.AllElementForSumTimeForChildsAfterSplitTable += " " + (LogRead.GetInt32(0)).ToString();

CommandForChildTableTime += LogRead.GetInt32(0); con.Close();

}

}

model.TimeForChildsAfterSplitTable = CommandForChildTableTime; Int64 CommandForOldTableTime = 0;

for (Int32 iCommand = 0; iCommand < model.SelectCommandForOldTable.Count;

iCommand++) {

for (Int32 iFriquency = 0; iFriquency < queries[iCommand].Frequency; iFriquency++)

{

string ConnectStr =

WebConfigurationManager.ConnectionStrings["TestServer"].ConnectionString; SqlConnection con = new SqlConnection(ConnectStr);

string LogCommand = model.SelectCommandForOldTable[iCommand]; SqlCommand LogSel = new SqlCommand(LogCommand, con); LogSel.CommandTimeout = 0;

ClearCASHDB(); con.Open();

SqlDataReader LogRead = LogSel.ExecuteReader(); LogRead.NextResult();

LogRead.Read();

model.AllElementForSumTimeForOldTable += " " + (LogRead.GetInt32(0)).ToString();

CommandForOldTableTime += LogRead.GetInt32(0); con.Close();

}

}

model.TimeForOldTable = CommandForOldTableTime;

for (Int32 iChildTable = 0; iChildTable < model.ChildTablesNames.Count; iChildTable++)

{

string ConnectStr =

WebConfigurationManager.ConnectionStrings["TestServer"].ConnectionString; SqlConnection con = new SqlConnection(ConnectStr); string LogCommand = String.Format(" DROP TABLE {0}", model.ChildTablesNames[iChildTable]);

SqlCommand LogSel = new SqlCommand(LogCommand, con); con.Open();

Int64 countRow = LogSel.ExecuteNonQuery(); con.Close();

}

return View(model);

}

public void ClearCASHDB()

{

string ConnectStr =

WebConfigurationManager.ConnectionStrings["TestServer"].ConnectionString; SqlConnection con = new SqlConnection(ConnectStr); string LogCommand = "dbcc dropcleanbuffers;"; SqlCommand LogSel = new SqlCommand(LogCommand, con); con.Open();

Int64 countRow = LogSel.ExecuteNonQuery(); con.Close();

}

}

}

ПРИЛОЖЕНИЕ Б

Акты об использовании и внедрении результатов диссертационной работы

УТВЕРЖДАЮ Проректор по научно-десдедовательской

Акт

О практическом использовании в ФГБОУ ВО «Армавирский государственный педагогический университет» информационной системы повышения производительности хранилищ структурированных данных, разработанной Бельченко Ильёй Владимировичем

Комиссия в составе: начальника управления научно-исследовательской деятельностью, Арутюновой Т.С., доцента кафедры информатики и информационных технологий обучения, к.п.н., доц., Егизарьянц A.A., доцента кафедры информатики и информационных технологий обучения, к.псх.н, доц. Андрусенко Е.Ю. рассмотрела результаты внедрения информационной системы повышения производительности хранилищ структурированных данных.

Данная информационная система позволяет повысить производительность средств автоматизации, основанных на хранилище данных, провести анализ группы запросов на чтение данных хранилища, получить рекомендации по реструктуризации модели данных хранилища, получить программный код, необходимый для реструктуризации и оценки полученных результатов.

Информационная система повышения производительности хранилищ структурированных данных, разработанная Бельченко Ильёй Владимировичем, используются ФГБОУ ВО «Армавирский государственный педагогический университет» при повышении производительности информационной системы «Учет научных достижений научно-педагогических работников».

Председатель комиссии

Члены комиссии

Т.С. Арутюнова

A.A. Егизарьянц

Е.Ю. Андрусенко

Бобин В.В.

Акт

О практическом использовании в ООО «Транстройгрупп» информационной системы повышения производительности хранилищ структурированных данных, разработанной Бельченко Ильёй Владимировичем

Настоящий акт составлен по результатам опытной эксплуатации результатов научного исследования «Информационная система повышения производительности хранилищ структурированных данных» автора, Бельченко И.В.

Информационная система повышения производительности хранилищ структурированных данных используется в ООО «Транстройгрупп» системе электронного документооборота предприятия. В результате внедрения результатов данного исследования была повышена производительной информационной системы предприятия более чем на 15%. Указанное повышение производительности достигнуто за счет автоматической реструктуризации хранилищ данных, а также сгенерированного с помощью системы программного кода.

Информационная система повышения производительности хранилищ данных на основе методик кластеризации атрибутов, с применением технологий WEB-приложений реализована на платформе ASP.NET МУС 5, СУБД Microsoft Sql Server 2016.

Заместитель директора ООО «Транстройгрупп»

оо

Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.