Разработка высоконагруженного web-приложения для хранения и поиска информации о сочетаемости слов русского языка
Разработка высокопроизводительной системы для работы с языковыми корпусами русского языка. Словосочетания русского языка с дополнительной информацией по частоте их использования в текстах в основе модели данных системы. Проектирование структуры данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 19.09.2016 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
52
Размещено на http://www.allbest.ru/
Оглавление
- Введение
- 1. Постановка задачи
- 1.1 Формальная постановка задачи
- 1.2 Постановка задачи проектирования
- 1.3 Постановка задачи разработки
- 1.4 Постановка задачи тестирования
- 2. Исследовательская часть
- 2.1 Описание предметной области
- Сущности в предметной области
- 2.2 Обзор существующих аналогов
- 2.3 Исследование проектных решений
- Модель данных
- Проектирование структуры данных
- Сравнение структур данных
- Проектирование модулей системы
- Клиентская часть
- Модули логики приложения
- Модуль работы с хранилищем
- Описание взаимодействия модулей
- Проектирование системы интерфейсов
- Проектирование архитектуры системы
- Архитектура резервирования
- 3. Разработка системы
- 3.1 Выбор хранилища данных
- 3.2 Разработка структуры данных
- 3.3 Выбор языка программирования
- 3.4 Выбор КТС
- 3.5 Выбор среды разработки
- 3.6 Взаимодействие пользователя и приложения
- 3.7 Требования к профессиональному уровню пользователя
- 3.8 Примеры работы
- 3.9 Оценка производительности системы
- Заключение
- Список литературы
Аннотации
Данная магистерская диссертация посвящена разработке высоконагруженного web-приложения, которое предназначено для хранения и поиска информации о сочетаемости слов русского языка.
В ходе работы будет проведен анализ способов хранения данных, разработка и тестирование компонентов системы. После создания и тестирования системы будет проведена демонстрация работы.
Результатом разработки системы будет являться веб-приложение, в котором пользователи смогу осуществлять поиск информации по словосочетаниям, а также создавать новые словосочетания и вносить правки в существующие.
Глоссарий
KPI |
Ключевые показатели эффективности |
|
TCP |
transmission control protocol |
|
HTTP |
Hyper Text Transfer Protocol |
|
HTTPS |
HyperText Transfer Protocol Security |
|
СУБД |
Система управления базами данных |
|
БД |
База данных |
|
SQL |
Standard query language |
|
WWW |
World Wide Web |
|
REST |
Representational State Transfer |
Введение
WWW - World Wide Web она же всемирная паутина. Представляет собой распределенную систему предоставляющую доступ к документам расположенных на разных машинах, подключенных к сети Интернет. Но сейчас Интернет - это не только html документы, это всевозможная информация, социальные сети, фотографии, даже документы и наша социальная активность такая как запись ко врачу или обращение в налоговую службу перебирается во всемирную паутину, денежные переводы и покупки давно стали обыденностью. Сейчас слово интернет у всех на слуху и его популярность набирает обороты. Компании Яндекс в 2015 году провела исследование по росту популярности и проникновении интернета в России.
Рисунок 1 - аудитория и проникновение интернета в России
Как видно год от года пользователей становится только больше. Что в свою очередь ведет к увеличению нагрузки на популярные ресурсы в Интернете. Для примера данные по посещаемости десяти самых популярных ресурсов Интернета в России.
Таблица 1 - Рейтинг тoп десять Интернет ресурсов в России
Ресурс |
Количество посетителей |
|
ВКонтакте |
50 638 024 |
|
Одноклассники |
29 214 397 |
|
Яндекс Поиск |
21 074 710 |
|
Главная страница Яндекс |
21 015 840 |
|
Почта Mail.ru |
16 361 524 |
|
Яндекс Почта |
8 924 310 |
|
Avito |
7 171 995 |
|
Яндекс Новости |
6 350 990 |
|
Яндекс Картинки |
4 994 220 |
|
Ответы Mail.ru |
4 414 922 |
Данные взяты на момент 20.04.2016 года. Как видно из таблицы что самый "не популярный" ресурс выдает производительность больше 50 запросов в секунду. А если к такому количеству запросов ещё добавить сотни гигабайт информации, которую нужно обработать чтобы выдать конечному пользователю ту информацию, которую он хочет получить.
Для изучения и развития естественных языков используются языковые корпуса, но существует достаточно мало систем позволяющие работать с корпусами с высокой производительностью, так как объем корпуса может превышать сотни гигабайт. Высокая производительностью работы системы необходима для быстрого анализа данных которые находятся в корпусе. На данный момент таких систем очень мало. И передо мной стоит задача разработать именно такую высокопроизводительную систему для работы с языковыми корпусами русского языка.
приложение высоконагруженное русский язык
1. Постановка задачи
В данной работе передо мной поставлена задача спроектировать и разработать высокопроизводительное и отказоустойчивое веб приложение.
· Приложение должно обладать веб интерфейсом и работать с большинством современных браузеров.
· Модель данных для системы это словосочетания русского языка с дополнительной информацией по частоте их использования в текстах. Данные должны находится в хранилище. Так же необходим сравнительны анализ хранилищ, подходящих для этой задачи.
· По мимо хранения данных, должен быть реализовать пользовательский интерфейс с возможностью поиска.
· Все ответы системы на пользовательские запросы должны укладываться в определенный временной интервал.
· Система должна работать в рамках KPI
1.1 Формальная постановка задачи
Формально задачу можно описать следующим образом
F - Разрабатываемая система
x - данные введенные пользователем
t - Время за которое система ответила пользователю
время должно находится в интервале
tmax - максимальное время ответа системы
таким образом можно посчитать KPI системы
k - Ключевые показатели эффективности
1.2 Постановка задачи проектирования
Целью разработки приложения является создание системы, которая хранит словарные корпуса, а в частности словосочетания и позволяет пользователю искать словосочетания по главному или зависимому слову, а также находить тексты где эти словосочетания встречаются.
Задачи, поставленные перед системой:
1. Система должна иметь веб интерфейс
2. Система должна иметь возможность создать словосочетание
3. Система должна иметь возможность осуществлять поиск словосочетаний по главному или зависимому слову
4. Система должна осуществлять редактирование и удаление словосочетания
5. Система должна отслеживать состояние всех элементов системы и сигнализировать при проблеме
6. Система должна журналировать все действия пользователя и самой системы
7. Все модули системы должны иметь возможность конфигурирования.
1.3 Постановка задачи разработки
Задачи поставленные перед разработчиком системы
1. Разработать пользовательский интерфейс
2. Разработать механизм поиска
3. Разработать необходимые модули системы
1.4 Постановка задачи тестирования
Тестирование один из важных этапов в жизненном цикле системы и для тестирования отводится значительное количество ресурсов
Задачи, поставленные для тестировщика системы
· Проверка производительности системы
· Тестирование механизмов резервирования
· Проверка работы всех элементов интерфейса
· Регрессионное тестирование
· Проверка работы логики приложения
2. Исследовательская часть
2.1 Описание предметной области
Предметной областью системы являются языковые корпуса, а в частности словосочетания. В грамматике: сочетание двух или нескольких слов (в составе предложения), объединённых грамматически и по смыслу. Существует методика выделения синтаксически связанных фрагментов из неразмеченного текста. Основываясь на этой методике извлекается информация о синтаксической сочетаемости слов и моделях глагольного управления. Под синтаксической сочетаемостью слов понимаются разрешенные (и употребляемые) в языке пары слов, которые могут быть синтаксически связаны друг с другом в тексте. Под моделью глагольного управления понимается список предлогов, при помощи которых существительные могут присоединяться к данному глаголу, а также список разрешенных падежей, в которых могут находиться эти существительные. Использование указанной методики позволяет быстро создать базу данных синтаксической сочетаемости слов русского языка используя автоматизацию и сохраняя при этом сопоставимый уровень качества при резком росте объемов базы.
Сущности в предметной области
Из предметной области и технического задания были выявлены следующие сущности:
· Пользователь
· Система
· База данных
В роли пользователя выступает устройство имеющее интернет браузер
В роли системы выступает сервер приложения системы на котором реализована бизнес - логика системы
В роли базы данных выступает сервер хранилища, на котором находятся данные языкового корпуса
Отношение сущностей пользователь - система отражено на рисунке 2
Рисунок 2 - пользователь и система
Отношение системы и базы данных отражено на рисунке 3
Рисунок 3 - система и база данных
2.2 Обзор существующих аналогов
Основными инструментами изучения естественного языка являются корпуса текстов, Корпус - это представительные и полные собрания текстов, отражающие заданные явления языка. Очень часто необходимо получить информацию о синтаксической сочетаемости слов в корпусе, для выделения правил анализа и синтеза текстов, генерации зависимостей с использованием методов машинного обучения, извлечения и описания различных явлений в языке. Для этого обычно используются синтаксически размеченные корпуса к примеру, СинТагРус для русского языка. СинТагРус это корпус, содержащий в себе около 100 000 предложений. Но разработка подобных корпусов требует большого количества времени, в связи с чем объем аналогичных корпусов не так велик. Так же существующий на данный момент словари глагольного управления невелики по объему и не могут использоваться для автоматической обработки текстов. Так, например, словарь "Словарь сочетаемости слов русского языка" содержит в себе лишь 2500 статей (при наличии в русском языке около 30 000 глаголов), а словарь. Словарь глагольной сочетаемости непредметных имен русского языка - около 10 000 статей. Таким образом, существующие словари требуют существенного пополнения для их внедрения в процессы автоматической обработки текстов или их внедрения в процесс изучения русского языка. работа [Денисов 2002] содержит только 2500 статей, но они весьма весомы, в их приведена не только информация о сочетании слов с другими, но и толкования слов, а также их грамматические характеристики. Объем более старых работ, которые специализированы на глагольных управлениях [Розенталь 1986, Апресян 1982] также не большой. Что бы решить перечисленные задачи необходимо привлечение существующих электронных словарей таких как Словарь "КроссЛексика" который содержит порядка 2 миллионов связей, для каждой из которых есть примеры. Менее полный, но более распространенный словарь, в который включено порядка 10000 статей, но он всё еще не может охватить большую часть лексики. Часть словарей, которые были указаны выше, вместе с информацией, можно найти в Национальном корпусе русского языка (НКРЯ), они использовались для создания электронных словарей.
Продолжением этого метода стал ресурс Фреймбанк. Фреймбанк позволяет хранить данные о модели управления, но и синтаксические связи которых сейчас порядка 27000 пар. Тем самым данный проект имеет меньше информации, но информация в нем находится на более продвинутом уровне. извлечение модели сочетаемости, автоматизированным путем, уже есть нескольких работах для многих языков в том числе и русского. В них используются конечные автоматы для распознавания отдельных сочетаний таких как "глагол + группа существительного" или системы синтаксического анализа. Далее предлагалась процедура, которая выделяет из полученных результатов синтаксические связи между глаголом (а в случае - и существительным) и зависимыми словами.
Но невысокое качество синтаксического анализа и морфологическая неоднозначность сводили результат к тому, что на выходе был достаточно большой процент ошибок 5% - 20%, такой результат требовал ручного анализа. Большое количество выделяемых зависимостей делало работы по созданию базы данных сочетаемости слов почти невозможным, небольшое количество связей не приносило желаемого результата в сравнении с бумажными словарями. Для решения этой проблемы могут быть использованы размеченные корпуса. Сейчас НКРЯ содержит 30 миллионов предложений, в которых почти 210 миллионов словоупотреблений. Омонимия снята лишь с 516 000 предложений, содержащих почти 6 миллионов словоупотреблений.
Самый крупный на данный момент, синтаксически размеченный корпус СинТагРус по состоянию на данный момент содержит порядка 100 000 синтаксически размеченных предложений. По оценкам для того чтобы составить словарь глагольного управления для 25 000 - 30 000 глаголов требуется корпус примерно в 6 миллионов синтаксически размеченных предложений, таким образом объем существующих корпусов всё еще недостаточно. Поиск примеров сочетаемости слов может производиться при помощи широко используемых Национального корпуса русского языка (НКРЯ) или системы Sketch Engine (http://sketchengine. co. uk
Sketch Engine - платформа, которая предоставляет доступ к практически ста корпусам, тринадцать из которых, не считая параллельных, на английском языке. У Sketch Engine обширный набор инструментов для поиска,
сортировки и анализа. Часть из них уникальны, и позволяют значительно облегчить исследование. Стоит уделить внимание WordSketches - тип поиска, который выводит данные о частотности и значимости конструкций, содержащих искомую языковую единицу.
На базе Sketch Engine существует (от англ. soil - почва), состоит из 2537 научных статей 2000-2015 годов издания. Корпус состоит из 45424906 словоформ или 25545924 слов (лексем).
недостатки
ограниченная доступность для людей, косвенно относящихся к лингвистике тоже самое можно сказать и о Sketch Sketch
отсутствие метаданных: кроме названия оригинального файла
RNC Sketches.
Национальный Корпус Русского создал свой сервис скетчей по биграммам: RNC Sketches.
характеристики:
Синтаксические отношения размечены автоматически с использованием парсера зависимостей Russian MaltParser и морфологического анализатора с автоматическим снятием неоднозначности [2]. Использован инвентарь синтаксических отношений корпуса СинТагРус [3]. Предложное СинтО разбито на подклассы по предлогам и падежу пост предложного слова, союзное СинтО - по союзам. Синтаксические отношения приведены в порядке уменьшения частотности.
ПЛЮСЫ:
Удобно пользоваться, широкий ряд синтаксических отношений
Результаты поиска можно экспортировать в формате csv
Можно экспортировать все биграммы а в формате json!
Прозрачное, логичное устройство: биграммой считаются два слова, стоящих рядом, или же три, если центральное слово - предлог или союз.
Все слова в примерах имеют ссылки для перехода
Высокая производительность
МИНУСЫ:
Омонимия мешает получить достоверные данные, могут смешаться картины омонимов разный частей речи (например, "холодно" как предикатив и как наречие).
Маленький объем около 200 млн слов - некоторые слова не попали в этот объем.
Из основного НКРЯ не унаследованы мета текстовые признаки: жанр, тематика, год написания и т.д.
Нельзя получить контексты
2.3 Исследование проектных решений
Модель данных
Входные данные это тестовые файлы с словосочетаниями в специально заданном формате похожем на csv. Словосочетания в русском языке могут быть как с предлогами, так и без. На рисунке 4 схематично изображено возможные варианты словосочетаний.
Рисунок 4 - схема словосочетания
От сюда можно выделить следующие сущности в модели данных
Главное слово |
|
Предлог |
|
Зависимое слово |
Проектирование структуры данных
Словосочетаний возможно огромное количество и хранить их в исходном виде не удобно для поиска и работы, так как их объем на начало проектирование системы составляет 813096796 строк, и каждый раз даже используя алгоритмы полнотекстового поиска искать, в такие огромных количествах, не оптимально. Для сокращения объемов данных и более оптимальной работы разрабатывается следующая структура данных.
Главное слово |
||
Идентификатор |
Уникальное число целого типа |
|
Слово (главное) |
Текстовое поле |
предлог |
||
Идентификатор |
Уникальное число целого типа |
|
Предлог |
Текстовое поле |
Зависимое слово |
||
Идентификатор |
Уникальное число целого типа |
|
Слово (зависимое) |
Текстовое поле |
Так как вариантов словосочетаний по частям речи, в русском языке, создается структура, содержащая в себе варианты словосочетаний
Словосочетания |
||
Идентификатор |
Уникальное число целого типа |
|
Идентификатор (главного слова) |
Уникальное число целого типа |
|
Идентификатор (предлога) |
Уникальное число целого типа |
|
Идентификатор (зависимого слова) |
Уникальное число целого типа |
Тип данных |
Размер Мб |
|
Исходные данные |
12 |
|
Проектируемая структура |
4,1 |
Такая структура хранения позволяет экономить 2,92 раза дисковое пространство.
Сравнение структур данных
Будут рассмотрены структуры данных для выбора оптимальной и подходящей для решения задачи.
· Хранение в исходном виде
Один из вариантов хранить данные в исходном виде. Исходный вид - это запись словосочетания в виде строки разделенной символом точка с запятой ";".
Преимущества хранения в таком виде - это использование исходных данных для хранения. Таким образом не требуется дополнительных шагов в интеграции системы.
Недостатки хранения в данных в исходном виде.
Основной недостаток хранения данных является отсутствия ключа для поиска. Так же разительно усложняется сложность доступа к данным.
Так же существенным недостатком при выборе реляционного хранилища, так как хранения словосочетания в одной записи приведет к тому, что таблица будет находится даже не в первой нормальной форме.
Нормальная форма - свойство отношения в реляционной модели данных. Нормальная форма определяется как набор требований, которым должно удовлетворять отношение. Процесс приведения БД к нормальной форме называется нормализацией. Нормализацию нужно проводить для того, чтобы избежать избыточность данных. При этом не всегда увеличивается производительность и совершенно не обязательно уменьшается объем БД Цель приведения БД к нормальной форме заключается в том, чтобы сократить противоречивость данных, которые в ней хранятся.
Нормализация производится для того, чтобы избавится от избыточности данных и аномалий их обновления.
· Хранение в json
Один из вариантов хранить данные в исходном виде json. - текстовый формат обмена данными, основанный на JavaScript. Как другие текстовые форматы, JSON прост в чтении для человека. Формат считается независимым от языка. Существует множество библиотек для работы на любом языке программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON.
Достоинства.
В отличии от исходных данных в JSON в есть возможность задать ключ и доступ к данным становится быстрее
Недостатки
Формат избыточен
Данные в формате json возможно хранить не во всех типах хранилищ
· Хранение в xml
Один из вариантов хранить данные в исходном виде xml
Достоинства
Распространённый формат
Есть поддержки во многих языках программирования
Недостатки
Очень избыточный формат данных так как на каждое значение необходимо наличие пары тегов
Отсутствие ключа для поиска
Данные в формате xml возможно хранить не во всех типах хранилищ
· Хранение в предлагаемой структуре данных
Предлагается хранить данные в виде пары ключ значение где ключ - это числовой идентификатор, а значение строка со словом или предлогом.
Достоинства
Позволяет хранить такой тип данных во всех современных хранилищах, таких как key - value, реляционные базы данных, полнотекстовые хранилища.
Возможность построения индекса по любому из полей.
Недостатки
Для хранения необходима СУБД или иное хранилище данных
тип структуры |
наличие ключа |
избыточность |
поддержка хранилищ |
|
исходные данные |
нет |
нет |
да |
|
json |
да |
да |
не все |
|
xml |
нет |
да |
не все |
|
предлагаемое решение |
да |
нет |
да |
Из таблицы видно что самый подходящий для решения задачи структура данных это предлагаемое решение.
Проектирование модулей системы
Чтобы сделать систему максимально гибкой и масштабируемой следует разбить ее на модули. Так как не требуется разработать отдельный клиент или браузер для работы системы можно сразу перейти к проектированию модулей серверной части.
Серверная часть приложения - это набор модулей, которые можно разбить на три категории
· Клиентская часть - часть которая непосредственно отвечает за взаимодействие с клиентом
· Часть логики приложения - часть в которой реализованы почти все функции системы
· Хранилище - часть системы, отвечающая за хранение данных
Клиентская часть
Для работы интерфейса необходим веб сервер таким образом клиентская часть системы это web сервер. На данный момент существует два популярных веб сервера это nginx и Apache. Оба распространяются бесплатно. Совместно эти серверы обрабатывают 50% трафика во всем интернете. Проведем сравнительный анализ двух серверов
Таблица 2 - сравнение серверов
сервер |
год выпуска |
распространение |
исходные коды |
лицензия |
|
apache |
1995 |
бесплатно |
Да |
Apache License |
|
nginx |
2004 |
бесплатно |
Да |
Вариант BSD |
Таблица 3 - Доступные платформы
сервер |
linux |
windows |
|
apache |
да |
да |
|
nginx |
да |
да |
Оба сервера имеют схожие возможности и доступны на популярных платформах, так же есть открытый исходный код.
Проверим веб сервера на реальной работе. Для сравнения будет использоваться механизм ленивой страницы - lazyload.
Lazyload это механизм который позволяет осуществить отложенную загрузку изображений или контента, что актуально для страниц с большим количеством данных. Изображения загружаются по мере пролистывания страницы пользователем. Использование Lazy Load позволяет увеличить скорость загрузки страницы и уменьшить нагрузку на сервер.
Рисунок 5 - Паттерн lazy - load
Таблица 4 - Сравнение серверов на паттерне lazy - load
Генерация страницы, s |
Отдача сервером, ms |
Finish, s |
ОЗУ потрачено, mb |
|||||
apache |
nginx |
apache |
nginx |
apache |
nginx |
apache |
nginx |
|
0,131 |
0,043 |
730 |
174 |
1,54 |
0,769 |
5,95 |
3,08 |
|
0,135 |
0,035 |
637 |
116 |
1,4 |
0,548 |
5,95 |
3,08 |
|
0,133 |
0,033 |
651 |
110 |
1,39 |
0,545 |
5,95 |
3,08 |
|
0,155 |
0,041 |
623 |
115 |
1,32 |
0,542 |
5,95 |
3,08 |
|
0,152 |
0,049 |
661 |
124 |
1,45 |
0,546 |
5,95 |
3,08 |
|
0,133 |
0,04 |
928 |
208 |
1,7 |
0,781 |
5,95 |
3,08 |
|
0,136 |
0,034 |
676 |
109 |
1,44 |
0,548 |
5,95 |
3,08 |
|
0,133 |
0,035 |
604 |
115 |
1,28 |
0,532 |
5,95 |
3,08 |
|
0,13 |
0,033 |
726 |
116 |
1,44 |
0,524 |
5,95 |
3,08 |
Как видно из таблицы 4 nginx значительно быстрее имея такой же набор функций, как и apache.
Модули логики приложения
Полученный запрос от клиентской части веб сервер проксирует серверу приложения по протоколу http, сервер приложения обрабатывает запрос и передает его на обработку модулю работы с хранилищем так же через протокол http.
· Сервер приложения - слушает порт и принимает данные, если запрос корректный, он транслируется в приложения для связи с хранилищем для выполнения операций с данными. Приложение состоит из package. Package подмодуль программы который отвечает за свою деятельность и роль в приложении.
Рисунок 6 - сервер приложения
Описание пакетов
Configure - 52
Размещено на http://www.allbest.ru/
пакет отвечающий за конфигурацию приложения при запуске и дальнейшем изменении конфигурации во время работы приложения. для конфигурации используется toml формат. Toml -
Таблица 5 - форматы конфигураций
Format |
JSON |
YAML |
TOML |
INI |
|
Formal standard |
да |
да |
скоро |
нет |
|
Strongly typed |
да |
да |
string/int |
нет |
|
Easy to implement the entire standard |
да |
нет |
да |
да |
|
Awesome name! |
нет |
нет |
да |
нет |
|
Permits comments |
нет |
Только в первой строки |
да |
обычно |
|
diffs neatly |
нет |
да |
да |
да |
|
Can be programmatically updated without losing format or comments |
да |
нет |
скоро |
нет |
Как видно из таблицы самый мощный и удобный формат это TOML
Listen - 52
Размещено на http://www.allbest.ru/
это TCP сервер, который обрабатывает http запросы.
Рисунок 7 - listen пакет
Validator пакет проверяющий корректность данных. В случае не корректных данных возвращает соответствующую ошибку
Sender пакет отправляющий данные в модуль который осуществляет работу с хранилищем
Сервис журналирования - слушает порт по протоколу udp принимает данные о событиях, анализирует, агрегирует, и передает в хранилище событий. Для журналирования будет использоваться syslog спецификация. Протокол udp для передачи логов выбран не случайно, UDP работает по более простой модели передачи, чтобы обеспечить надёжность, упорядочить или сохранить консистентность данных. В связи с этим предоставляемый UDP сервис является ненадёжным, данные могут быть переданы не по порядку, содержать дубли или вообще потеряться. UDP предполагает наличие проверки ошибок и исправление непосредственно в приложении.
Таблица 6 - Syslog сервер
Название |
Лицензия |
Платформа |
|
Kiwi Syslog Server |
Shareware/Freeware |
Windows |
|
Syslog Watcher Pro |
Shareware/Freeware |
Windows |
|
Syslog ng |
Freeware |
Linux, Windows (Pro only) |
|
Syslog Server Free Tool |
Freeware |
Windows |
|
Small Syslog Server |
Shareware |
Windows |
|
Syslog Message Collector |
Freeware |
Windows |
В таблица 5 приведены самые популярные syslog сервера, но в системе будет
использоваться syslog ng, так как все модули системы могут работать как на Linux, так и windows.
Модуль работы с хранилищем
Система проектируется таким образом, что хранилище можно заменить на любое другое для этого используется принцип ядра. В модуле связи с хранилищем
под storage driver понимается программный модуль, с помощью которого устанавливается взаимодействие между приложением и базой данных. Данные в базе данных хранятся в специфическом для каждой базы собственном формате. С помощью драйвера базы данных веб-приложение получает возможность работать с данными, хранящимися в базе.
Описание взаимодействия модулей
Все модули системы имеют интерфейсы для взаимодействия
Система состоит из
Клиентского модуля
Сервер приложения
Сервис журналирования
Модуль взаимодействия с хранилищем
Рисунок 8 - схема модулей системы
Таким образом работа взаимодействие модулей происходит следующим образом nginx, как входящая точка для всей системы отображает интерфейс пользователю и через ajax передает на сервер приложения по протоколу http запрос на сервер приложения. Сервер приложения исходя из полученных данных формирует запрос к хранилищу.
Проектирование системы интерфейсов
Основным требованием к интерфейсам является его простота и удобство в использовании. В пользовательском интерфейсе необходимы следующие элементы:
· Главная страница
· Страница авторизации
· Страница регистрации
· Персональная страница пользователя
· Личный кабинет
· Страница для поиска
· Справка
Главная страница система должна содержать текстовую и графическую информацию для пользователя, элементы управления и ссылки для перехода к другим элементам системы
Страница авторизации должна содержать поля для ввода логина и пароля, если пользователь не зарегистрирован в системе осуществлять переход к странице регистрации, система должна оповещать пользователя если тот неуспешно прошел процедуру аутентификации. По мимо этого у пользователя должна быть возможность восстановить пароль.
Страница регистрации пользователя должна содержать поля необходимые для регистрации пользователя в системе. После успешной регистрации, пользователь должен попадать на страницу входа в систему
Персональная страница пользователя должна содержать инструменты и ссылки для работы пользователя с системой.
Личный кабинет пользователя - это страница на которой пользователь может установить персональные настройки, поменять пароль и почтовый адрес
Страница поиска должна содержать поля для ввода данных для формирования поискового запроса, а также должна содержать элемент для вывода найденной информации, так как данных может быть очень много, страница должна работать по паттерну lazy load.
Страница справки должна содержать данные о системе и контакты администратора системы
Для разработки интерфейса построим граф диалога.
Рисунок 9 - граф диалогов
Проектирование архитектуры системы
Исходя из требований и технического задания требуется разработать веб приложение. Веб приложение - это клиент серверное приложение. Где клиент - это браузер, а сервер это веб сервер или приложение выполняющее его роль. Протокол для взаимодействия используется http, а в качестве транспорта протокол tcp. Принцип работы протокола tcp показан на рисунке 10
Рисунок 10 - работа протокола TCP
TCP (transmission control protocol) - протокол передачи данных интернета шестого уровня модели OSI, создан для управления передачей данных. Сети и подсети, в которых совместно используются протоколы TCP и IP называются сетями TCP/IP.
В стеке протоколов IP TCP является протоколом транспортного уровня модели OSI.
Изнутри TCP выглядит как последовательность данных, но перед тем, как их передавать, необходимо установить соединения (handshake). Протокол повторяет запрос при потере данных и следит за дублированием копий, обеспечивая консистентность отправляемых данных и информирование инициатора передачи о результатах.
Реализации TCP обычно встроены в ядра ОС. Существуют реализации TCP, работающие в пространстве пользователя.
Когда идет передача от узла к узлу через Интернет, TCP функционирует на верхнем уровне между двумя конечными системами, например, браузером и веб-сервером. TCP обеспечивает надежную передачу потока данных. TCP контролирует длину отправленного сообщения, скорость передачи сообщения, сетевой трафик.
Аббревиатура HTTP расшифровывается как HyperText Transfer Protocol, "протокол передачи гипертекста". В соответствии со спецификацией OSI, HTTP является протоколом прикладного (верхнего, 7-го) уровня. Актуальная на данный момент версия протокола, HTTP 1.1, описана в спецификации RFC 2616. Но работа над разработкой HTTP 2.0 активно ведутся. HTTP открытый протокол и не использует шифрование данных, но есть модифицированная версия HTTP - HTTPS. В HTTPS используется TLS
TLS - безопасный транспортный уровень (Transport Layer Security). SSL - уровень защищённых сокетов (Secure Sockets Layer). Это криптографические протоколы, которые обеспечивают защиту передачи данных между узлами в сети Интернет.
В TLS и SSL применяется асимметричная криптография для проверки подлинности, симметричное шифрование для конфиденциальности и коды аутентичности сообщений для обеспечения консистентности сообщения.
TLS протокол довольно часто применяется в приложениях, работающих в Интернете: браузеры, клиенты электронной почтой, мессенджеры и IP-телефония (VoIP). Данный протокол базируется на спецификации SSL 3.0, созданной компанией Netscape Communications. На данный момент разработкой стандарта TLS занимается IETF. Принцип работы HTTPS c использованием TLS показан на рисунке 11.
Рисунок 11 - HTTPS
Рисунок 12 - Архитектура системы
так как система может работать как в защищенной зоне, так и в DMZ зоне, для обеспечения дополнительной безопасности весь входящий трафик проходит через специализированное ПО firewall - межсетевой экран. это комплекс аппаратных и программных средств сети, осуществляющий контроль и фильтрацию проходящих через него сетевых пакетов в соответствии с заданными правилами.
Архитектура резервирования
Так как система должна иметь резервирование необходимо спроектировать механизмы резервирования. Для этого необходимо выявить узкие места платформы. Так как изначально все запросы попадают на firewall и в случае выхода его из строя система не сможет обрабатывать запрос. От сюда следует что необходимо резервировать firewall
Рисунок 13 - Резервирование Firewall
Технология с использованием virtual ip простая, но очень эффективная. Принцип работы virtual ip следующий, на нескольких сервисах устанавливается ПО - будем называть его HA от английского high available которое устанавливает между собой согласование, кто из серверов главный - Активный, все остальные остаются пассивными. После этого По запускается все необходимые ресурсы (сервисы, приложения базы данных и другие ресурсы), после чего HA поднимает сетевой интерфейс. Принцип работы, когда HA не видят активный сервер, они начинают опять искать главного, но уже без учета ноды которая недоступна.
Архитектура системы с учетом отказоустойчивости показана на рисунке 14
Рисунок 14 - архитектура системы с учетом отказоустойчивости
3. Разработка системы
3.1 Выбор хранилища данных
Для хранения данных необходимо использовать хранилище, так как, исходя из модели данных, лучше всего подойдет реляционная БД. Базы данных используются уже довольно давно. Особенно популярны они стали из - за системы управления. СУБД должна позволять работать с данными. Модель данных предполагает определенный тип связи между сущностями из разных таблиц. Чтобы осуществлять хранение данных и производить над ними различные манипуляции, система управления базами данных должна использовать подходящую для этих целей структуру (табличную). В столбцах таблицы могут хранится данные разных типов. Строка таблицы может состоять из n - столбцов и иметь уникальный ключ, который будет хранится в той же таблице. Согласно реляционной модели данных, все эти сущности взаимосвязаны. Далее будут рассмотрены наиболее популярные системы управления базами данных.
SQLite - мощная встраиваемая СУБД
MySQL - самая популярная и распространённая СУБД
PostgreSQL - наиболее продвинутая СУБД
SQLite Легко встраиваемая в приложения БД. Так как это система состоит из одного файла, она позволяет использовать большой набор инструментов. При работе с СУБД обращения происходят напрямую к файлу, в котором хранятся данные. Такой подход обеспечивает быстроту и мощность.
Преимущества SQLite
Файловая структура - вся база данных состоит из одного файла, поэтому её очень легко переносить на разные машины
Использование стандарта SQL.
Реализовано масштабирование (удобно использовать при разработке и тестировании)
Недостатки SQLite
Отсутствует система пользователей
Невозможно улучшить производительность
MySQL - самая распространенная СУБД. MySQL обладает высокой функциональностью, свободно распространяется, используется во многих крупных проектах.
Преимущества MySQL
Простота в работе.
Простая установка.
Дополнительные приложения
Широкая функциональность
Поддержка большинства функционала SQL.
Большое количество функций, обеспечивающих безопасность
Масштабируемость
Скорость работы
Недостатки MySQL
Некоторые ограничения функционала
Проблемы с надежностью
Медленный процесс разработки.
PostgreSQL является самым продвинутым из всех трех рассмотренных СУБД. Данная система управления базами данных находится в бесплатном доступе и по максимуму соответствует SQL - стандарту. PostgreSQL при выпуске новых версий используют актуальные ANSI/ISO SQL стандарты.
Отличие PostgreSQL от прочих систем управления базами данных заключается в поддержке объектно ориентированного подхода к БД, который на данный момент востребован. В СУБД доступна полная поддержка транзакций: атомарность, последовательность, изоляционность, прочность (ACID). Postgre - СУБД с высокой производительностью, так как использует мощные технологии. Благодаря тому, что управление осуществляется многовариантным параллелизмом, достигается параллельность без блокирования возможности чтения. PostgreSQL возможно дополнять пользовательскими процедурами, которые называются хранимыми. Данные функции помогают выполнять типовые задачи.
PostgreSQL не так популярна, как MySQL, но, тем не менее, для работы с ней создано много приложений, несмотря на то, что собственный функционал обладает большой мощностью. Эта СУБД просто устанавливается с использованием стандартных менеджеров пакетов ОС.
Достоинства PostgreSQL
Открытый исходный код
Соответствие стандарту SQL.
Бесплатное распространение.
Большое community
Большое количество расширений.
Наличие хранимых процедур.
Объектно - ориентированный подход.
Недостатки PostgreSQL
Низкая производительность при простых операциях чтения.
Невысокая популярность по сравнению с конкурентами
Так как основная задача системы хранение данных и осуществлять поиск данных, в роли СУБД будет использоваться MySQL
3.2 Разработка структуры данных
Основываясь на модели данных необходимы следующие таблицы в базе данных
WORD - таблица в которой хранятся все уникальные главные слова.
DEPWORD - таблица в которой хранятся все уникальные зависимые слова
PRETEXT - таблица в которой хранятся все уникальные предлоги слов
VERB_PREP_NOUN_SCIENCE - таблица в которой хранятся все словосочетания
Рисунок 15 - ER диаграмма
3.3 Выбор языка программирования
Прежде всего выберем язык программирования, на котором будет писаться система. Выбираемый язык программирования должен обладать следующими свойствами:
кроссплатформенность;
высокая скорость выполнения;
богатая функциональность;
распространенность исходных кодов и библиотек;
Всем этим условиям удовлетворяет язык программирования golang
Популярность создания веб сервисов обусловливается присутствием значительного количества интегрированных средств для веб-приложений. Такие как:
извлечение из POST и GET запросов параметров,
работа с большинством популярных СУБД таких как (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO);
поддержка использования HTTP-headers;
работа с HTTP-авторизацией;
поддержка cookies и сессий;
работа файлами и сокетами;
обработка файлов на серверной стороне
Также для написания клиентской части для браузеров используются HTML5, javascript, средства CSS3 и подход ajax для асинхронного взаимодействия с сервером. В качестве формата передачи данных при асинхронном способе взаимодействия с сервером выберем формат JSON (JavaScript Object Notation).
Технологии серверной части
Серверная часть включает в себя следующие компоненты:
1) Web-сервер
2) Сервер приложения
3) Слой связи с БД
Web-сервер принимает HTTP-запросы от клиентов и формирует для них HTTP-ответы, состоящие из HTML-страницы, изображения, файла, медиа-потока или других данных.
Важными характеристиками для выбора web-сервера являются следующие характеристики:
web-сервер должен функционировать на платформе семейства linux, так как разработка приложения ведется на этой платформе;
web-сервер должен быть контейнером для СУБД MySQL 5.7 так как эта СУБД была выбрана в качестве СУБД.
свободно распространяемое ПО web-сервера;
гибкость конфигурации (открытый исходный код);
улучшенная безопасность от вирусов и атак;
В качестве веб-сервера был выбран программный продукт nginx
Сервер nginx является свободным веб-сервером с открытым исходным кодом,
Для связи с сервером БД можно использовать ODBC драйвер. ODBC (англ. Open Database Connectivity) - это программный интерфейс (API) доступа к базам данных, разработанный фирмой Microsoft, в сотрудничестве с Simba Technologies на основе спецификаций Call Level Interface (CLI) Стандарт CLI призван унифицировать программное взаимодействие с СУБД, сделать его независимым от поставщика СУБД и программно-аппаратной платформы.
В качестве операционной системы была выбрана ОС Linux Centos6.7, так как СУБД была выбрана того же семейства и сервер nginx функционирует на этой платформе. Также большинство клиентов работают на данной ОС.
3.4 Выбор КТС
Для работы системы состав КТС должен быть следующим:
· Рабочая станция;
· Серверы приложения и БД;
· Коммутатор, соединяющий серверы;
· Мобильный телефон.
Требования к компонентам системы
Требования к рабочей станции:
- компьютер типа IBM PC с тактовой частотой не менее 2 ГГц;
- Любая ОС с наличием браузера с поддержкой html
- доступ в Internet по выделенной или коммутируемой линии со скоростью не менее 1 Мбит/сек;
- установленные браузеры Mozilla Firefox, Opera, Google Chrome;
- оперативная память 2 Gb и больше;
- видеоадаптер SVGA;
- сетевая карта;
- стандартная 101 клавишная клавиатура;
- графический манипулятор “Мышь”.
Требования к серверу базы данных:
?компьютер типа PC с 2-х или 4-х ядерными процессорами c частотой 2000 Мгц и выше;
?оперативная память 2 Gb и больше;
?свободное пространство на дисковом хранилище 1 ТБ;
?HDD объемом не менее 2 ТБ;
?сетевая карта;
Требования к серверу приложений:
?компьютер типа PC с 2-х или 4-х ядерными процессорами c частотой 2200 Мгц и выше;
?оперативная память 16 Gb и больше;
?свободное пространство на дисковом хранилище 2 ТБ;
?HDD объемом не менее 4 ТБ;
?сетевая карта;
Требования к коммутатору и шлюзу:
Коммутатор и шлюз должны поддерживать современные стандарты передачи данных.
Выбор и обоснование сервера
Анализ проводится методом взвешенных сумм.
Проведем сравнительный анализ серверов от трех ведущих производителей. В качестве решений рассмотрим 3 сервера с различными характеристиками:
?Dell PowerEdge VRTX.
?HP Integrity BL860c i4 Server Blade.
?IBM System x3750 M4.
Приведем наиболее важные критерии оценки качества для выбора сервера:
К1 - количество ядер в процессорах [n]; К2 - частота процессора [ГГц]; К3 - максимальная оперативная память [ГБ]; К4 - максимальная дисковая память [ТБ]; К5 - поддержка инструкций шифрования данных [Да/Нет];
№ |
Критерий |
Dell PowerEdge VRTX |
HP Integrity BL860c i4 Server Blade |
IBM System x3750 M4 |
|
1 |
Количество ядер (2 ЦП) |
16 |
16 |
20 |
|
2 |
Частота процессора |
2.4 ГГц |
2.4 ГГц |
2.2 ГГц |
|
3 |
Максимальная оперативная память |
384 ГБ |
384 ГБ |
1.5 ТБ |
|
4 |
Максимальная дисковая память |
30 ТБ |
32 ТБ |
16 ТБ |
|
5 |
Поддержка инструкций шифрования данных |
Да |
Нет |
Да |
Для того чтобы параметры стали сравнимыми, значения нужно нормировать. Выберем для них весовые коэффициенты методом экспертных оценок.
1) Количество ядер - 3б;
2) Частота процессора - 2б;
3) Максимальная ОП - 2,5б;
4) Максимальная дисковая память - 1,5б;
5) Поддержка инструкций шифрования данных - б;
Сумма весов показателей должна быть равна 1, значит б= 1/10 = 0,1.
Качественные характеристики переводим в количественные используя таблицу 4, а количественные характеристики нормируем по формуле (4).
В таблице 13 приведены нормированные значения параметров сравниваемых серверов с учетом весовых коэффициентов.
Параметр |
Весовой коэффициент |
Dell PowerEdge VRTX |
HP Integrity BL860c i4 Server Blade |
IBM System x3750 M4 |
|
Количество ядер |
0,3 |
0,80 |
0,80 |
1,00 |
|
Частота процессора |
0,2 |
1 |
1 |
0,92 |
|
Максимальная ОП |
0,25 |
0,25 |
0,25 |
1 |
|
Максимальная дисковая память |
0,15 |
0,93 |
1,00 |
0,64 |
|
Поддержка инструкций шифрования данных |
0,1 |
1 |
0 |
1 |
|
Итого |
1 |
0,742 |
0,65 |
0,93 |
Сравнительный анализ показал, что наилучшим вариантом является сервер IBM System x3750 M4.
3.5 Выбор среды разработки
Обзор сред разработки
IDE |
Подсветка синтаксиса |
Менеджер проектов |
Сборка и запуск проектов |
дебаг |
|
Kate |
Да |
Нет |
Нет |
Нет |
|
XCode |
Да |
Да |
Да |
Да |
|
Emacs |
Да |
Нет |
Нет |
Нет |
|
Vim |
Да |
Да (дополнение) |
Да (дополнение) |
Да (дополнение) |
|
LiteIDE |
Да |
Да |
Да |
Да |
Как видно из таблицы для разработки лучше всего подходит LiteIDE
3.6 Взаимодействие пользователя и приложения
В качестве технологии взаимодействия клиентов с автоматизированной системой в сети Интернет была выбрана технология REST - Representational State Transfer. Эта технология базируется на удаленном вызове процедур представляя собой обычные HTTP-запросы, чаще всего GET и POST
надёжность
производительность
прозрачность системы взаимодействия;
простота интерфейсов;
масштабируемость;
портативность компонентов;
гибкость
способность эволюционировать, приспосабливаясь к новым требованиям (на примере Всемирной паутины).
Каждый запрос однозначно определяется URI (Uniform Resource Identifier - универсальный указатель ресурса). Каждая URI в свою очередь имеет строго заданный формат.
Приведем примеры URI-запросов к системе
· GET /index - отображение стартовой страницы
· GET /login - страница авторизации пользователя
· POST /login - отправка формы авторизации
· GET /registration - страница регистрации
· POST /registration - отправка формы регистр...
Подобные документы
Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.
курсовая работа [2,3 M], добавлен 31.01.2016Разработка web-приложения для оперирования данными с помощью базы данных и web-браузера в качестве клиента пользователя. Основные преимущества языка программирования Java. Осуществление редактирования, добавления информации и поиска по архивам данных.
дипломная работа [2,1 M], добавлен 30.09.2016Особенности управления информацией в экономике. Понятие и функции системы управления базами данных, использование стандартного реляционного языка запросов. Средства организации баз данных и работа с ними. Системы управления базами данных в экономике.
контрольная работа [19,9 K], добавлен 16.11.2010Разработка средствами языка PHP и Фреймворка Yii системы регистрации и аутентификации пользователей на сайте. Проектирование приложения с помощью языка UML, построение диаграммы прецедентов. База данных приложения. Страница регистрации пользователей.
отчет по практике [1,1 M], добавлен 15.09.2014Написание сайта с помощью выбранного языка программирования с минимальной интерактивностью. Изучение дополнительных аспектов языка гипертекстовой разметки HTML. Моделирование информационной структуры. Разработка структуры данных, центральный фрейм.
курсовая работа [1,0 M], добавлен 02.06.2015Различия между существующими диалектами SQL. Стандартизация языка SQL. Концепция баз данных. Эффективность организации данных. Структура языка SQL. Приближенные числовые типы. Интервальный тип данных. Обработка сложно структурированной информации.
курсовая работа [50,7 K], добавлен 29.05.2014Исследование основных отличий ассоциативных массивов от массивов скаляров. Разработка библиотеки классов. Выбор языка программирования. Сравнение языка C++ с Delphi, Java и JavaScript. Изучение методики тестирования и структуры тестового приложения.
практическая работа [390,2 K], добавлен 06.01.2013Общие данные об основных операторах языка SQL. Интерактивный режим работы. Использование языка SQL для выбора информации из таблиц, для вставки, редактирования и удаления данных в них. Связь между операциями реляционной алгебры и операторами языка SQL.
реферат [146,5 K], добавлен 06.02.2015Минимальные технические требования для работы с программным продуктом. Требования к условиям выполнения работ по проектированию. Выбор среды и языка программирования. Требования к функционированию. Инфологическая модель структуры хранения данных.
дипломная работа [3,3 M], добавлен 21.11.2011Выполнение операций, хранения, редактирования, систематизации данных. Рассмотрение подсистем разрабатываемой системы управления базами данных продуктового магазина. Разработка алгоритма функционирования системы и приложения для работы с базой данных.
курсовая работа [399,1 K], добавлен 26.08.2019Разработка базы данных "Тюрьма" для управления информацией, повышение оперативности выдачи информации, добавления и хранения информации о заключенных, охранниках и обслуживающем персонале. Использование языка Java, среды разработки NetBeans и СУБД Derby.
курсовая работа [996,8 K], добавлен 31.01.2016Создание программного обеспечения, организующего базу данных тренажёрного зала. Описание предметной области; предикаты языка Пролог для работы с БД: ввод/вывод, управление окнами. Разработка структуры базы данных, интерфейс; содержание файла "Zal.ddb".
курсовая работа [821,6 K], добавлен 07.06.2013Разработка информационно-аналитической системы агентства недвижимости. Обоснование выбора архитектуры базы данных и СУБД. Моделирование потоков данных (DFD диаграмм). Проектирование инфологической модели данных с использованием модели "сущность-связь".
дипломная работа [5,4 M], добавлен 06.06.2013Объекты модели хранения данных базы данных ORACLE. Взаимосвязь между логическими структурами. Средства манипулирования данными языка SQL, данными языка SQL. Структура выполнения простейших запросов. Формирование критерия отбора. Сортировка данных.
презентация [120,1 K], добавлен 14.02.2014Разработка информационной системы административного управления. Выбор языка и среды программирования. Структура взаимодействия информации. Требования к программно-аппаратному окружению. Создание программы в Delphi и связывание ее с базой данных.
курсовая работа [1010,9 K], добавлен 08.10.2015Классификация моделей построения баз данных. Работа с реляционными базами данных: нормализация таблиц, преобразование отношений полей, преобразование функциональной модели в реляционную. Понятие языка определения данных и языка манипуляции данными.
реферат [123,0 K], добавлен 22.06.2011Анализ предметной области, этапы проектирования автоматизированных информационных систем. Инструментальные системы разработки программного обеспечения. Роль CASE-средств в проектировании информационной модели. Логическая модель проектируемой базы данных.
курсовая работа [410,6 K], добавлен 21.03.2011Основные подходы к организации баз данных, компоненты языка Delphi, используемые для их построения. Разработка программного обеспечения - базы данных "Школа", предназначенной для хранения информации об учащихся, их успеваемости по различным дисциплинам.
курсовая работа [739,8 K], добавлен 14.07.2012Анализ деятельности гостиницы. Структурный анализ бизнес-процесса на основе IDEF0-модели. Особенности построения инфологической и даталогической модели данных. Аспекты проектирования базы данных гостиницы с использованием программного языка Delphi.
курсовая работа [1,6 M], добавлен 15.02.2014Разработка программного обеспечения для автоматизации доступа, обработки, вывода информации об услугах автосервиса и его клиентах с использованием языка программирования С# и MySQL. Проектирование интерфейсов системы. Схема алгоритма работы программы.
курсовая работа [665,6 K], добавлен 02.04.2015