Научная статья на тему 'Реализация сервиса хранения данных'

Реализация сервиса хранения данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
265
31
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
БАЗА ДАННЫХ / ВЕБ-ПРИЛОЖЕНИЕ / СЕРВЕР / DATA BASE / WEB-APPLICATION / SERVER

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

Описана программная реализация федеративного хранилища данных

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

IMPLEMENTETION OF STORAGE DATA SERVICE

In the article we present the program implementation of the federation data storage

Текст научной работы на тему «Реализация сервиса хранения данных»

УДК 004.4: 004.9: 528.9: 912.43

РЕАЛИЗАЦИЯ СЕРВИСА ХРАНЕНИЯ ДАННЫХ1

Суханов Владимир Иванович д.т.н., доцент

Уральский федеральный университет, Екатеринбург, Россия

Описана программная реализация федеративного хранилища данных

Ключевые слова: БАЗА ДАННЫХ, ВЕБ-ПРИЛОЖЕНИЕ, СЕРВЕР

UDC 004.4: 004.9: 528.9: 912.43

IMPLEMENTETION OF STORAGE DATA SERVICE

Sukhanov Vladimir Ivanovich Dr.Sci.Tech., associate professor

Ural Federal University, Yekaterinburg, Russia

In the article we present the program implementation of the federation data storage

Keywords: DATA BASE, WEB-APPLICATION, SERVER

Введение

Одним из ключевых направлений развития информационных технологий являются облачные вычисления с возможностью доступа к данным, предоставляемым различными провайдерами на свободной основе. Такими данными являются публичные сведения о юридических лицах, включая реквизиты банков, справочники адресов, видов деятельности, нормативные документы и другие сведения. Эксперты Gartner считают, что стремление пользователей делиться своими данными и иметь к ним доступ с разных цифровых устройств приведет к тому, что к 2016 году треть всех данных будет храниться в «облаках» [1].

Материал статьи продолжает обсуждение проблемы реализации экспериментального образца программного обеспечения (ЭО ПО) сервиса федеративного хранилища для общественных данных, приведенной в [2]. Инструментальные средства реализации ЭО ПО обсуждались в работе [3]. Далее рассматриваются детали организации мониторинга и взаимодействия прикладных программ с хранилищем через веб-сервисы по протоколам SOAP и REST.

1 Работа поддерживается Министерством образования и науки Российской федерации, ГК №14.514.11.4014

Концепции сервиса хранения данных

Представлением данных на уровне хранения в репозитории и передачи пользователю является XML-документ. Следовательно, описание структуры хранимых данных следует выполнить в формате XML Schema (http: //ru. wikipedia. org/wiki/XML_S chema). В этом случае схемы представления информации в XML файле становится некоторым аналогом описания таблицы реляционной СУБД или класса объектов в объектно-ориентированных базах данных. Языком манипулирования данных является XQuery, позволяющий исполнять запросы на выборку и форматирование информации к XML-документам и таблицам баз данных реляционных СУБД.

Общая схема хранилища показана на рисунке 1. Учет всех предоставляемых сервисом ресурсов ведется в репозитории, выполненном в СУБД PostgreSQL. Для обслуживания репозитория имеется веб-приложение для просмотра и редактирования учетной информации, выполняемого администратором системы.

Веб-интерфейс пользователей для загрузки ресурсов, получения копий ресурсов на локальные ЭВМ и выполнения запросов на извлечение данных из хранимых документов реализован как веб-приложение с авторизованным доступом и передачей данных по защищенному протоколу https. Доступ к ресурсам хранилища сторонних приложений выполняется при помощи вер-сервисов по протоколам SOAP и REST.

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

Рисунок 1 - Общая схема взаимодействия компонент сервиса

Разработка программы администрирования БД

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

• веб-браузер с поддержкой HTML 5;

• среда разработки приложений Netbeans 7.3. Разработка включает следующие шаги.

1) В Netbeans создается новое веб-приложение с именем «adminrepo».

2) В Netbeans создаем сущности на основе таблиц базы данных. При этом создаем новое соединение с БД PostgreSQL, указывая адреса, имена, логины, пароли и другие параметры созданной ранее БД репозитория. Выбираем все созданные ранее таблицы. Размещаем классы в пакете «entities»

3) В Netbeans создаем JSF страницы на основе сущностей. Выбираем все созданные ранее сущности. Размещаем сгенерированные программы в следующих пакетах (папках):

1) facades - фасады созданных сущностей;

2) controlers - контроллеры создаваемых страниц сущностей;

3) pages - страницы xhtml для просмотра и редактирования содержимого таблиц.

После генерации кода классов и страниц вручную откорректировать следующие фрагменты:

1) В классах сущностей для более понятного восприятия имен объектов в списках выбора. заменить тело метода toString на

public String toString() {

return <Ключевое поле записи> + ": " + <Имя

экземпляра>; }

2) На страницах создания и редактирования сущностей для полей типа «text» заменить тип компонента ввода inputText на inputTextarea для редактирования длинных многострочных текстов.

3) Отредактировать названия полей в интерфейсах пользователя, заменив английские слова на слова русского языка в файле Bundle.properties.

2) Для проверки работоспособности приложения запустить его на исполнение из среды №1:Ьеаш или из браузера по адресу Мр://1осаШов1:: 8080/аёп~лпгеро/.

Для защиты приложения администратора от несанкционированного доступа используется проверка полномочий пользователя Для этого в дескрипторе развертывания приложения web.xml добавляется ограничения безопасности:

<security-constraint>

<web-resource-collection>

<web-resource-name>repotxt</web-resource-

name>

<url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint>

<role-name>admins</role-name> </auth-constraint> </security-constraint> <login-config>

<auth-method>BASIC</auth-method> <realm-name>file</realm-name> </login-config> <security-role>

<role-name>admins</role-name> </security-role>

В дескрипторе glassfish-web.xml: <security-role-mapping>

<role-name>admins</role-name> <group-name>admins</group-name> </security-role-mapping>

В консоли администратора сервера Glassfish нужно добавить пользователя с именем admin и его паролем в разделе Configurations -server-config - Security - Realms - File - Manage user.

Веб-сервисы позволяют связывать сервер и клиента поверх протокола HTTP. Веб-сервисы могут быть реализованы разными способами: JAX-WS веб-сервисы SOAP и JAX-RS веб-сервисы REST.

При разработке сервисов пересылки файлов используется специальная технология мультидоступа multipart. Для разработки демонстрационного REST-сервиса загрузки файлов на сервер в среде Netbeans нужно создать новое веб-приложение в категории Maven и дополнить его следующим текстом [4]. Файл index.jsp:

<form action="upload/file/upload" method="post" enctype="multipart/form-data">

<p> Выбран файл : <input type="file" name="file" size="35" /> </p>

<input type="submit" value="3arpysMTb файл" /> </form>

Файл UploadFileService.java:

@Path("/file")

public class UploadFileService { @POST

@Path("/upload") http://ej .kubagro.ru/2013/04/pdf/65.pdf

@Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadFile(

@FormDataParam("file") InputStream uploadedInputStream,

@FormDataParam("file") FormDataContentDisposition fileDetail) {

String uploadedFileLocation = "uploaded/"

+ fileDetail.getFileName(); writeToFile(uploadedInputStream, uploadedFileLocation);

String output = "Файл сохранен в : " + uploadedFileLocation;

return Response.status(200).entity(output).build(); }

}

Файл pom.xml дополнить строками:

<repositories> <repository>

<id>maven2-repository.java.net</id> <name>Java.net Repository for Maven</name> <url>http://download.java.net/maven/2/</url> <layout>default</layout> </repository> </repositories> <dependencies> <dependency>

<groupId>javax</groupId>

<artifactId>javaee-web-api</artifactId>

<version>6.0</version>

<scope>provided</scope> </dependency> <dependency>

<groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.8</version> </dependency> <dependency>

<groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-multipart</artifactId> <version>1.8</version> </dependency> </dependencies>

Файл web.xml дополнить строками: <servlet>

<servlet-name>ServletAdaptor</servlet-name> <servlet-class> com.sun.jersey.spi.container.servlet.ServletContainer </servlet-class> <init-param> <param-name>

com.sun.jersey.config.property.packages</param-name> <param-value>com.user.upload</param-value> </init-param>

<load-on-startup>1</load-on-startup> </servlet> <servlet>

<servlet-name>Faces Servlet</servlet-name>

<servlet-class> javax.faces.webapp.FacesServlet</servlet-class>

<load-on-startup>1</load-on-startup> </servlet> <servlet-mapping>

<servlet-name>ServletAdaptor</servlet-name> <url-pattern>/upload/*</url-pattern> </servlet-mapping>

Для решения задач, стоящих перед ЭО сервиса, реализован сервис для пользователей, выполняющий следующие действия:

Получение перечня ресурсов, зарегистрированных на сервисе: @GET

@Path(7getResources/") @Produces(MediaType.APPLICATION_JSON) List<Resource> getResources(@QueryParam("description") String description);

Пример данного запроса http://localhost:8180/storage-service/ConsumerService/getResources?description=test. Для следующих запросов вызов аналогичен.

Получение перечня ресурсов, на которые подписан пользователь: @GET

@Path("/getSubscribedResources/") @Produces(MediaType.APPLICATION_JSON) Set<Resource> getSubscribedResources(@QueryParam("email") String email);

Получение перечня ресурсов, которыми владеет пользователь:

@GET

@Path("/getOwnedResources/") http://ej .kubagro.ru/2013/04/pdf/65.pdf

@Produces(MediaType.APPLICATION_JSON)

Set<Resource> getOwnedResources(@QueryParam("email") String

email);

Перечень запросов к ресурсу:

@GET

@Path("/getQueryForResource/") @Produces(MediaType.APPLICATION_JSON) List<Query> getQueryForResource(@QueryParam("resourceId") Long resourceId);

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Выполнение запросов к ресурсу. В запросе передаются параметры:

@GET

@Path("/executeQueryOnResource/") @Produces(MediaType.TEXT_XML) String executeQueryOnResource(@Context UriInfo info)

Заключение

Работы в области создания федеративных хранилищ в мировой практике находятся в начальном состоянии, что позволяет надеяться на получение в этом направлении полезных для практики результатов. Этому способствует готовность рынка свободных инструментальных средств разработки веб-приложений и веб-сервисов на языках программирования Java, Python, Ruby on Rails, широко используемых в облачных технологиях, и имеющийся широкий опыт использования этих инструментов для разработки веб-технологий для облаков.

Список литературы

1 Облачные вычисления (мировой рынок) [Электронный ресурс] // TAdviser. -М., 2012. - Режим доступа: http://www.tadviser.ru/index.php/ Статья: Облачные_вычисления_мировой_рынок (дата обращения: 15.01.2013).

2 Суханов В.И. Облачный сервис хранения данных / В.И. Суханов, О.Л. Чагаева // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета (Научный журнал КубГАУ) [Электронный ресурс]. - Краснодар: КубГАУ, 2013. - №02(86). - Режим доступа: http://ej .kubagro.ru/2013/02/pdf/50.pdf

3 Суханов В.И. Обработка XML-документов в JAVA EE / В.И. Суханов // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета (Научный журнал КубГАУ ) [Электронный ресурс]. -Краснодар: КубГАУ, 2013. - №02(86). - Режим доступа: http://ej .kubagro.ru/2013/02/pdf/44.pdf

4 File upload example in Jersey. [Электронный ресурс]. Режим доступа: http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/ (дата обращения: 27.12.2012).

References

1 Cloud computing (world market) [electronic resource] / / TAdviser. - M., 2012. -Mode of access: http://www.tadviser.ru/index.php/ Article: Облачные_вычисления_мировой_рынок (date accessed: 15.01.2013).

2 V. Sukhanov. Cloud storage service / V.I. Sukhanov, O.L. Chagaev / / Polythematic power electronic scientific journal of the Kuban State Agrarian University (Journal KubGAU) [electronic resource]. - Krasnodar KubGAU, 2013. - № 02 (86). - Mode of access: http://ej.kubagro.ru/2013/02/pdf/50.pdf

3 V. Sukhanov. Processing of XML-documents in a JAVA EE / VI Sukhanov / / Polythematic power electronic scientific journal of the Kuban State Agrarian University (Journal KubGAU) [electronic resource]. - Krasnodar KubGAU, 2013. - № 02 (86). - Mode of access: http://ej .kubagro.ru/2013/02/pdf/44.pdf

4 File upload example in Jersey. [Electronic resource]. Mode of access: http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/ (date accessed: 27.12.2012).

Работа поддерживается Министерством образования и науки Российской федерации, ГК №14.514.11.4014

i Надоели баннеры? Вы всегда можете отключить рекламу.