Дипломная работа




Скачать 147.68 Kb.
Название Дипломная работа
Дата публикации 10.06.2014
Размер 147.68 Kb.
Тип Диплом
literature-edu.ru > Информатика > Диплом

КемГУ

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

Дипломная работа



Константин Линник

28.05.2010



Содержание




Содержание 2

Введение 3

Постановка задачи 4

Функциональные требования к системе: 4

Архитектурные требования к системе 4

Анализ 5

Проектирование 6

Репозиторий 6

Лицензия 6

Выбор платформы 6

Выбор хранилища данных 7

Map-Reduce 8

Клиент 8

FTP Сервер 8

Реализация 10

Архитектура 10

Ядро системы 10

IoC контейнер 10

Авторизация и аутентификация 10

Представительский слой 10

Модель 11

Данные 11

Шаблон 11

Пакет 12

Пользователь 12

Системный документ 12

Конфигурация ИС 12

application.properties 12

applicationContext.xml 13

web.xml 13

Расширение ИС 13

Подготовка интерфейса модели 13

Реализация интерфейса 14

Реализация контроллера 14

Регистрация в диспетчере 14

Создание страницы-представления 15

Настройка прав доступа 15

Пользовательский интерфейс 15

Конструктор 15

Элементы 16

Представления 17

Шаблоны 17

Пакеты 17

Поиск 18

Пользователи 18

Просмотр 18

Представление по-умолчанию 18

Пользовательское представление 19

Заключение 20

Приложение I. Список литературы 21

Приложение II. Глоссарий 22


Введение



Постановка задачи

Функциональные требования к системе:


Спроектировать и реализовать систему, позволяющую:

  1. Создавать шаблоны метаданных

  2. Хранить и изменять как набор файлов, так и метаданные

  3. Производить поиск по метаданным

  4. Разделять права доступа к различным частям системы

  5. Создавать пользовательские представления данных

Архитектурные требования к системе


  1. Масштабируемость

  2. Модульность

  3. Расширяемость


Анализ



Проектирование

Репозиторий


В качестве репозитория для проекта был выбран Google Code1. Он предоставляет систему контроля ревизий Subversion2, удобный редактор документации с wiki-разметкой, багтрекер. Использование репозитория позволяет осуществлять совместную разработку командой программистов, повышает надежность хранения данных и хранит всю историю изменений кода, позволяя откатиться к любой версии. Также исходный код приложения свободно доступен по сети Internet. Современные среды разработки поддерживают интеграцию с репозиторием и предоставляют удобные инструменты для управления кодом.

Лицензия


Для размещения проекта в репозитории было необходимо выбрать одну из лицензий, по которой будет распространяться исходный код приложения. В качестве таковой была выбрана Apache Software License 23. Данная лицензия является одной из самых свободных, давая пользователю право использовать программное обеспечение для любых целей, свободно распространять, изменять, и распространять изменённые копии. Еще один повод для выбора данной лицензии — большинство компонентов и модулей ИС распространяются под лицензией ASL2.

Выбор платформы


В качестве базовой платформы была выбрана Java EE4. Java EE является промышленной технологией и в основном используется в высокопроизводительных проектах, в которых необходима надежность, масштабируемость, гибкость. Популярности Java EE также способствует то, что Sun предлагает бесплатный комплект разработки, SDK. Данная платформа построена на идеологии открытости, что позволяет подменить реализацию практически любой её.

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

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

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

Spring предлагает последовательную модель и делает её применимой к большинству типов приложений, которые уже созданы на основе платформы Java. Считается, что Spring Framework реализует модель разработки, основанную на лучших стандартах индустрии, и делает её доступной во многих областях Java.

Выбор хранилища данных


Первоначально планировалось использовать RDBMS PostgreSQL6. В связке с ORM библиотекой Hibernate7. Но в процессе реализации понадобилось поддерживать большое количество классов слоя доступа к данным, код оказался слишком неустойчивым (незначительные изменения в постановке задачи приводили к серьезным модификациям исходного кода). Неструктурированная природа данных плохо подходила к реляционной модели данных.

Были рассмотрены альтернативные способы хранения данных и найдено NoSQL хранилище данных CouchDB8, являющееся документ-ориентированным. Данные группируются в документы и хранятся в формате JSON, а языком выборки данных являются Map-Reduce функции, на языке JavaScript. Главным плюсом является отсутствие требований к единству записей (по аналогии с кортежами в реляционной алгебре).

Map-Reduce


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

Ход работы состоит из двух этапов:

  1. Map — операция предварительной обработки данных, применение некоторой функции к каждому документу. Поскольку отсутствует side-effect, данный этап легко разделяется на независимые потоки. Результаты данного этапа сохраняются в B-дереве, что позволяет в дальнейшем быстро находить нужные документы. На вход поступает документ, на выходе получаются набор пар Ключ-Значение, которые передаются на следующий шаг.

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

Клиент


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

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

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

FTP Сервер


Доступ к данным предоставляется при помощи встроенного FTP-сервера Mina11. Данный сервер предоставляет интерфейсы для тесной интеграции с приложением на платформе Java. И может быть сконфигурирован при помощи Spring IoC. Данный сервер запускается вместе с ИС и получает информацию о правах доступа из хранилища данных, что позволяет упростить управление пользователями и правами, а также сократить избыточность данных.

Реализация

Архитектура

Ядро системы

IoC контейнер


Inversion of Control — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах. Использование данного контейнера в системе позволяет заменять модули и компоненты без необходимости пересборки всего приложения. В качестве контейнера была выбрана реализация Spring IoC.

Центральной частью Spring Framework является Inversion of Control контейнер, который предоставляет средства конфигурирования и управления объектами Java с помощью обратных вызовов. Контейнер отвечает за управление жизненным циклом объекта: создание объектов, вызов методов инициализации и конфигурирование объектов путем связывания их между собой.

Объекты, создаваемые контейнером, также называются Управляемые объекты или Beans. Обычно конфигурирование контейнера осуществляется путем загрузки XML файлов, содержащих Определение Bean’ов и предоставляющих информацию необходимую для создания bean’ов.

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

Авторизация и аутентификация


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

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


Возможности, предоставляемые модулем Spring MVC, оказались слишком велики, поэтому был реализован упрощенный вариант диспетчера. Диспетчер пользовательских запросов конфигурируется при помощи бина urlMapping в applicationContext.xml. Отдельные обработчики должны реализовывать интерфейс IProcessable.

Модель


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

Исключение составляет интерфейс IUsr, являющийся транспортом информации о пользователях и правах между ИС и FTP сервером, и, как следствие, почти не содержащий логики.

Интерфейс

Реализация

Назначение

IAttachment

Attachments

Предоставление доступа к вложениям в пакеты

IFiles

Files

Обработка директорий при создании новых пакетов

IFilter

Filter

Поиск пакетов по критерию

IPackages

Packages

Управление пакетами

ITemplates

Templates

Управление шаблонами

IUsers

Users

Управление пользователями

IUsr

Usr

Транспортный формат данных для описания пользователя

Таблица . Интерфейсы модели

Данные


В хранилище находятся данные трех видов: шаблон, пакет, пользователь.

Шаблон


{
   "_id": "_design/имя_шаблона",
   "_rev": "ревизия",
   "data": {"Шаблон незаполненных данных"},
   "desc": "Краткое описание шаблона",
   "views": [
       {
           "name": "имя представления",
           "code": "function(данные_пакета){код, возвращающий строку, преобразованную из исходных данных;}"
       }
   ]
}

Листинг . Структура шаблона

Пакет


{
   "_id": "идентификатор документа",
   "_rev": "ревизия",
   "owner": "логин владельца",
   "description": "краткое описание",
   "template": "шаблон",
   "data": {"данные"},
   "_attachments": {
       "файл.вложение": {
           "content_type": "image/jpeg",
           "revpos": 2,
           "length": 103999,
           "stub": true
       }
   }
}

Листинг . Структура пакета

Пользователь


{
   "_id": "идентификатор документа",
   "_rev": "ревизия",
   "login": "логин пользователя",
   "password": "пароль",
   "name": "Имя пользователя",
   "roles": [
       "admin",
       "user",
       "anonymous"
   ]
}

Листинг . Структура пользователя


Системный документ


Документ _design/default содержит необходимые системные запросы:

  • filterByOwnerпоиск пакетов по имени

  • filterByTemplate — список шаблонов

  • filterByUser— список пользователей

Конфигурация ИС


В ИС имеются несколько конфигурационных файлов разного уровня.

application.properties


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

#CouchDB configuration

db.host=127.0.0.1

db.port=5984

db.name=hydrodynamics

#embedded ftp server configuration

ftp.path=d:/Stuff/Temp/ftp

Листинг . Настройка ИС

applicationContext.xml


В данном файле описываются конкретные реализации интерфейсов и взаимосвязь между ними, права доступа к разделам веб-интерфейса. Данный файл конфигурации используется IoC контейнером. Всего в файле 6 разделов:

  1. Подключение файла свойств application.properties

  2. Настройка бинов, реализующих интерфейсы модели

  3. Настройка контроллеров, обрабатывающих AJAX запросы

  4. Настройка диспетчера и сопоставление строки запроса обработчику

  5. Настройка FTP сервера, чтение конфигурации из файла application.properties

  6. Настройка прав доступа к разделам веб интерфейса для Spring Security

Разработчику системы могут быть интересны разделы 2,3,4,6. Далее будет более подробно рассмотрен процесс добавления нового компонента в ИС.

web.xml


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

Расширение ИС

Подготовка интерфейса модели


Все интерфейсы находятся в пакете org.blazer.sdast.model. Создается интерфейс, содержащий необходимые методы, каждый метод описывается средствами JavaDoc. В интерфейсе перед методами можно задать аннотацию с правами доступа, если аннотации нет, то вызов метода будет доступен всем.

public interface IAttachments {

@Secured({"IS_AUTHENTICATED_ANONYMOUSLY"})

String getAttachment(String doc, String name);

@Secured({"ROLE_USER"})

String putAttachment(String doc, String name, String contentType, String string);

}

Листинг . Настройка доменных прав

Реализация интерфейса


Создается класс, реализующий ранее созданный интерфейс. Все реализации модели находятся в пакете org.blazer.sdast.model.impl. После этого класс описывается во втором разделе файла applicationContext.xml.









Листинг . Задание реализации интерфейса
Здесь name — имя класса, по которому он будет создаваться IoC контейнером, class — имя созданного ранее класса, constructor-arg — аргументы, передающиеся в конструктор, ref — ссылка на имя другого объекта. Если объект должен быть НЕ синглтоном, то в бин нужно добавить атрибут scope="prototype".

Реализация контроллера


Создается класс, реализующий единственный метод process интерфейса IProcessable, где request и response — полученные диспетчером запрос и ответ соответственно.

public String process(HttpServletRequest request, HttpServletResponse response);

Листинг . Сигнатура метода process
Все обработчики находятся в пакете org.blazer.sdast.web.

Обработчик описывается в третьем разделе файла applicationContext.xml. В большинстве случаев обработчику будет передана ссылка на объект обслуживаемой им модели.







Листинг . Описание обработчика

Также обработчик должен сам задать кодировку, поскольку ниже уровнем, в диспетчере, это не сделано по техническим причинам.

response.setContentType("text/javascript;charset=UTF-8");

Листинг . Задание кодировки

Регистрация в диспетчере


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


   
       
           

           

            …
       

   


Листинг . Настройка диспетчера

Создание страницы-представления


В корневой директории создается jsp – страница с пользовательским интерфейсом. Данная страница будет обмениваться AJAX-запросами с контроллером. Интерфейс и пользовательская логика создается средствами HTML и JavaScript. Имеет смысл подключить библиотеку JQuery.

Настройка прав доступа


Заключительный этап — настройка доступа к представлению. Доступ настраивается в шестом разделе файла applicationContext.xml. Настройка аналогична диспетчеру: ключом является перехватываемый запрос, а значением — список ролей.

















Листинг . Права доступа

Пользовательский интерфейс

Конструктор


Конструктор доступен только пользователям с ролью расширенный. В конструкторе можно создать новый или отредактировать имеющийся шаблон. Также можно задать пользовательские представления.



Рисунок . Конструктор шаблонов

Элементы


В шаблоне могут находиться элементы трех типов:

Массив — установлена галочка [V]

Строка — примитивный объект, если нет подобъектов

Объект — составной объект, если имеются подобъекты

Кнопкой (+) добавляются новые элементы в соответствующий уровень, а кнопкой (Х) элементы удаляются вместе со всеми подобъектами

Представления


Представления создаются анонимной функцией, которая на вход получает данные пакета (). Данная функция должна вернуть HTML строку. Внутри функции доступна библиотека JQuery. Если не задано ни одного представления в режиме просмотра будет использовано представление по-умолчанию.

Шаблоны


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



Рисунок . Список шаблонов

Пакеты


В данном разделе приведен список пакетов со ссылками на просмотр и редактирование. Также можно отфильтровать по имени шаблона. Данный раздел доступен всем пользователям.



Рисунок . Список пакетов

Поиск


В данном разделе можно произвести поиск по пакетам данных. Критерий поиска — выражение на языке JavaScript. Для удобства вместо doc.data.a можно заменить на $a. Поиск является неиндексированным и, поэтому, время поиска увеличивается пропорционально размеру базы. Данный раздел доступен всем пользователям.



Рисунок . Поиск по пакатем

Пользователи


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



Рисунок . Управление пользователями

Просмотр

Представление по-умолчанию


Во всех пакетах доступно представление default, которое просто выводит иерархически все поля пакета.



Рисунок . Представление по-умолчанию

Пользовательское представление


Данная функция создает следующее пользовательское представление.

function(data){

var str = ""+data.data.str+"
";

for(var i=0;i

str+=""+data.data.obj[i].var+"
";

}

return str;

}

Листинг . Пользовательское представление


Рисунок . Пользовательское представление

Заключение



Приложение I. Список литературы


Apache FTPServer documentation [В Интернете]. - 2010 г.. - http://mina.apache.org/ftpserver/documentation.html.

Beginning CouchDB [Книга] / авт. Lennon Joe. - [б.м.] : Apress, 2009.

JQuery documentation [В Интернете]. - 2010 г.. - http://docs.jquery.com.

Spring Framework. Reference documentation 3.0 [В Интернете]. - 2009 г.. - http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html.

Spring Security. Reference documentation 3.0.2 [В Интернете]. - 2010 г.. - http://static.springsource.org/spring-security/site/docs/3.0.x/reference/springsecurity.html.

Version control with Subversion. [В Интернете]. - 2008 г.. - r3305. - http://svnbook.red-bean.com/en/1.5/index.html.

Приложение II. Глоссарий


Java EE — Java Platform, Enterprise Edition

JSON — JavaScript Object Notation

NoSQL — класс хранилищ данных не использующее реляционную алгебру

ORM — Object-Relational Mapping

RDBMS — Relational Database Management System

SDK — System Developer Kit

Subversion — Система контроля ревизий с централизованным репозиторием

Багтрекерсистема учета и контроля ошибок, найденных в программах, пожеланий пользователей, а также слежения за процессом устранения этих ошибок и выполнения или невыполнения пожеланий

ИС — Информационная Система, в данном случае Хранилище Данных SDaSt

Репозиторий — хранилище исходных текстов вместе с историей их изменения и другой служебной информацией

1 http://code.google.com/p/sdast

2 http://subversion.apache.org

3 http://www.apache.org/licenses/LICENSE-2.0

4 http://java.sun.com/javaee/

5 http://www.springsource.org/

6 http://www.postgresql.org/

7 http://www.hibernate.org/

8 http://couchdb.apache.org/

9 http://jquery.com

10 http://jqueryui.com

11 http://mina.apache.org/ftpserver/

Добавить документ в свой блог или на сайт

Похожие:

Дипломная работа icon Общие требования к структуре выпускной квалификационной работы выпускная квалификационная работа
Выпускная квалификационная работа (бакалаврская работа, дипломный проект, дипломная работа) состоит из
Дипломная работа icon Дипломная работа
Степень удовлетворенности пользователей в документах по музыкальному искусству 25
Дипломная работа icon Дипломная работа
Повышение качества результатов анонимного интернет-голосования методом анализа сетевых объектов
Дипломная работа icon Автореферат Дипломная работа
Структура работы: введение, основная часть (3 раздела), заключение, список использованных источников
Дипломная работа icon Дипломная работа
Умение ладить с реальным положением дел, перекрывая выходы: отказ от бегства, сопротивление и осуждение
Дипломная работа icon Дипломная работа
Могу даже представить к обсуждению два диплома. Но это, наверное, будет уже перебор
Дипломная работа icon Дипломная работа
Отсюда, важнейшей составляющей школьного образования должно являться нравственное развитие личности учащихся
Дипломная работа icon Пояснительная записка к дипломной работе
Дипломная работа содержит 87 страниц, 5 рисунков, 7 таблиц, 38 источников, 2 приложения, 2 листа графического материала
Дипломная работа icon Дипломная работа по специальности 032700 филология «Филология финского языка»
Ономатопоэтическая лексика: теоретические аспекты
Дипломная работа icon Дипломная работа студентки пятого курса дневного отделения «Допущено к защите на гак»
Феномен fanfiction в сетевой литературе: «низовая словесность» в сетевых публикациях
Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции