Научная статья на тему 'Производительность RESTful и soap РНР Web-сервисов при поиске в данных PostgreSQL'

Производительность RESTful и soap РНР Web-сервисов при поиске в данных PostgreSQL Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
157
38
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОИЗВОДИТЕЛЬНОСТЬ / PERFORMANCE / RESTFUL / SOAP / WEB-СЕРВИС / WEB SERVICE / POSTGRESQL / PL/PGSQL

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Точилин С.Д.

Разработаны RESTful и SOAP РНР Web-сервисы, использующие команды SQL и PL/pgsql хранимые функции при запросах к PostgreSQL на поиск в данных, а также Java программа-тестер для определения их производительности. C помощью созданных программ получены данные о производительности Web-сервисов при обработке различных объемов информации, хранящейся в базе данных PostgreSQL. Результаты исследований, полученные для RESTful и SOAP Web-сервисов, указывают на более высокую производительность RESTful сервиса при поиске в данных PostgreSQL с использованием, как команд SQL, так и хранимых функций.

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

PERFORMANCE OF RESTFUL AND SOAP PHP WEB SERVICES FOR DATA SEARCH IN POSTGRESQL

RESTful and SOAP PHP Web services that use SQL instructions and PL/pgsql stored functions at queries to PostgreSQL for data search and also Java program tester for determination of their performance were developed. The created programs provided the performance data of Web services while processing of various amounts of information stored in the PostgreSQL database. The research results obtained for RESTful and SOAP Web services indicate higher performance of RESTful service for data search in the PostgreSQL with use, both SQL instructions, and stored functions.

Текст научной работы на тему «Производительность RESTful и soap РНР Web-сервисов при поиске в данных PostgreSQL»

УДК 004.42:004.75

С.Д. ТОЧИЛ1Н

Запор1зький нацюнальний техшчний ушверситет

ПРОДУКТИВН1СТЬ RESTFUL ТА SOAP РНР WEB-CEPBICIB ПРИ ПОШУКУ В ДАНИХ POSTGRESQL

Розроблен RESTful i SOAP РНР Web-cepeicu, як використовують команди SQL та PL/pgsql збереженi функцП при запитах до PostgreSQL на пошук в даних, а також Java програма-тестер для визначення ïx продуктивностi. З допомогою створених програм отриман данi про продуктивтсть Web-сервiсiв при обробц ргзних обсягiв тформацп, яка збер^аеться в 6u3i даних PostgreSQL. Результати до^джень, отримаш для RESTful та SOAP Web-сервiсiв, вказують на бшьш високу продуктивнкть RESTful сервку при пошуку в даних PostgreSQL з використанням, як команд SQL, так i збережених функцш.

Ключовi слова: продуктивтсть, RESTful, SOAP, Web-сервiс, PostgreSQL, PL/pgsql.

С.Д. ТОЧИЛИН

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

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

Разработаны RESTful и SOAP РНР Web-сервисы, использующие команды SQL и PL/pgsql хранимые функции при запросах к PostgreSQL на поиск в данных, а также Java программа-тестер для определения их производительности. C помощью созданных программ получены данные о производительности Web-сервисов при обработке различных объемов информации, хранящейся в базе данных PostgreSQL. Результаты исследований, полученные для RESTful и SOAP Web-сервисов, указывают на более высокую производительность RESTful сервиса при поиске в данных PostgreSQL с использованием, как команд SQL, так и хранимых функций.

Ключевые слова: производительность, RESTful, SOAP, Web-сервис, PostgreSQL, PL/pgsql.

S.D. TOCHILIN

Zaporizhzhia National Technical University

PERFORMANCE OF RESTFUL AND SOAP PHP WEB SERVICES FOR DATA SEARCH IN POSTGRESQL

RESTful and SOAP PHP Web services that use SQL instructions and PL/pgsql stored functions at queries to PostgreSQL for data search and also Java program tester for determination of their performance were developed. The created programs provided the performance data of Web services while processing of various amounts of information stored in the PostgreSQL database. The research results obtained for RESTful and SOAP Web services indicate higher performance of RESTful service for data search in the PostgreSQL with use, both SQL instructions, and stored functions.

Key words: performance, RESTful, SOAP, Web service, PostgreSQL, PL/pgsql.

Постановка проблеми

При розробщ сучасних розподшених комп'ютерних систем широко використовуеться серв1с-ор1ентована архитектура (СОА).

Для практично1 реал1заци розподшених систем з СОА застосовують технологи Web-сервiсiв (Web-служб) [1-3].

Web-сервiси надають Web-послуги в рамках слабозв'язаних Web-додатшв. До таких послуг, зокрема, вшносяться послуги доступу до шформацп, що збертаеться в базах даних (БД), як створюються та тдтримуються певною системою керування БД (СКБД). При цьому для доступу до збережених даних використовують запити до вшповшно1 СКБД, яш, як правило, реалiзують на структурованш мовi запипв (Structured Query Language - SQL) у виглад команд SQL.

У той час для тдвищення ефективносп роботи Web-додатшв, яш працюють з даними, зашсть команд SQL застосовують збережеш процедури та функцп СКБД [4].

1х використання, у вщповщносп з [4], зокрема, дозволяе:

- Забезпечити додатковий захист даних.

- Мiнiмiзувати змши коду додатка при змш структури БД.

- Зменшити мережевий трафж, обумовлений обмшом шформацп з сервером СКБД.

- 1нкапсулювати лопку роботи з БД.

- Шдвищити транспортабельнiсть додатк1в для роботи з СКБД.

Однак при використанш збережених процедур та функцш може змшитися продуктивнiсть Web-додатк1в, як1 працюють з iнформацieю.

В той же час, одною з основних вимог, як пред'являються до Web-сервiсiв, е оперативнiсть надання Web-послуг, яка залежить вiд того, яким чином сервю програмно реалiзуеться [5-7].

При цьому актуальна задача вибору оптимального програмного забезпечення, що реалiзуе Web-сервк, тiсно пов'язана iз задачею вибору або розробки програми-тестера сервiсу, що дозволяе визначати його продуктивнiсть [7].

Анaлiз останшх дослiджень i публжацш

Програмнi засоби РНР е ефективною платформою для СОА. На !! основi розробляються Web-cервiси, яш пiдтримують рiзнi протоколи та технологи [8]. Зокрема, SOAP-протокол, який використовують сервiси для обмiну XML-повiдомленнями.

Сучасш розподiленi системи з СОА широко використовують RESTful Web-сервiси, як1 представляють вiддаленi ресурси за допомогою HTTP-протоколу [8,9].

При цьому, до вщдалених ресурав можна вiднести й окремi записи, як1 зберiгаються в БД та являються доступними для сервюу. В той же час, дат таких БД, ктент RESTful Web-сервюу може одержувати, додавати, змiнювати та видаляти, використовуючи для цього певним чином HTTP -методи GET, PUT, POST i DELETE, вщповщно, при зверненш Web-додатка до СКБД.

Платформа РНР мае штерфейс програмування додатшв, достатнiй для розробки RESTful Web-сервiсiв. Особливостi i'x реалiзацil на основi РНР API розглядаються в [8,9].

Web-сервюи широко використовуються для доступу до шформацп, яка збертаеться в БД СКБД, розмщених на Web-вузлах. При цьому, вiдповiдно до [10], запит до СКБД на пошук у даних е найбшьш важливим типом транзакцiй iнформацiйного Web-вузла.

Як вiдомо, до найпоширенiших та продуктивних СКБД, як1 поширюють на умовах вщкритих вихiдних кодiв, вщносять PostgreSQL [11-13]. При цьому, при робот з даними PostgreSQL застосовують, як команди SQL, так i збережеш функцп, як1 створюють за допомогою мови PL/pgsql [11-13].

Особливосп продуктивностi SOAP РНР Web-сервiсiв при використанш команд SQL у запитах до PostgreSQL на пошук в даних, якими вона керуе, були дослщжеш нами рашше в робот [6]. В той же час подiбних дослщжень для RESTful РНР Web-сервiсiв не було проведено.

Крiм того не було проведено дослщжень продуктивностi RESTful та SOAP РНР сервгав, як1 використовують збереженi функцп при пошуку в даних PostgreSQL.

Формулювання мети дослiдження

У данш роботi було поставлена задача аналiзу продуктивностi RESTful i SOAP РНР Web-сервiсiв, як1 використовують команди SQL та функцюнально подiбнi PL/pgsql збережеш функцп при пошуку в даних PostgreSQL, для визначення оптимального програмного забезпечення, що працюе з PostgreSQL. З щею метою передбачалося також розробити програму-тестер з простим штерфейсом користувача.

Викладення основного мaтерiaлу дослвдження

Для розв'язання поставлено! задачi було розроблено два варiанти розподiлених додатшв, яш у своему складi мали однакову ментську частину (програма-тестер), але рiзнi Web-сервiси (RESTful та SOAP), розроблеш на основi РНР-технологп.

Також були шдготовлеш об'екти дослiдження - 7 таблиць (Data1-Data7) БД PostgreSQL, яш мали однакову структуру полiв (два поля - ключове та даних), але рiзний обсяг збережених даних V , у яких здшснювався пошук (вiд 100 КБайт до 1 МБайт, крок - 150 КБайт).

При аналiзi продуктивносп Web-сервiсiв нами використовувався 1х час вщгуку т , час, який витрачае сервiс на виконання запиту користувача.

Зпдно з [10], для визначення т можна використовувати вираз:

т = Т-1, (1)

де Т - час виконання запиту в розподшеному додатку;

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

Визначення часу вщгуку т Web-сервiсiв здiйснювалося нами за допомогою програми-тестера RSTochno, розроблено! для виршення поставлено! в данш робоп задачi. З цiею метою вона спочатку одержувала значення Т та í при послщовному виконанш розподiленим додатком двох подiбних алгорштшв.

Перший з них складався з тако! послiдовностi дiй:

1. У ментському додатку зафжсувати час початку роботи розподшеного додатка.

2. Виконати п.3 - п.8 певну к1льк1сть р^в (значения кiлькостi визначае користувач).

3. Сформувати параметри запиту до Web-сервку.

4. Вiдправити з клiентського додатка запит.

5. У програмнш реалiзацil Web-сервiсу одержати параметри запиту мента.

6. За допомогою команди SQL або збережено! функцп здiйснити запит до PostgreSQL на

пошук в даних з використанням параметрiв з п.3.

7. Вiдправити результат пошуку клiентовi.

8. Одержати в клентському додатку результат пошуку в даних.

9. Зафжсувати час.

10. Визначити час роботи розподшеного додатка та зберегти його значення.

Другий алгоритм являв собою скорочену версiю першого (без виконання п.4 - п.8).

При цьому запит до кожного сервку складався з iменi таблиц даних БД PostgreSQL, параметра пошуку в нш, який у ходi експерименту змiнював значення випадковим образом вш 1 до максимально можливого для кожного об'екта дослiдження, а також вказiвника на тип звернення до СКБД (команда SQL або збережена функщя).

В той же час програма-тестер була написана мовою Java™ та мала простий штерфейс користувача. Вiн складався з п'яти полiв вводу, трьох кнопок, комбшованого списку, двох перемикачiв, а також трьох таблиць, яш використовувалися аналопчним способом при роботi як з RESTful, так i з SOAP РНР Web-сервком.

При цьому програмне забезпечення, використане в данiй робоп, являло собою останнi версп вшповшних програмних продуктiв (на момент написання статтi). Воно мiстило: пакет PHP 7.1.3, сервер Apache 2.4.25 та СКБД PostgreSQL-9.6.1.

Додатки працювали на персональному комп'ютер^ частота центрального процесора якого дорiвнювалась 1,2 ГГц, а обсяг оперативно! пам'яп мав значення 8 ГБайт.

При пiдготовцi до проведення дослiджень продуктивностi розроблених додатшв на сервер Apache установлювалися RESTful та SOAP Web-сервюи, яш здiйснювали пошук у таблицях даних Data1 - Data7.

У ходi вимiрiв в програмi RSTochno спочатку у списку "Service" вибирався тип Web-сервюу (RESTful або SOAP), а перемикачами "SQL" та "Function", установлювався тип запиту до PostgreSQL, тсля чого формувалася таблиця "Request" з iменами об'ектiв дослiдження, а також максимальними значеннями параметрiв пошуку в них. З щею метою використовувалися поля вводу "Table" та "Max", а також кнопка "Enter" штерфейсу користувача. Попм у поля вводу "URI" та "Reapet" вводилися URI Web-сервiсу та число його звернень N до кожно! таблицi при пошуку в li даних, вшповшно. У наших дослiдженнях N =2000.

Запуск тестування здiйснювався натисканням на кнопку "Run" програми-тестера.

У процеа тестування розподiлений додаток працював з даними таблиць Datal - Data7. При цьому, програма-тестер визначала значення повного часу виконання запиту Т , попм час обмiрковування користувача t, при формуваннi запиту, та час вшгуку т для вшповшного Web-сервiсу при пошуку в даних. Шсля чого в таблищ "Times" додатка RSTochno з'являлася шформащя про т , t та Т , а в таблищ "Data", значення результату виконання останнього запиту при пошуку в даних PostgreSQL, для кожного об'екта дослщження Data1 - Data7.

За допомогою кнопки "Save" результати тестування та його параметри зберталися в текстовому файлг 1м'я файлу попередньо вводилося у поле введення "File".

На рис. 1 i 2 трикутниками представлен значення т , отримаш при тестуванш RESTful та SOAP РНР Web-сервiсiв, при пошуку в даних PostgreSQL за допомогою команд SQL та збережених функцш, вшповшно. Чорш трикутники - результати експерименпв для SOAP, бш - RESTful сервюу.

Як видно з цих рисуншв, час вiдгуку для Web-cервiсiв, при використаннi ними у запитах до PostgreSQL на пошук у даних команд SQL i збережених функцш, зростав при збшьшенш V . При цьому, для вах розглянутих випадшв, при десятикратному збшьшенш обсягу даних пошуку, значення т зростали на величину порядку 8-10-3 с.

В той же час експериментальш значення часу вшгуку для SOAP сервюу, при пошуку в даних з допомогою команд SQL та збережених функцш, перевищували даш по т, яш вшповшали RESTful сервюу i були отримаш при однакових обсягах V , у середньому на 5-10-3 с та 5,5-10-3 с, вшповшно.

Крiм того, використання розробленими програмами збережених функцш, заметь вiдповiдних команд SQL, приводило до зростання т на 3,5-10-3 с для SOAP Web-додатка i на 3-10-3 с для RESTful Web-служби.

Результати тестування були оброблеш нами за допомогою математично! апроксимацil.

Для цих цшей була використана додаткова комп'ютерна програма, написана нами мовою програмування Java. Програма реалiзовувала метод найменших квадрапв [14] та дозволяла, зокрема, визначати коефщенти лшшно! регресп та середню помилку апроксимацп екпериментальных значень часу вщгуку.

Вiдповiдно передбачалося, що час вщгуку т для Web-сервiсiв при пошуку в даних PostgreSQL, може бути представлений у виглядi залежносп: т = a + b ■V , де a та b - постiйнi коефiцieнги.

Рис. 1. Залежност t(V ) для RESTful та SOAP PHP Web-сервюв при пошуку в даних PostgreSQL з використанням команд SQL, прими 1 i 2, вiдповiдно. Трикутники на рисунку - результати

тестування

Рис. 2. Залежност t(V ) для RESTful та SOAP PHP Web-сервюв при пошуку в даних PostgreSQL з використанням збережених функцш, прими 1 i 2, вiдповiдно. Трикутники на рисунку - результати

тестування

Як з'ясувалося, у результата математично! апроксимацп результапв тестування RESTful та SOAP сервгав, при використаннi ними при запитах до СКБД на пошук в даних, як команд SQL, так i збережених функцш, середня помилка апроксимацп екпериментальных значень часу вщгуку у Bcix

розглянутих випадках мала величину si %. При цьому у функцш регресп т(У) були позитивн коефщенти.

Залежностi т(У), отриманi в результатi апроксимацп даних експерименту, також наведен на рис.1 i рис.2.

В той же час, як наведеш на рис.1 та рис.2 експериментальш значения т , так i залежносп т(У), отриман в результата !х математично! апроксимацii, вказують на те, що продуктивнiсть RESTful Web-сервiсу при пошуку в даних PostgreSQL з обсягом V < 1.0 МБайт, була вище, нж у SOAP Web-служби, для вах розглянутих режимiв !х функцiонувания.

Висновки

Таким чином, у данiй роботi нами був виконаний аналiз продуктивносп RESTful та SOAP РНР Web-сервiсiв, як1 при пошуку в даних PostgreSQL в одному режимi функцюнування використовували команди SQL, в шшому - PL/pgsql збереженi функцii.

Як з'ясувалося, час вщгуку сервiсiв т залежить вiд обсягу даних пошуку V та, при V < 1.0 Мбайт, для вах розглянутих випадшв задовшьно описуеться лiнiйними функциями т(У) з позитивними коефщентами.

При цьому, використання при запитах до PostgreSQL збережених функцш, заметь команд SQL, збшьшувало значення часу вщгуку розроблених додатк1в та знижувало !х продуктивнiсть.

В той же час, при пошуку в дослщжених обсягах даних V, з використанням при запитах до PostgreSQL, як команд SQL, так i PL/pgsql збережених функцш, RESTful Web-сервк був бшьш продуктивним, шж сервю на основi SOAP.

Тобто, для створення високопродуктивних РНР Web-сервiсiв для роботи з даними PostgreSQL, доцшьно застосовувати !х реалiзацiю, яка шдтримуе RESTful-теxнологiю.

Надалi плануеться модернiзувати розроблену програму-тестер для вимiрювания продуктивностi Web-сервiсiв при масштабованих запитах до шформащйного Web-вузла та провести подiбнi дослщження з iншими Web-серверами та СКБД.

Список використаноТ лiтератури

1. Bean J. SOA and Web Services Interface Design: Principles, Techniques, and Standards / J. Bean. -Burlington, MA, USA: Elsevier Inc., 2010. - 360 p.

2. Горбенко А.В. Анализ особенностей создания и эксплуатации гарантоспособных сервис-ориентированных систем / А.В. Горбенко // Радюелектронш i комп'ютерш системи. - 2013. -№ 5 (64). - С. 237-242.

3. Ernst M.D. Detection of Web Service substitutability and composability / M.D. Ernst, R. Lencevicius // Proceedings of the 1st International Workshop on Web Services Modeling and Testing (WS-MaTe 2006), June 2006, Palermo, Italy: proceedings. - 2006. - P. 123-135.

4. Harrison G. MySQL Stored Procedure Programming / G. Harrison, S. Feuerstein. Sebastopol: O'Reilly Media, 2006. - 640 p.

5. Suzumura T. 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. 385392.

6. Точилш С. Д. Аналiз продуктивносп XML-RPC та SOAP PHP Web-служб пошуку в даних СКБД PostgreSQL / С. Д. Точилш // Вюник ХНТУ. - 2015. - № 4 (55). - С. 142-146.

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

7. Точилш С.Д. Аналiз продуктивносп Java та PHP XML-RPC Web-служб пошуку в даних СКБД MySQL / С. Д. Точилш // Вюник ЖДТУ. - 2010. - № 1 (52). - С. 166-169.

8. Mitchell L. J. PHP Web Services / L. J. Mitchell. - Sebastopol, CA: O'Reilly Media, 2013. - 115 p.

9. Скляр Д., Трахтенберг А. РНР. Рецепты программирования / Д. Скляр, А. Трахтенберг. - СПб.: Питер, 2015. - 784 с.

10. Менаске Д. Производительность Web-служб. Анализ, оценка и планирование / Д. Менаске, В. Алмейда. - СПб.: ООО «ДиаСофтЮП», 2003. - 480 с.

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

12. Стоунз Р. PostgreSQL. Основы / Р. Стоунз, Н. Мэттью. - СПб.: Символ-Плюс, 2013. - 637 с

13. Гешвинде Э. Разработка Web-приложений на РНР и PostgreSQL. Руководство разработчика и администратора / Э. Гешвинде, Ганс-Юрген Шениг. - СПб: ООО «ДиаСофтЮП», 2003. - 608 с.

14. Кремер Н.Ш. Теория вероятностей и математическая статистика / Н.Ш. Кремер. - М.: ЮНИТИ-ДАНА, 2002. - 543 с.

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