Корпорация InterSystems на Global Summit 2015 приняла социалистическое обязательство объявила о политике частых релизов — выпуск новых версий как минимум 4 раза в год. В исполнение этого обета, 8 июля вышел релиз СУБД InterSystems Cache 2015.2 через 3 месяца после релиза Cache 2015.1. Видео о релизе.
В Cache 2015.2 улучшена производительность и масштабируемость, появилась поддержка русского и украинского в iKnow, реализована поддержка CORS в REST.
Оптимизация алгоритма кеширования глобалов в системах с большим числом ядер за счет уменьшения внутренних блокировок при конкурентном доступе.
Динамическая адресация глобальных векторов. В этом релизе значительно улучшена производительность обращений к глобалам (global references) в процессах, которые постоянно используют более 32 разных глобалов. Это стало возможным за счет увеличения числа векторов глобалов для каждого процесса. Каждый вектор глобалов содержит информацию о глобале, к которому процесс недавно обращался. Эта информация используется для оптимизации последующего доступа к этому же глобалу. Ранее для каждого процесса хранилось 32 вектора глобалов. Сейчас это число может динамически увеличиваться до 1000 векторов для процесса. Подробнее.
Битслайс индексы теперь используются для агрегатных функций Sum, Average, Count и при наличии WHERE в запросе. Это должно автоматически увеличить производительность некоторых запросов в ваших приложениях.
Параллельные запросы в SQL теперь работают не только для числовых полей. В предыдущей версии оптимизатор допускал параллельное исполнение только если запрошенные поля были числовыми. Сейчас это ограничение снято. Подробно о %Parallel.
Увеличение масшабируемости ECP решений
Улучшение оптимизации работы с кешем глобалов, упомянутое выше, касается и ECP. Решения с ECP в новой версии теперь автоматически стали более производительными и увеличили возможности по масштабированию.
Поддержка CORS в REST
Начиная с этого релиза в базовом классе %CSP.REST появилась поддержка CORS, что позволяет предоставить эту функциональность в ваших RESTful решениях на Cache «из коробки». Cache теперь ожидает OPTIONS заголовок в запросах, также в классе %CSP.REST появился HandleCORSRequest(pUrl) callback, который позволит реализовать требуемую для приложения CORS функциональность.
Поддержка русского и украинского языков в iKnow официально анонсирована вместе с этим релизом Cache. Эта отличная новость позволит разработчикам в России и Украине полноценно использовать технологию InterSystems iKnow для Text Mining решений. О примерах решений с iKnow на русском уже есть публикации на Хабре (раз, два, три).
Поддержка сложных запросов в iFind с применением скобок и операторов AND OR NOT. Т.е. теперь можно сделать запрос
"(длинные строки) AND (память OR диск*) AND NOT (сообщение об ошибке)"
который найдет все записи, содержащие словосочетание «длинные строки», слово «память» или слово, начинающееся на «диск» и не содержащие словосочетание «сообщение об ошибке».
Другие улучшения iFind и iKnow:
Версии кубов (Cube Versions)
Это нововведение сделает перестройку кубов более незаметной для пользователей DeepSee решений. Перестройка кубов может выполняться значительное количество времени, что может выразиться в простое пользователей куба. Теперь, при перестройке куб не удаляется, а создается новая его версия, пользователи же продолжают работать с предыдущей версией куба. Как только новый куб построится, пользователи будут переключены на него, а старый куб будет удален. Это, очевидно, увеличит требования к дисковому пространству для DeepSee решения, но серьезно уменьшит время переключения пользователей на обновленный куб.
Группы списков в DeepSee
Ранее, если пользователь хотел добавить произвольный список(Listing) в DeepSee (список — SQL запрос к таблице фактов), приходилось вносить изменение в сам куб, что не всегда удобно. Начиная с 2015.2 эти списки можно изменять без изменения куба: теперь списки можно создавать, редактировать и удалять для группы списков (Listing Group), которая может применяться к определенному кубу DeepSee и не требует его измененения и компиляции. Это существенное удобство в применении и менеджменте запросов к таблицам фактов кубов DeepSee.
Улучшение технологии зеркалирования
Автоматический фейловер теперь работает быстрее в некоторых случаях за счет улучшенного алгоритма определения сбоя основного сервера или отключения его сети.
Также упрощена настройка фейловера.
Появилась поддержка Node.js v0.12.
Установка Cache и Ensemble не от пользователя root или admin становится возможной, начиная с этого релиза.
Поддержка исламского календаря (Хиджри) в Cache. Исламский календарь также поддерживается и в DeepSee, что позволяет создавать измерения и уровни на его основе для анализа таблиц фактов.
Поддержка двухфакторной аутентификации на основе временных одноразовых паролей (реализовано RFC6238).
Поддержка QR-кодов. Теперь для генерации и использования QR-кодов в своих приложениях появился специальный системный класс. Эта функциональность реализуется методами класса %SYS.QRCode.
Полный текст релиза можно прочитать здесь.
В Cache 2015.2 улучшена производительность и масштабируемость, появилась поддержка русского и украинского в iKnow, реализована поддержка CORS в REST.
Повышение производительности
Оптимизация алгоритма кеширования глобалов в системах с большим числом ядер за счет уменьшения внутренних блокировок при конкурентном доступе.
Динамическая адресация глобальных векторов. В этом релизе значительно улучшена производительность обращений к глобалам (global references) в процессах, которые постоянно используют более 32 разных глобалов. Это стало возможным за счет увеличения числа векторов глобалов для каждого процесса. Каждый вектор глобалов содержит информацию о глобале, к которому процесс недавно обращался. Эта информация используется для оптимизации последующего доступа к этому же глобалу. Ранее для каждого процесса хранилось 32 вектора глобалов. Сейчас это число может динамически увеличиваться до 1000 векторов для процесса. Подробнее.
Битслайс индексы теперь используются для агрегатных функций Sum, Average, Count и при наличии WHERE в запросе. Это должно автоматически увеличить производительность некоторых запросов в ваших приложениях.
Параллельные запросы в SQL теперь работают не только для числовых полей. В предыдущей версии оптимизатор допускал параллельное исполнение только если запрошенные поля были числовыми. Сейчас это ограничение снято. Подробно о %Parallel.
Увеличение масшабируемости ECP решений
Улучшение оптимизации работы с кешем глобалов, упомянутое выше, касается и ECP. Решения с ECP в новой версии теперь автоматически стали более производительными и увеличили возможности по масштабированию.
Веб-разработка
Поддержка CORS в REST
Начиная с этого релиза в базовом классе %CSP.REST появилась поддержка CORS, что позволяет предоставить эту функциональность в ваших RESTful решениях на Cache «из коробки». Cache теперь ожидает OPTIONS заголовок в запросах, также в классе %CSP.REST появился HandleCORSRequest(pUrl) callback, который позволит реализовать требуемую для приложения CORS функциональность.
Обработка неструктурированных данных с iKnow и iFind
Поддержка русского и украинского языков в iKnow официально анонсирована вместе с этим релизом Cache. Эта отличная новость позволит разработчикам в России и Украине полноценно использовать технологию InterSystems iKnow для Text Mining решений. О примерах решений с iKnow на русском уже есть публикации на Хабре (раз, два, три).
Поддержка сложных запросов в iFind с применением скобок и операторов AND OR NOT. Т.е. теперь можно сделать запрос
"(длинные строки) AND (память OR диск*) AND NOT (сообщение об ошибке)"
который найдет все записи, содержащие словосочетание «длинные строки», слово «память» или слово, начинающееся на «диск» и не содержащие словосочетание «сообщение об ошибке».
Другие улучшения iFind и iKnow:
- Поддержка стемминга и декомпозиции в iFind.
- Можно применять iFind индексы даже для тех языков, которые не поддерживает iKnow, при допущении, что слова отделяются пробелами друг от друга.
- Улучшен алгоритм определения семантической доминантности сущностей в тексте, что увеличило производительность и требует меньше места на диске для решений iFind и iKnow.
- Теперь движку iKnow можно передавать свои «термины-маркеры» для определений «отрицаний» (negation) и тональности предложений.
Бизнес аналитика с DeepSee
Версии кубов (Cube Versions)
Это нововведение сделает перестройку кубов более незаметной для пользователей DeepSee решений. Перестройка кубов может выполняться значительное количество времени, что может выразиться в простое пользователей куба. Теперь, при перестройке куб не удаляется, а создается новая его версия, пользователи же продолжают работать с предыдущей версией куба. Как только новый куб построится, пользователи будут переключены на него, а старый куб будет удален. Это, очевидно, увеличит требования к дисковому пространству для DeepSee решения, но серьезно уменьшит время переключения пользователей на обновленный куб.
Группы списков в DeepSee
Ранее, если пользователь хотел добавить произвольный список(Listing) в DeepSee (список — SQL запрос к таблице фактов), приходилось вносить изменение в сам куб, что не всегда удобно. Начиная с 2015.2 эти списки можно изменять без изменения куба: теперь списки можно создавать, редактировать и удалять для группы списков (Listing Group), которая может применяться к определенному кубу DeepSee и не требует его измененения и компиляции. Это существенное удобство в применении и менеджменте запросов к таблицам фактов кубов DeepSee.
Улучшения высокой доступности
Улучшение технологии зеркалирования
Автоматический фейловер теперь работает быстрее в некоторых случаях за счет улучшенного алгоритма определения сбоя основного сервера или отключения его сети.
Также упрощена настройка фейловера.
Прочие улучшения
Появилась поддержка Node.js v0.12.
Установка Cache и Ensemble не от пользователя root или admin становится возможной, начиная с этого релиза.
Поддержка исламского календаря (Хиджри) в Cache. Исламский календарь также поддерживается и в DeepSee, что позволяет создавать измерения и уровни на его основе для анализа таблиц фактов.
Поддержка двухфакторной аутентификации на основе временных одноразовых паролей (реализовано RFC6238).
Поддержка QR-кодов. Теперь для генерации и использования QR-кодов в своих приложениях появился специальный системный класс. Эта функциональность реализуется методами класса %SYS.QRCode.
Полный текст релиза можно прочитать здесь.
morisson
Для тех, кто хочет поддержку CORS, но еще не может перейти на 2015.2, поддержка CORS реализована в этом репо.