Вышла новая версия Caché 2013.1 Что нового?
Развитие функционала
Повышение скорости разработки
Улучшение производительности
Полная версия документа на английском языке.
Обо всем по порядку и о других изменениях версии под катом.
Подробнее здесь.
В библиотеку классов добавлен класс %CSP.WebSocket — для создания/управления WebSocket функционалом необходимо унаследоваться от него.
Развитие Caché SQL: поддержка %FIND для WHERE
В этой версии реализован новый элемент Caché SQL со следующей конструкцией:
%FIND [ SIZE ]
обозначает набор значений, являющихся фильтром для . Условие удовлетворяется, если состоит в .
Также ANTLR был обновлен до версии 3.4, Xerces был обновлен до версии 3.1.1 на UNIX®.
Кроме того, в портале DeepSee появились обложки (сovers) — в результате элементы BI на домашней странице (панели, сводные таблицы, отчеты, ссылки) отображаются в виде иконок. Новый редактор обложек позволяет настраивать обложки (изображения, текст, цвета и т.д.) для элементов DeepSee.
MultiCompile включен по умолчанию
Caché теперь использует MultiCompile для компиляции классов по умолчанию, что уменьшит время компиляции на многоядерных процессорах.
Оптимизация многоколоночных join
В этом релизе были убраны некоторые старые функции, используемые для оптимизации многоколоночных join'ов. Теперь более общий подход обеспечивает лучшую производительность для всех типов многоколоночных выражений join.
Улучшена производительность конкурентных вставок
В этой версии оптимизирован функционал конкурентной вставки на очень крупных системах. С этой оптимизацией тесты показали улучшение общей масштабируемости базы данных от 20% до 30%.
Добавление индексов класса с минимальным временем простоя
Текущая версия представляет новую функцию %Library.IndexBuilder. Этот класс и его методы позволяют добавлять один или более индексов в существующий класс. Функция реализована специально для случаев, когда:
Эта новая возможность уже рассматривалась на хабре.
Статистика экспорта-импорта TuneTable
В этом релизе в Caché SQL была добавлена поддержка экспорта/импорта статистики TuneTable для области. Это позволяет экспортировать данные TuneTable, Selectivity и ExtentSize из системы и перезагружать ее без отправки и компиляции метаданных классов.
Надежность, доступность, удобство обслуживания, мониторинг
Поддержка дисков с секторами 4КБ
Эта версия включает поддержку дисков c секторами 4K native, которые реализованы в дисках Advanced Format (AF).
Лицензирование отдельных приложений
Некоторые покупатели Caché лицензируют свои приложения полностью или по функциональным модулям. Среди сложных задач, с которыми они встречаются, можно назвать корректный учет лицензионных единиц при различном процессе работы приложений и нештатных ситуациях. Некоторые заказчики дополнительно запрашивают возможность связывать свои лицензии с основной системной лицензией, предоставляемой InterSystems.
С помощью лицензирования отдельных приложений InterSystems обеспечивает для заказчика возможность создавать, развертывать и использовать лицензии приложений. InterSystems использует такую форму лицензирования для своих прикладных продуктов HealthShare и TrakCare.
Увеличение лимита разделяемой динамически распределяемой памяти (Shared Memory Heap)
Эта версия включает поддержку разделяемой динамически распределяемой памяти очень большого размера. Ранее лимит составлял примерно 4GB. Теперь разделяемую динамически распределяемую память можно настроить на размер до 1 TB.
Устранение перезагрузок, связанных с изменением параметров конфигурации
Следующие опции конфигурации Caché теперь можно обновлять динамически, без перезагрузки системы для того, чтобы новые настройки вступили в силу.
Автоматический запуск демонов упреждающей выборки
Механизм автоматического запуска упреждающей выборки ($PREFETCHON / $PREFETCHOFF) требует инициализации общесистемных демонов. Эта версия Caché автоматически проверяет, что демоны упреждающей выборки запущены, когда они необходимы, и остановлены, когда в них больше не нуждаются. Таким образом, теперь не нужно вручную запускать и останавливать их.
Полная онлайн-документация Caché 2013.1 на английском.
Развитие функционала
- дальнейшее развитие EXtreme Event Persistence;
- поддержка WebSocket;
- расширенная поддержка JSON;
- новый редактор панелей в BI DeepSee.
Повышение скорости разработки
- multiсompile классов;
- новая команда COS return;
- args по ссылке;
- %Find для Caché SQL.
Улучшение производительности
- производительность обработки XML +50%;
- улучшение производительности de-journaling;
- повышение производительности ROLLBACK до 20%;
- увеличение лимита глобального буфера до 16 ТБ;
- увеличение лимита разделяемой памяти до 1 ТБ;
- построение индексов класса с минимальным временем простоя — %Library.IndexBuilder;
- эскалация блокировок;
- увеличение производительности конкурентных обновлений — до 30%.
Полная версия документа на английском языке.
Обо всем по порядку и о других изменениях версии под катом.
Улучшения EXtreme Event Persistence (XEP)
- Расширенная поддержка наследования, ссылок, интерфейсов и синхронной индексации.
- Поддержка более простых опций режимов хранения.
- XEP теперь имеет два типа: TCP/IP и JNI.
- Нотация
@ Id для Java и .NET позволяет полю стать ID базы данных. - Новые механизмы для вызова методов класса Caché Object Script(COS) из Java/.NET.
- Поддержка вызова функций COS, процедур с несколькими параметрами и типами возврата.
- Улучшена производительность операций вставки массивов.
- Добавлен новый API (parallel storage API) для максимизации возможностей многоядерных серверов и увеличения производительности записи в базу данных.
- Улучшен InterSystems JDBC-движок запросов.
- Уменьшение объема использования JNI.
Подробнее здесь.
Улучшения в Globals API
В этой версии появилась поддержка $query в API Java и .NET. ValueList глобалов теперь поддерживает десятичные значения. Методы в Globals API могут вызывать функции Caché Object Script, процедуры с несколькими параметрами и типами возврата а также методы классов. Поддержка Visual Basic теперь поставляется с примером использования. Подробнее здесь.Новый элемент языка RETURN
В Caché Object Script появилась новая команда RETURN для оптимизации кода и повышения читаемости. Его определение аналогично выражению QUIT, но приводит к выходу из подпрограммы, метода или классметода в код, их вызвавший.Поддержка параметров по ссылке с Args...
Конструкция args... для передачи неопределенного количества переменных для метода или процедуры теперь может использоваться для передаче параметров по ссылке.Поддержка WebSocket
Шлюз CSP теперь включает поддержку спецификации HTML 5 для связи WebSocket между сервером и браузером, совместимым с HTML 5. Эта возможность доступна в Apache версии 2.2 и выше и будет доступна для IIS 8.0, который является частью Windows Server 2012.В библиотеку классов добавлен класс %CSP.WebSocket — для создания/управления WebSocket функционалом необходимо унаследоваться от него.
Развитие Caché SQL: поддержка %FIND для WHERE
В этой версии реализован новый элемент Caché SQL со следующей конструкцией:%FIND [ SIZE ]
обозначает набор значений, являющихся фильтром для . Условие удовлетворяется, если состоит в .
Улучшенная обработка FrameStack
Ошибки <FRAMESTACK> теперь могут отрабатываться в обработчиках ошибок. Caché больше не будет удалять эти элементы из стека выполнения перед вызовом обработчика ошибок.Обновления сторонних библиотек
Этот релиз теперь включает библиотеки Java 7 и Java 6. Дополнительно Caché теперь поддерживает JDBC 4.1.Также ANTLR был обновлен до версии 3.4, Xerces был обновлен до версии 3.1.1 на UNIX®.
Помощник Студии для MVB
Помощник Студии теперь распознает следующие конструкции:- Caché Basic: «ClassName».ME.
- MVBasic: «ClassName»->@ME->
- Caché Basic: «ClassName».ME. MV BASIC: «ClassName»->@ME->
Поддержка XML для списка потоков (List of Streams)
Список потоков (List of Streams) будет корректно переноситься в XML. Список потоков может быть указан использованием конструкции 'list Of', либо через создание класса, являющегося подклассом %ListOfObjects с ELEMENTTYPE, указываюшим на streamclass.Улучшения обработки JSON
Внесены серьезные изменения в API JSON. Теперь Caché API может генерировать строки JSON из объектов, глобалов или результатов SQL-запросов. Это повышает эффективность использования при работе c сторонними клиентскими интерфейсами (jQuery, angular.js и т.д), которые поддерживают JSON в качестве механизма передачи данных. В дополнение к конвертации внешних структур в JSON, система поддерживает прием JSON, отправленных клиентом, и конвертацию их в многомерные массивы COS внутри Caché приложения.Доработки DeepSee
В DeepSee новый редактор создания и редактирования панелей. Новый редактор панелей использует улучшенные схемы и новые компоненты ZEN. Редактор вызывается, если нажать на полоску c левой стороны панели. Новый редактор панелей предоставляет значительно больше настроек для управления внешним видом схем и таблиц.Кроме того, в портале DeepSee появились обложки (сovers) — в результате элементы BI на домашней странице (панели, сводные таблицы, отчеты, ссылки) отображаются в виде иконок. Новый редактор обложек позволяет настраивать обложки (изображения, текст, цвета и т.д.) для элементов DeepSee.
Производительность и масштабируемость
Производительность XML
Производительность XML была повышена путем улучшения обработки XML между Caché и Xerces. Можно ожидать улучшение производительности импорта в %XML.Reader до 50% и до 25% — сообщений SOAP.HTTP 1.1 Keep-Alive
В этот релиз добавлена поддержка Keep-Alive с HTTP 1.1. Это позволяет клиентам поддерживать сокет TCP/IP к веб-серверу в активном состоянии, чтобы можно было делать несколько запросов через один сокет, вместо того, чтобы закрывать и открывать новый сокет для каждого запроса.Улучшенная производительность дежурналирования
InterSystems в этой версии улучшила производительность дежурналирования (De-Journaling), еще лучше оптимизировав алгоритмы упреждающей выборки. Дежурналирование (для теневого копирования, зеркалирования и доката из журнала при восстановлении) использует механизм упреждающей выборки, чтобы ускорить докат записи и удаления значений в БД. Эти выборки отвечают за «предварительное чтение» блоков в пул буфера. При этом настоящий процесс обновления может происходить очень быстро и производить обновления, не замедляясь из-за процесса чтения с диска. Эта версия включает вспомогательный алгоритм, который позволяет упреждающей выборке читать в дополнительных (ссылочных) блоках, еще сильнее ускоряя общую производительность дежурналирования.Улучшенная производительность ROLLBACK
В этом релизе производительность ROLLBACK улучшена на 10%-30% по сравнению с предыдущими версиями. Улучшение относится к откату как отдельных (крупных) транзакций, так и блочному откату (такому, какой происходит во время восстановления при запуске).Шифрование AES на оборудовании Intel
Intel поддерживает последние процессоры AES-NI, что значительно ускоряет шифровку и дешифровку AES. Первые тесты показывают значительное улучшение производительности при выполнении ПО AES. Это минимизирует расходы на производительность для шифрованных БД с высокой частотой физического ввода-вывода.Улучшенная производительность шифрования
Ранее функция производительности под названием «параллельная шифровка WIJ» была доступна на платформе AIX. Эта функция теперь работает в HP-UX, Linux и Solaris, и может ускорять скорость шифрования базы данных во время циклов записи до 4 раз.Улучшена производительность асинхронного ввода-вывода
Эта версия включает улучшения асинхронного ввода-вывода. Новый алгоритм обнаруживает множественные последовательные обновления и записывает данные более крупными блоками, что, согласно измерениям, ускоряет записи при последовательной нагрузке в 1.6 — 1.8 раза.MultiCompile включен по умолчанию
Caché теперь использует MultiCompile для компиляции классов по умолчанию, что уменьшит время компиляции на многоядерных процессорах.Оптимизация многоколоночных join
В этом релизе были убраны некоторые старые функции, используемые для оптимизации многоколоночных join'ов. Теперь более общий подход обеспечивает лучшую производительность для всех типов многоколоночных выражений join.Улучшена производительность конкурентных вставок
В этой версии оптимизирован функционал конкурентной вставки на очень крупных системах. С этой оптимизацией тесты показали улучшение общей масштабируемости базы данных от 20% до 30%.Добавление индексов класса с минимальным временем простоя
Текущая версия представляет новую функцию %Library.IndexBuilder. Этот класс и его методы позволяют добавлять один или более индексов в существующий класс. Функция реализована специально для случаев, когда:- обычный метод %BuildIndices будет выполняться долго, поскольку вовлечен большой объем данных и
- приложение работает в системе, где время простоя должно быть сведено к минимуму.
Эта новая возможность уже рассматривалась на хабре.
Улучшение эскалации блокировок
В этом релизе представлен новый режим блокировки, «Е», созданный, чтобы автоматизировать управление блокировками и улучшить управление таблицей блокировок. В этом режиме при превышении одной транзакцией определенного количества блокировок они «объединяются» в одну блокировку более высокого уровня (если Caché посчитает такое действие безопасным). При этом освободится место в таблице блокировок.Статистика экспорта-импорта TuneTable
В этом релизе в Caché SQL была добавлена поддержка экспорта/импорта статистики TuneTable для области. Это позволяет экспортировать данные TuneTable, Selectivity и ExtentSize из системы и перезагружать ее без отправки и компиляции метаданных классов.Надежность, доступность, удобство обслуживания, мониторинг
Поддержка дисков с секторами 4КБ
Эта версия включает поддержку дисков c секторами 4K native, которые реализованы в дисках Advanced Format (AF).Вывод TIFF в отчетах Zen
Отчеты Zen теперь могут создавать контент в формате TIFF, в дополнение к форматам, которые поддерживались раньше — HTML, XML, PDF, Excel и т.д.Лицензирование отдельных приложений
Некоторые покупатели Caché лицензируют свои приложения полностью или по функциональным модулям. Среди сложных задач, с которыми они встречаются, можно назвать корректный учет лицензионных единиц при различном процессе работы приложений и нештатных ситуациях. Некоторые заказчики дополнительно запрашивают возможность связывать свои лицензии с основной системной лицензией, предоставляемой InterSystems.С помощью лицензирования отдельных приложений InterSystems обеспечивает для заказчика возможность создавать, развертывать и использовать лицензии приложений. InterSystems использует такую форму лицензирования для своих прикладных продуктов HealthShare и TrakCare.
Увеличение лимита буфера глобалов
Эта версия включает поддержку буфера глобалов очень большого размера. Ранее лимит составлял примерно 107 GB. Теперь буферы глобалов можно настроить на размер до 16 TB.Увеличение лимита разделяемой динамически распределяемой памяти (Shared Memory Heap)
Эта версия включает поддержку разделяемой динамически распределяемой памяти очень большого размера. Ранее лимит составлял примерно 4GB. Теперь разделяемую динамически распределяемую память можно настроить на размер до 1 TB.Устранение перезагрузок, связанных с изменением параметров конфигурации
Следующие опции конфигурации Caché теперь можно обновлять динамически, без перезагрузки системы для того, чтобы новые настройки вступили в силу.Список параметров:
- MaxServers: максимальное число соединений клиентской машины с ECP-серверами.
- VMSConsoleTerminal: имя устройства консольного терминала для логирования сообщений в систему OpenVMS.
- netjob: разрешить/запретить удаленные запросы процессов.
- wijdir: файловая директория Write Image Journal.
- console: имя файла консольного журнала.
- LineRecallBuffer: общий размер (в байтах) всех строк ввода, которые должны храниться в буфере командной строки/строки чтения.
- LineRecallEntries: максимальное число записей, хранимых в буфере командной строки/строки чтения, подлежащих ограничению размера в настройке LineRecallBuffer.
- bbsiz: максимальное распределение памяти, разрешенное для обработки (в килобайтах).
Автоматический запуск демонов упреждающей выборки
Механизм автоматического запуска упреждающей выборки ($PREFETCHON / $PREFETCHOFF) требует инициализации общесистемных демонов. Эта версия Caché автоматически проверяет, что демоны упреждающей выборки запущены, когда они необходимы, и остановлены, когда в них больше не нуждаются. Таким образом, теперь не нужно вручную запускать и останавливать их.Улучшенные инструменты анализа производительности SQL
В этом релизе Caché поставляются дополнительные утилиты, которые расширяют возможности анализа производительности SQL. Утилиты позволяют: подсчитать, сколько раз использован индекс; определить запросы, которые вызывают сканирование таблиц, или зависят от создания временных структур; найти запросы, использующие Join, и вычислить, насколько хорошо они поддерживаются существующими индексами.Преодоление отказа и аварийное восстановление
В предыдущих релизах БД Caché для восстановления в случае стихийного бедствия (Disaster Recovery) предлагалась конфигурация асинхронного зеркалирования. В этом релизе InterSystems обеспечила более простое переключение от узла асинхронного зеркалирования в случае аварии (или в целях тестирования). Также теперь легче переключаться обратно на основное зеркало для продолжения работы.WS Reliable Messaging
В этом релизе Web Services Reliable Messaging (надежная отправка сообщений веб-сервиса) может использоваться для надежной доставки (идентификации, отслеживания и управления) сообщений между пунктами отправки и назначения.Полная онлайн-документация Caché 2013.1 на английском.