вторник, 20 сентября 2011 г.

Сортировка по данным в анонимном хеше

Задача: отсортировать данные разнесенные по множеству серверов Postgres.

С ходу придумал два решения:
  1. Собрать данные скриптом и обработать.
  2. Написать server side функцию, которая установит dblink-соединение со всеми необходимыми севрерами, прогонит запрос по ним и вернет агрегированные данные. Необходимый запрос передается параметром.
Решение задачи первым методом:

Есть небольшая сложность: полей данных более, чем два. В случае C я бы использовал структуры. Но в Perl нет структур в комплете (хотя можно подобрать модуль). Я предпочел складывать данные ссылкой на анонимный хеш в хеш ( переменная %result ) :) Правда потом немного сложно сортировать эти записи. Собственно поэтому и пишу пост, магия сортировки происходит в третьей с конца строке:


Решение вторым методом пока не реализовывал. Сделаю - дополню пост.