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

Как сделать веб-приложение эффективнее?

Исследователи Лаборатории компьютерных наук и искусственного интеллекта Массачусетского технологического института (США) на форуме 38th International Conference on Very Large Databases представили новую систему, которая автоматически рационализирует шаблоны доступа к БД веб-сайтов, за счет чего ускоряет их работу.

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

Pyxis решает все три проблемы: она автоматически распределяет приложение между сервером БД и сервером приложений, причем делает это так, чтобы не прерывать операции программы. Кроме того, она отслеживает загрузку ЦПУ на сервере БД, выделяя под вычисления больше или меньше ресурсов. Сначала Pyxis преобразует программу в граф, где каждой вершине соответствует инструкция, а ребру – связь между ними. При каждом переходе из вершины в вершину переносится определенный объем данных. Если вся программа работает на одном ПК, программа хранит данные в основной памяти, к которой можно обращаться напрямую. Если же нет, при переходе от одной вершины к другой требуется передача данных между ПК, а это дополнительное время и дополнительное удорожание вычислений. Поэтому программа Pyxis находит вершины, выполняющее наибольшее число вычислений, и выбирает место их размещения на одном из двух серверов так, чтобы минимизировать время выполнения и стоимость выполнения программы.

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