В конце марта вышла новая версия платформы данных InterSystems IRIS 2020.1. Даже пандемия коронавируса не предотвратила релиз.
Из важного в новом релизе — повышение быстродействия ядра, генерация REST-приложения по спецификации OpenAPI 2.0, шардинг для объектов, новый вид Портала Управления, поддержка MQTT, универсальный кеш запросов, новый фреймворк для создания элементов продукции на Java или .NET. Полный список изменений и Upgrade Checklist на английском языке можно найти по ссылке. Подробнее — под катом.
InterSystems IRIS 2020.1 — это релиз с расширенной поддержкой. InterSystems выпускает два вида релизов InterSystems IRIS:
- Continuous delivery релизы. Выходят три-четыре раза в год в виде образов Docker. Предназначены для разработки приложений и развёртывании в облаке или контейнерах Docker.
- Релизы с расширенной поддержкой. Выходят реже, но для них выпускаются релизы с исправлениями. Выпускаются на всех платформах, поддерживаемых InterSystems IRIS.
Между релизами с расширенной поддержкой 2019.1 и 2020.1 выходили релизы только в образах Docker — 2019.2, 2019.3, 2019.4. Все новые функции и исправления из этих релизов вошли в 2020.1. Некоторые возможности из перечисленных ниже впервые появились в одном релизов 2019.2, 2019.3, 2019.4.
Итак.
Разработка REST-приложений по спецификации
В дополнение к InterSystems API Manager, поддерживаемому с версии 2019.1.1, в релизе 2020.1 появилась возможность генерировать костяк кода для REST-сервиса по спецификации в формате OpenAPI 2.0. Подробнее смотрите в разделе документации «Creating REST Services».
Конвертация инсталляции Caché или Ensemble
Этот релиз позволяет при установке конвертировать инсталляцию Caché или Ensemble в InterSystems IRIS. Сама конвертация возможно потребует изменений в программном коде, настройках или других скриптах, но в большинстве случаев будет простой.
Перед конвертацией прочитайте InterSystems IRIS In-Place Conversion Guide и InterSystems IRIS Adoption Guide. Эти документы находятся на сайте Всемирного центра поддержки InterSystems в разделе «Документы».
Клиентские языки
InterSystems IRIS Native API для Python
Низкоуровневый быстрый доступ из Python к многомерным массивам, в которых InterSystems IRIS хранит данные. Подробнее — «Native API for Python».
InterSystems IRIS Native API для Node.js
Низкоуровневый быстрый доступ из Node.js к многомерным массивам, в которых InterSystems IRIS хранит данные. Подробнее — «Native API for Node.js».
Реляционный доступ для Node.js
Поддержка ODBC-доступа к InterSystems IRIS для разработчиков на Node.js
Двусторонняя связь в Java и .NET-шлюзах
Соединения .NET и Java-шлюзов теперь двусторонние. То есть, программа на .NET или Java, вызванная из IRIS через шлюз, использует это же соединение для обращения к IRIS. Подробнее — «Java Gateway Reentrancy».
Улучшения в Native API для Java и .NET
IRIS Native API для Java и .NET поддерживает списки $LIST и передачу параметров по ссылке.
Новый вид Портала Управления
В этот релиз вошли первые изменения в Портале Управления. Они пока касаются только внешнего вида и не затрагивают функционал.
SQL
Универсальный кеш запросов. Начиная с 2020.1, все запросы, включая встроенные запросы и запросы классов, будут сохранятся как кешированные запросы. Раньше использование встроенных запросов требовало перекомпиляции программы для генерации нового кода запроса, например если появился новый индекс или изменилась статистика таблицы. Теперь все планы запросов хранятся в одном кеше и очищаются независимо от программы, в которой используется запрос.
Большее число типов запросов теперь параллелизуется, включая запросы DML.
Запросы к таблице, разделённой по шардам, теперь могут использовать неявный join "->".
Запросы, запускаемые из Портала управления, теперь исполняются в фоновом процессе. Долгие запросы теперь не будут отваливаться по таймауту веб-страницы. Затянувшиеся запросы теперь можно отменять.
Интеграционные возможности
Новый фреймворк для создания элементов продукции на Java или .NET
В этот релиз вошёл новый фреймворк PEX (Production EXtension), дающий дополнительный выбор языка реализации компонентов продукции. В этом релизе PEX поддерживает Java и .NET для разработки бизнес-служб, бизнес-процессов и бизнес-операций, а также для входящих и исходящих адаптеров. Раньше можно было создавать только бизнес-службы и бизнес-операции и приходилось вызывать кодогенератор в Портале Управления. Фреймворк PEX предоставляет более гибкие средства включения кода на Java и .NET в компоненты продукции, зачастую без программирования на ObjectScript. В пакет PEX входят следующие классы:
- EnsLib.PEX.BusinessService
- EnsLib.PEX.BusinessProcess
- EnsLib.PEX.BusinessOperation
- EnsLib.PEX.InboundAdapter
- EnsLib.PEX.OutboundAdapter
- EnsLib.PEX.Message
Подробнее — «PEX: Developing Productions with Java and .NET».
Мониторинг использования портов в продукциях.
Утилита Port Authority отслеживает порты, используемые бизнес-службами и бизнес-операциями. С её помощью можно определить доступные порты и зарезервировать их. Подробнее — «Managing Port Usage».
Адаптеры для MQTT
В этот релиз входят адаптеры, поддерживающие протокол MQTT (Message Queuing Telemetry Transport), который часто используется в приложениях для Интернета Вещей (Internet of Things — IoT). Подробнее — «Using MQTT Adapters in Productions».
Шардинг
Упрощённая архитектура
В этом релизе появился более простой и понятный способ создания кластера — на базе отдельных серверов (node level), а не областей, как в предыдущих версиях. Новый API — %SYSTEM.Cluster. Новый подход совместим со старым — кластер на базе областей (namespace level), — и не требует изменений в существующих инсталляциях. Подробнее — «Elements of Sharding» и «Sharding APIs».
Другие улучшения в шардинге:
- Теперь можно кошардить (распределять по одним и тем же шардам часто соединяемые части двух таблиц) любые две таблицы. Раньше так можно было делать только с таблицами у которых был общий шард-ключ. Начиная с этого релиза синтаксис COSHARD WITH применяется и для таблиц с системным Id. Подробнее — «Create the Tables» и «Defining a Sharded Table».
- Раньше отметить таблицу как кластерную можно было только через DDL, теперь это можно сделать и в описании класса — новое ключевое слово Sharded. Подробнее — «Defining a Sharded Table by Creating a Persistent Class».
- Объектная модель теперь поддерживает шардинг. Методы %New(), %OpenId и %Save() работают с объектами класса, данные которого распределены по нескольким шардам. Обратите внимание, что код выполняется на том сервере, к которому подключен клиент, а не на том, где хранится объект.
- Улучшен алгоритм выполнения кластерных запросов. Менеджер очереди запросов (Unified Shard Queue Manager) ставит запросы в очередь на выполнение пулу процессов, вместо запуска новых процессов на каждый запрос. Число процессов в пуле определяется автоматически, исходя из ресурсов сервера и нагрузки.
Инфраструктура и развёртывание в облаке.
В этот релиз вошли улучшения в инфраструктуре и развёртывании в облаке, включая:
- Поддержка Tencent Cloud. InterSystems Cloud Manager (ICM) теперь поддерживает создание инфраструктуры и развёртывание приложений на базе InterSystems IRIS в Tencent Cloud.
- Поддержка именованных томов (named volumes) в Docker, в дополнение к монтированию папок (bind mount).
- ICM поддерживает гибкое масштабирование — конфигурации теперь могут масштабироваться, то есть пересоздаваться с большим или меньшим числом узлов. Подробнее — «Reprovisioning the Infrastructure» и «Redeploying Services».
- Улучшения в создании собственного контейнера.
- ICM поддерживает новую архитектуру шардинга.
- Пользователь по умолчанию в контейнерах теперь не root.
- ICM поддерживает создание и развёртывание частный сетей, в которых узел-бастион соединяет частную сеть с публичной сетью и предоставляет дополнительную защиту от Denial-of-Service атак.
- Поддержка обнаружения сервисов по защищённому RPC.
- ICM поддерживает развёртывание в нескольких регионах. Так обеспечивается высокая доступность системы, даже если весь регион перестал работать.
- Возможность обновить ICM и сохранить информацию об уже развёрнутых системах.
- Бесконтейнерный режим — ICM теперь может напрямую, не в контейнерах, разворачивать кластерные конфигурации на Google Cloud Platform, а также устанавливать Web Gateway на Ubuntu или SUSE.
- Поддержка слияния iris.cpf из двух файлов. Это помогает ICM запускать InterSystems IRIS с разными настройками в зависимости от режима, в котором инсталляция работает. Эта возможность упрощает автоматизацию и поддержку различных инструментов управления конфигурациями, таких как Kubernetes.
Аналитика
Выборочная перестройка куба
Начиная с этого релиза InterSystems IRIS Business Intelligence (прежде известный как DeepSee) поддерживает выборочное построение куба — только одного показателя или измерения. Можно изменить описание куба и перестроить только то, что изменилось, сохраняя доступность всего куба, во время перестройки.
PowerBI коннектор
Microsoft PowerBI теперь поддерживает работу с таблицами и кубами InterSystems IRIS. Коннектор поставляется с PowerBI, начиная с релиза апреля 2019 года. Подробнее — «InterSystems IRIS Connector for Power BI».
Предпросмотр результатов запроса
В этом релизе появился новый режим предпросмотра при составлении сводных таблиц в Analyzer. Так можно быстро оценить правильность запроса, не дожидаясь его полных результатов.
Другие улучшения
- Обход глобала функцией $ORDER в обратном порядке (direction = -1) теперь так же быстр, как и в прямом.
- Улучшена производительность журналирования.
- Добавлена поддержка Apache Spark 2.3, 2.4.
- Добавлена поддержка клиента WebSocket. Класс %Net.WebSocket.Client.
- Класс контроля версий теперь обрабатывает события при изменениях на странице продукции.
- Белые списки для фильтрации допустимых запросов к CSP, ZEN и REST.
- Поддержка .NET Core 2.1.
- Улучшена производительность ODBC.
- Структурированный лог для облегчения анализа messages.log.
- API для проверки ошибок и предупреждения. Класс %SYSTEM.Monitor.GetAlerts().
- Компилятор классов теперь проверяет, что имя глобала в описании хранения не превышает максимальной длины (31 символ) и возвращает ошибку, если это не так. Раньше имя глобала без предупреждения обрезалось до 31 символа.
Где взять
Если у вас есть поддержка — скачайте дистрибутив с раздела Online Distributions сайта wrc.intersystems.com
Если вы только хотите попробовать InterSystems IRIS — https://www.intersystems.com/ru/try-intersystems-iris-for-free/
Ещё проще через Docker:
docker run --name iris20 --init --detach --publish 51773:51773 --publish 52773:52773 store/intersystems/iris-community:2020.1.0.215.0
Вебинар
7 апреля в 17:00 по московскому времени пройдёт вебинар, посвящённый новому релизу. Его проведут Джефф Фрид (Director, Product Management) и Джо Лихтенберг (Director of Product & Industry Marketing). Регистрируйтесь! Вебинар будет на английском языке.