Производительность агрегатных функций в Cache 2007.1

Провел небольшой тест, чтобы сравнить производительность сервера при подсчете агрегатных функций в SQL, чью производительность в 2007.1, согласно документации, повысили. Тест был очень простой – для таблицы Sample.Person было сгенерировано 110 тыс. записей при помощи Populate. Далее, исполнялся простейший запрос – “SELECT Avg(Age) FROM Sample.Person”. Сравнивал на Caché 5.2.0 build 329, и Caché 2007.1 build 306 (не последний, вообще говоря).
Результат – для 5.2 – 3.274 с, для 2007.1 – 1.452. Отличие, как нетрудно заметить, более чем в два раза. Сравнивать нужно, конечно, в относительном выражении, т.к проверку я проводил на своем ноутбуке, в фоне было запущено большое количество различных программ, чей состав между испытаниями, естественно, не менялся, да и Age – поле вычислимое.
Если кому-то интересны другие сценарии сравнения, а 2007.1 качать и ставить – не хочется, либо тяжело, я могу сравнить. Аналогично, если у кого-то есть свои собственные замеры по производительности, прошу поделиться.

Выход Cache 2007.1

По словам разработчиков, финальную версию 2007.1 выпустят к Devcon’у 2007. Объясняют тем, что менеджмент повысил требования качества продукта, и разработчики правят ошибки, новый функционал уже не добавляется. И вроде бы как политика по качеству продукта будет только усиливаться – департамент тестирования расширяется, будем надеяться это приведет к положительным изменениям.

Немного грустная новость заключается в том, что основной на данный момент фичей Caché 2007.2 будут включенные в состав продукта улучшенные инструменты миграции с MultiValue, которая на территории бывшего Союза распространена “не очень широко” – были бы интересны другие вещи.

Да, еще один важный момент – касательно появившейся поддержки длинных (до 3,5 Мб) локальных переменных и глобалов. Вопреки моим ожиданиям, сейчас нет планов введения поддержки длинных строк во всех механизмах Cache Objects / Cache SQL. Причина – длинные строки были реализованы не в рамках некой общей стратегии развития продукта, а чуть ли не по запросу одного из крупных партнеров. Рекомендация разработки по этому поводу – “если вам необходима поддержка [длинный строк] везде, пишите Enhancement Request’ы в WRC, менеджмент выставит задание на разработку, если увидит, что это много кому нужно”. В общем, как обычно, все в наших руках.

Актуализация продукции Ensemble

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

  • Остановить/стартовать продукцию
  • Включать/выключать конкретные элементы при помощи флажков “Enabled” в окне конфигурации продукции

Оба приведенных метода достаточно раздражающи, если изменения происходят постоянно – приходится делать много лишних однообразных движений, включая и выключая элементы продукции. Для облегчения этой задачи я написал несложную .MAC программу, которая обновляет продукцию самостоятельно. Вот, вкратце, выбранный алгоритм работы:

  1. Построить перечень элементов продукции и соответствующих им классов
  2. Определить, какие классы из полученных на шаге 1 нуждаются в перекомпиляции
  3. Опеределить, какие элементы продукций должны быть отключены (если элемент уже отключен, запомнить это, чтобы потом его не включить)
  4. Отключить отобранные элементы
  5. Перекомпилировать отобранные классы
  6. Включить отключенные элементы

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

Скачать программу (.zip-архив, 1 Кб)

Традиционная “зимняя школа” в 2007 году…

…будет проходить 5-9 февраля в Подмосковье. Зарегистрироваться на участие в Школе, и ознакомиться с программой мероприятия вы можете здесь.
Heliopark Thalasso Судя по фотографиям на сайте, там довольно симпатично.

В этом году у вас есть возможность принять участие в Школе бесплатно – для этого достаточно всего-навсего получить первое место на нашем конкурсе. Конкурс скоро заканчивается, так что поторопитесь!

Зимняя Школа (ранее – Зимняя Школа Caché) – выездоное мероприятие, проводимое компанией InterSystems для партнеров-разработчиков. В течение нескольких дней участники проходят ряд технических тренингов, посвященных различным аспектам технолгий InterSystems. Ну и помимо тренигов, на Школе вы можете пообщаться с коллегами-разработчиками, обменяться опытом в неформальной обстановке. Приезжайте, будет интересно.

InterSystems ZEN – библиотека AJAX-компонент для быстрого построения веб-приложений

Как многие из вас уже знают, в состав Caché версии 2007.1, чей выход планируется в начале 2007 года, будет включена библиотека AJAX-компонент для быстрого проектирования интерфейсов, под названием [tag]ZEN[/tag]. Компоненты библиотеки будут функционировать как надстройка над технологией [tag]CSP[/tag] (Caché Server Pages). [tag]ZEN[/tag] активно использует объектную модель Caché – создаваемое веб-приложение, его страницы, и элементы интерфейса являются классами Caché.
Бета-версии библиотеки были доступны действующим партнерам начиная с лета этого года. В дальнейшем мы будем публиковать небольшие материалы, иллюстрирующие принципы работы приложений, созданных с использованием [tag]ZEN[/tag], и конкретные небольшие примеры. Использовать компоненты [tag]ZEN[/tag] можно будет как в Caché, так и в [tag]Ensemble[/tag].

Если вы – действительный партнер-разработчик корпорации InterSystems, то вы можете скачать текущую бета-версию [tag]ZEN[/tag] по адресу: http://iron.intersystems.com/wrc/BetaPortal.csp#XEN (в качестве имени пользователя и пароля используйте учетные данные [tag]WRC[/tag]).