ISSN 2225-7551

УДК 004.42:004.75

 

С.Д. Точилин, канд. физ.-мат. наук

Запорожский национальный технический университет, г. Запорожье, Украина

АНАЛИЗ ПРОИЗВОДИТЕЛЬНОСТИ SOAP И RESTFUL JAVA WEB-СЛУЖБ
ПОИСКА В ДАННЫХ СУБД POSTGRESQL

С.Д. Точилін, канд. фіз.-мат. наук

Запорізький національний технічний університет, м. Запоріжжя, Україна

АНАЛІЗ ПРОДУКТИВНоСТІ SOAP ТА RESTFUL JAVA WEB-СЛУЖБ
ПОШУКУ В ДАНИХ СКБД POSTGRESQL

Sergey Tochilin, PhD in Physico-mathematical Sciences

Zaporozhye National Technical University, Zaporоzhye, Ukraine

PERFORMANCE ANALYSIS OF SOAP AND RESTFUL JAVA WEB SERVICES FOR DATA SEARCH IN POSTGRESQL DBMS

Разработаны SOAP и RESTful Web-службы поиска в данных СУБД, а также программа-тестер для определения их производительности. C помощью созданных программ получены данные о производительности Web-служб при обработке различных объемов информации, хранящейся в СУБД PostgreSQL. Анализ данных тестирования был выполнен на основе математической аппроксимации. Полученные результаты свидетельствуют как о существенном влиянии технологии разработки службы на ее производительность, так и о целесообразности использования RESTful Web-служб при создании SOA-приложений для работы с СУБД PostgreSQL.

Ключевые слова: производительность, SOAP, RESTful, JAX-WS, JAX-RS, Web-служба, PostgreSQL.

Розроблені SOAP та RESTful Web-служби пошуку в даних СКБД, а також програма-тестер визначення їх продуктивності. За допомогою створених програм отримані дані про продуктивність Web-служб під час оброблення різних обсягів інформації, яка зберігається в СКБД PostgreSQL. Аналіз даних тестування був виконаний на основі математичної апроксимації. Отримані результати свідчать як про істотний вплив технології розроблення служби на її продуктивність, так і про доцільність використання RESTful Web-служб під час створення SOA-додатків для роботи з СКБД PostgreSQL.

Ключові слова: продуктивність, SOAP, RESTful, JAX-WS, JAX-RS, Web-служба, PostgreSQL.

SOAP and RESTful Web services for data search in the DBMS, as well as, a test program for determination of their performance had been developed. By means of created software applications obtained Web services performance data, while processing different amount of information, saving in PostgreSQL DBMS. Data analysis of test was executed on the basis of mathematical approximation. The results indicate a significant influence of service technology on its performance, as well as the feasibility of using RESTful Web Services by developing SOA applications for PostgreSQL DBMS.

Key words: performance, SOAP, RESTful, JAX-WS, JAX-RS, Web service, PostgreSQL.

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

Web-службы предоставляют IT-услуги в рамках слабосвязанных приложений, используя для этого, как правило, язык разметки XML и протокол НТТР [1; 2].

На основе Web-служб создаются как отдельные приложения, так и программные комплексы с сервис-ориентированной архитектурой (Service-Oriented Architecture – SOA), используемые многими компаниями. К ним можно отнести Amazon, Google Maps, Flickr и др.

Web-службы эффективно реализуют услуги облачных вычислений [3].

В тоже время, особое значение имеют службы, предоставляющие доступ к данным, хранящимся на Web-узлах. При этом в соответствии с [4], запросы на поиск являются наиболее важным типом транзакций информационного Web-узла. В этой связи актуальной является задача получения информации от Web-службы с максимальной оперативностью, которая зависит от того, каким образом она программно реализуется [5; 6].

Отметим также, что задача выбора оптимального программного обеспечения, реализующего Web-службу, тесно связана с задачей выбора или разработки программы-тестера службы, позволяющей определять ее производительность [6].

Постановка задачи. Программные средства JavaTM являются эффективной платформой для SOA. На ее основе разрабатываются Web-службы, поддерживающие различные протоколы и технологии [1;2]. В частности, службы, основанные на обмене XML-сообщениями, используют как простой XML-RPC, так и широко распространенный в настоящее время SOAP-протокол.

Для разработки SOAP Web-служб в Java, как правило, применяют JAX-WS-технологию, которая описывается спецификацией JSR 224 [2].

В последнее время для создания распределенных приложений используют RESTful Web-службы. RESTful Web-служба – служба, обмен данными с которой осуществляется по HTTP-протоколу. Для их разработки в Java применяют JAX-RS-технологию, которая соответствует спецификации JSR 311 [2].

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

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

Как известно, к наиболее распространенным и производительным СУБД, которые распространяют на условиях открытых исходных кодов, относят PostgreSQL [7].

Особенности производительности XML-RPC Java Web-служб поиска в данных PostgreSQL были изучены нами ранее в работе [6]. Однако подобных исследований для SOAP и RESTful Java Web-служб не было проведено.

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

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

Кроме того, был подготовлен объект исследования, он представлял собой базу данных (БД) СУБД PostgreSQL, которая имела восемь отношений (Data1 – Data8), с одной и той же структурой полей (два поля – ключевое и данных), но различным объемом хранимой информации , в которой осуществлялся поиск (от 1,25 MБайт до 10 Мбайт, шаг – 1,25 MБайт).

Для оценки и сравнения производительности SOAP и RESTful Java Web-служб, при работе с данной БД, мы определяли их время отклика (время, которое затрачивает служба на выполнение запроса пользователя) при работе с каждым отношением.

В соответствии с [4] для справедливо следующее выражение:

, (1)

где – полное время выполнения запроса в распределенном приложении; время обдумывания пользователя (среднее время, проходящее между получением пользователем ответа на свой запрос и отправкой нового запроса).

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

Первый из них состоял из следующей последовательности действий:

  1. В клиентском приложении зафиксировать время начала работы распределенного приложения.

  2. Выполнить п. 3–8 определенное число раз (число задает пользователь).

  3. Сформировать параметры запроса к Web-службе.

  4. Отправить из клиентского приложения запрос.

  5. В программной реализации Web-службы получить параметры запроса клиента.

  6. Осуществить поиск в данных СУБД с использованием параметров из п. 4.

  7. Отправить результат поиска клиенту.

  8. Получить в клиентском приложении результат поиска в данных СУБД.

  9. Зафиксировать время.

  10. Определить время работы распределенного приложения и сохранить его значение.

Второй алгоритм представлял собой сокращенную версию первого (без п. 4–8).

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

В тоже время программа-тестер имела простой интерфейс пользователя.

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

При этом программное обеспечение, использованное в данной работе, включало в себя сервер Apache Tomcat 7.0.55, Java-драйвер доступа к СУБД postgresql-9.3-1102.jdbc4.jar, jaxws-ri-2.2.8.zip и jersey-archive-1.18.zip, API для разработки JAX-WS и JAX-RS Web-служб соответственно.

Кроме того, в работе использовалась СУБД PostgreSQL-9.3.5.

Программы работали на персональном компьютере (CPU – 1,6 ГГц, RAM – 1 ГБайт).

При подготовке к проведению исследований производительности разработанных приложений на сервер Apache Tomcat устанавливались SOAP и RESTful Web-службы поиска в отношениях Data1 – Data8 СУБД PostgreSQL.

В ходе измерений, вначале в программе JaxTochno, в раскрывающемся списке “Service” выбирался тип Web-службы (SOAP или RESTful), после чего формировалась таблица “Request” с именами отношений СУБД, а также максимальными значениями параметров поиска в них. Для этих целей использовались поля ввода “Table” и ”Max”, а также кнопка “Enter” интерфейса пользователя.

Затем в поля ввода “URI” и “Reapet” вводились URI Web-службы, а также число ее обращений к отношениям при поиске в данных СУБД.

В наших исследованиях как SOAP, так и RESTful Web-служба выполняла 10 000 транзакций поиска для каждого из восьми отношений Data1 – Data8.

Запуск тестирования осуществлялся нажатием на кнопку “Run” программы-тестера.

В процессе тестирования распределенное приложение последовательно работало с данными всех таблиц БД.

При этом программа-тестер, для каждого отношения, определяла значение полного времени выполнения запроса , затем время обдумывания пользователя при формировании запроса и время отклика Web-службы при поиске в данных. После чего в таблице “Times” приложения JaxTochno появлялась информация о , и при поиске в отношениях Data1 – Data8 СУБД PostgreSQL.

С помощью кнопки “Save” результаты тестирования и его параметры, содержащиеся в полях ввода, раскрывающемся списке и таблицах программы JaxTochno, сохранялись в текстовом файле. В этих целях предварительно в поле ввода “File” вводилось имя файла для хранения данных.

На рис. точками и треугольниками изображены значения , полученные при тестировании. Точки – результат эксперимента для SOAP, треугольники – RESTful Web-службы.

Рис. Зависимости , при поиске в данных СУБД PostgreSQL, для SOAP и RESTful Web-служб,
кривые 1 и 2, соответственно. Точки и треугольники на рисунке – результаты тестирования

Как видно из этого рисунка, при восьмикратном увеличении объема информации поиска в СУБД время отклика возрастало незначительно (не более чем на 20 % по отношению к начальным значениям как для SOAP, так и RESTful служб).

В тоже время зависимость от , при поиске в данных СУБД PostgreSQL, имела нелинейный характер. Появление данной нелинейности может быть обусловлено влиянием различного рода факторов на время отклика Web-служб. Их описание приведено в работе [4].

Результаты тестирования были обработаны нами с помощью математической аппроксимации.

Для этих целей была использована дополнительная компьютерная программа, написанная нами на языке программирования Java на основе данных работы [8]. Эта программа реализовывала один из наиболее эффективных методов нелинейного оценивания параметров, а именно квазиньютоновский метод переменной метрики.

При этом предполагалось, что время отклика для Web-служб поиска в данных СУБД PostgreSQL может быть представлено в виде многочлена степени :

, (2)

где – постоянные коэффициенты.

Как выяснилось, в результате математической аппроксимации результатов тестирования на основе (2), коэффициент детерминации для использованной модели имел значения: 0,922 и 0,939 (при =1), 0,951 и 0,961 (=2), 0,997 и 0,998 (=3), для SOAP и RESTful служб соответственно.

Зависимости (2) с =3, полученные в результате аппроксимации данных эксперимента и наиболее точно их описывающие, также приведены на рис.

При этом, как показывают дополнительные исследования, функции с =3 являются монотонно возрастающими для 10,0 Мбайт.

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

То есть для создания высокопроизводительных Java Web-служб для работы с данными СУБД PostgreSQL целесообразно использовать программное обеспечение JAX-RS-технологии.

Выводы. Таким образом, в настоящей работе нами был выполнен анализ производительности SOAP и RESTful Java Web-служб поиска в данных СУБД PostgreSQL.

Как выяснилось, для разработанных служб зависимость времени отклика при поиске в данных с объемом 10,0 МБайт, хранящихся в БД, может быть описана монотонно возрастающей кривой третьего порядка.

В тоже время при исследованных объемах данных , хранящихся в БД СУБД PostgreSQL, RESTful Java, Web-служба является более производительной, чем аналогичная, на основе SOAP.

В дальнейшем предполагается провести подобные исследования с другими Web-серверами и СУБД. Кроме того, предполагается модернизировать разработанную программу-тестер для измерения производительности Web-служб при масштабируемых запросах.

Список использованных источников

  1. Хабибуллин И. Ш. Разработка Web-служб средствами Java / И. Ш. Хабибуллин. – СПб. : БХВ-Петербург, 2003. – 400 с.

  2. Машнин Т. С. Современные Java-технологии на практике / Т. С. Машнин. – СПб. : БХВ-Петербург, 2010. – 560 с.

  3. Облачные сервисы масштаба WWW / Т. Ноор, К. Шенг, Э. Нгу, Ш. Дустдар // Открытые системы. СУБД. – 2014. – № 07. – С. 26–29.

  4. Менаске Д. Производительность Web-служб. Анализ, оценка и планирование / Д. Менаске, В. Алмейда. – СПб., 2003. – 480 с.

  5. Performance Comparison of Web Service Engines in PHP, Java, and C / T. Suzumura, S. Trent, M. Tatsubori, A. Tozawa, T. Onodera // Proceedings of the IEEE International Conference on Web Services (ICWS 2008), 23–26 September, 2008, Beijing, China: proceedings. – 2008. – P. 385–392.

  6. Точилин С. Д. Производительность XML-RPC Web-служб поиска в данных СУБД MySQL и PostgreSQL / С. Д. Точилин, Д. С. Точилин // Вісник ЗДУ. 2010. № 1. С. 109–113.

  7. Уорсли Дж. PostgreSQL. Для профессионалов / Дж. Уорсли, Дж. Дрейк. – СПб. : Питер, 2003. – 496 с.

  8. Носач В. В. Решение задач аппроксимации с помощью персональных компьютеров / В. В. Носач. – М. : МИКАП, 1994. – 382 с.