Заготовка к курсачу

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
\documentclass[12pt]{article}
\usepackage{ucs}
\usepackage[utf8x]{inputenc} % Включаем поддержку UTF8
\usepackage[russian]{babel} % Включаем пакет для поддержки русского языка
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,bindingoffset=0cm]{geometry}
\usepackage[pdftex]{graphicx, color}
\usepackage{subfigure}
\usepackage{color}
\usepackage{listings}
\usepackage[nooneline]{caption} \captionsetup[table]{justification=raggedleft} \captionsetup[figure]{justification=centering,labelsep=endash}
\renewcommand{\baselinestretch}{1.5}
\lstset{inputencoding=utf8x, extendedchars=false, keepspaces = true,
language=c}
\renewcommand{\lstlistingname}{Листинг}
\begin{document} % начало документа
\setcounter{tocdepth}{4} % chapter, section, subsection, subsubsection и paragraph
\setcounter{secnumdepth}{4}
\graphicspath{{Pictures/}}
\DeclareGraphicsExtensions{.png,.pdf,.jpg,.mps, .PNG}
\renewcommand{\contentsname}{\centering Содержание}
\parindent = 0.7cm
\begin{titlepage} % начало титульной страницы
\begin{center} % включить выравнивание по центру
\textit{Государственное образовательное учреждение высшего профессионального образования}\\%[0.3cm]
\Large«Московский государственный технический университет имени Н.Э. Баумана»\\
{(МГТУ им. Н.Э. Баумана)}\\%[0.4cm]
%\rule[+3mm]{7.5cm}{0.80mm}
\end{center}
\begin{flushleft} % выровнять содержимое по левому краю
\begin{tabbing}
MMMMММММMМ \= \kill
\large{ФАКУЛЬТЕТ} \> \large{\textit{ИНФОРМАТИКА И СИСТЕМЫ УПРАВЛЕНИЯ}} \\
\large{КАФЕДРА} \> \large{\textit{ТЕОРЕТИЧЕСКАЯ ИНФОРМАТИКА}} \\
\> \large{\textit{И КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ}}
\end{tabbing}
\end{flushleft}
\begin{center}
\Huge{РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА}\\
к курсовому проекту по курсу базы данных\\ на тему:\\
Сравнение применения встраиваемых СУБД LevelDB и SQLite для хранения конфигурации подсистемы обработки потока данных\\[0.5cm]
\begin{tabbing}
MMMMММММMMMMMMMMMM \= \kill
\Large{Студент} \> \Large{\textit{А. В. Сафонова}} \\
\Large{Руководитель курсового проекта} \> \Large{\textit{И. Э. Вишняков}}\\[0.5cm]
\end{tabbing}
\largeМосква 2014
\end{center}
\thispagestyle{empty} % не нумеровать страницу
\end{titlepage} % конец титульной страницы
\renewcommand{\abstractname}{{Аннотация}}
\setcounter{page}{2}
\begin{abstract}
Данный проект посвящен сравнению двух встраиваемых СУБД: SQLite –
реляционной базы данных, и LeveDB – хранилища типа ключ-значение. Его целью является понять, использование какой СУБД будет наиболее рациональным для задачи по хранению конфигурации подсистемы обработки потока данных. В работе описывается создание двух баз данных на основе одной предметной области. С их помощью производится тестирование и проверка того, какая из указанных СУБД имеет преимущество в плане производительности (скорости выполнения вставки, удаления и обновления данных), простоты и удобства написания кода при создании БД и при формировании запросов.
\end{abstract}
\clearpage
\tableofcontents %Содержание
\newpage
\part*{\large \centering ВВЕДЕНИЕ}
\addcontentsline{toc}{part}{ВВЕДЕНИЕ}
\hspace{\parindent}В наше время, когда объемы информации, которую нужно хранить и обрабатывать, достигли огромных размеров: появляется проблема высоконагруженных систем. В сфере баз данных большее и большее распространение получает направление NoSQL. Под этим термином скрывается большое количество продуктов с абсолютно разным устройством, но чаще всего под ним понимается противопоставление привычным реляционным базам данных, находящимся в использовании уже более 30 лет. Среди них можно выделить такие типы, как хранилища ключей и значений, объектно-ориентированные, документо-ориентированные, столбцовые и графовые базы данных. Проекты, относящиеся к этому направлению, отличаются от реляционных баз данных лучшей масштабируемостью, переносимостью и интеграцией с кодом. Тем не менее SQL базы данных не сходят со своих позиций: они устойчивы, в них легко поддерживать целостность данных, есть механизм транзакций и т.д. Поэтому на сегодняшний день разработчики все чаще сталкиваются в вопросом, какие средства лучше использовать при работе с данными – традиционные и знакомые всем реляционные базы данных или же новые, отвечающие специфическим требованиям, NoSQL аналоги. Естественно, ответ на этот вопрос зависит от области применения. \\\indent
Данный проект посвящен сравнению двух встраиваемых СУБД: SQLite – компактной реляционной базы данных, и LevelDB – хранилища типа ключ-значение. Его целью вляется сравнительная оценка использования каждой из СУБДдля решения задачи хранения конфигурации подсистемы обработки потока данных. Требуется проверить, какая из указанных СУБД будет иметь преимущество с точки зрения производительности (скорости выполнения вставки, удаления и обновления данных), простоты и удобства написания кода при создании БД и формировании запросов.
\newpage
\section[Постановка задачи]{\large Постановка задачи}
\subsection[Описание конфигурации потока данных]{\large Описание конфигурации потока данных}
\hspace{\parindent}Для того, чтобы лучше уяснить специфику данной задачи, надо выработать ряд требований к данным, которые нужно хранить и, в первую очередь, понять, почему же для этого удобно использовать базу данных. Независимо от того, какая конкретно информация хранится в файлах конфигурации, важно заметить, что их количество и размер может быть очень большим. Таким образом, для работы с ними невозможно хранить их в оперативной памяти. Если говорить о структуре файлов конфигурации (Рис. \ref{ris:conf}), то предполагается, что она будет обладать несколькими уровнями вложенности. Количество элементов каждого уровня не является фиксированным, и может постоянно изменяться (элементы могут добавляться и удаляться), в связи с чем хранение конфигураций в плоском файле является затруднительным. С учетом этого, для удобства проектирования модели данных, конфигурации можно будет разделить на две группы: часто изменяемые и редко изменяемые, размер единиц информации при этом будет невелик. Кроме того, нужно заметить, что информация, хранящаяся в конфигурации разнородна.\\
\begin{figure}[h!]
\center{\includegraphics[width=1.0\linewidth]{conf.PNG}}
\caption{Структура конфигурации}
\label{ris:conf}
\end{figure}
\indent Таким образом, требования к абстрактному описанию конфигурации потока данных можно обобщить следующим образом: это структура с произвольным количеством полей, которые могут постоянно меняться. Отсюда можно сделать вывод, что для хранения подобного набора информации может подойти такой тип NoSQL баз, как хранилище типа ключ-значение. Привлекательность данного способа заключается в его простоте. Нам не требуется проектировать строгую модель данных, и внесение изменений в набор полей структур не вызовет сложностей. Основными операциями тут являются операции вставки, нахождения и удаления записи. К минусам такого подхода можно отнести отсутствие поддержки всевозможных связей между данными, триггеров, индексов и т.д. Но в данном случае такими вещами придется пожертвовать, тем более в при проектировании не ожидается возникновения сложных связей.\\\indent
Впоследствии возможности этого способа организации данных будет интересно сравнить с возможностями базы данных, спроектированной в рамках традиционной реляционной модели данных.
\newpage
\part*{\large \centering ЗАКЛЮЧЕНИЕ}
\addcontentsline{toc}{part}{ЗАКЛЮЧЕНИЕ}
\hspace{\parindent}В ходе выполнения данного курсового проекта были разработаны и созданы две базы данных --- SQLite и LevelDB --- для сохранения в них конкретной конфигурации подсистемы обработки потока данных. Было произведено их сравнительное тестирование и получены результаты, на основании которых можно сделать вывод, что для создания хранилища конфигураций наиболее подходящей базой данных является SQLite, в том случае, если показатель скорости работы является приоритетным. В противном же случае, целесообразно выбрать LevelDB, в силу простоты и удобства ее использования.\\\indent Для более глубокого изучения производительности созданных баз с точки зрения поставленной задачи возможно их тестирование на более крупных конфигурациях (имеющих большее число уровней вложенности и количество узлов), а так же изучение влияния количества вставленных записей на скорость выполнения запросов.
\clearpage
\newpage
\bibliographystyle{utf8gost705u} %% стилевой файл для оформления по ГОСТу
\begin{flushleft}
\bibliography{biblio} %% имя библиографической базы (bib-файла)
\end{flushleft}
\end{document} % конец документа