На прошлой неделе состоялся выпуск новой версии СУБД Cache под номером 2017.2.
Представляем вашему вниманию список изменений на русском языке. Полный список изменений и Upgrade Checklist на английском языке можно найти по ссылке.
Параллельное дежурналирование при зеркалировании и восстановлении из журнала
В Chache 2017.2 повышена скорость дежурналирования при зеркалировании и восстановлении из журнала. Это должно улучшить масштабируемость зеркалируемых систем с высокими темпами обновлений баз данных.
Дежурналирование – процесс применения записей журнала к базе данных. Раньше обновлением базы данных и дежурналированием занимался один процесс (и серия вспомогательных prefetch-процессов). В этом выпуске несколько процессов (до 4-х) могут применять записи журнала параллельно к разным базам данных. Эта возможность работает, если доступно достаточное количество процессоров и совместно используемой памяти.
При зеркалировании работа параллельного дежурналирования может быть ограничена типом узла с помощью новой настройки конфигурации. По умолчанию данная функция отключена для узлов типа «Reporting Async». Если в отчет включены данные из нескольких баз данных, которые находятся в процессе обновления путем дежурналирования, различия в тайминге обновлений для разных баз данных могут привести к большей изменчивости прогнозов этих отчетов, чем в предыдущих версиях. Характер этой изменчивости по существу не отличается от характера изменчивости любых других отчетов, составляемых по меняющимся данным.
Более подробную информацию о параллельном дежурналировании можно найти в параграфе «Configuring Parallel Dejournaling» главы «Mirroring» документации.
При восстановлении из журнала параллельное дежурналирование не работает, если выбраны некоторые нестандартные настройки. В частности, оно не работает при отмене операции после любой ошибки или при использовании журнальных обновлений. Более подробную информацию о параллельном дежурналировании можно найти в параграфе «Restore Globals From Journal Files Using ^JRNRESTO» главы «Journaling» документации.
Параллельное дежурналирование также не работает с теневым сервером и при запуске системы.
Наконец, в новом выпуске Cache содержатся два улучшения, которые применимы независимо от того, работает параллельное дежурналирование или нет. Улучшена эффективность prefetch-процессов дежурналирования и ограничено использование памяти очередью дежурналирования до 50МБ на процесс. В предыдущих версиях очередь дежурналирования могла потреблять существенно больше памяти.
Новые функции DeepSee
DeepSee Folder Manager
Для упрощения развертывания компонентов DeepSee в Folder Manager добавлена новая опция для экспорта связанных элементов. При экспорте в класс-контейнер эта опция будет не только экспортировать выбранные элементы, но и другие элементы, относящиеся к выбранным. Связанные элементы для индикаторной панели включают сводные таблицы и списки терминов, используемые индикаторной панелью. Связанные элементы для сводной таблицы включают именованные фильтры, пивот-переменные и общие вычисляемые элементы.
В предыдущих версиях Folder Manager всегда использовал серверную файловую систему для экспорта/импорта файлов. Теперь Folder Manager предоставляет возможность выбора файловой системы: локальной или серверной.
Фильтры индикаторной панели – именованные фильтры теперь могут быть использованы в качестве значений по умолчанию для фильтров индикаторной панели.
Новые функции iFind и iKnow
iFind теперь поддерживает поиск по смежному расположению, позволяющий находить записи, в которых искомые термины находятся близко друг к другу, но не обязательно в указанном порядке (в отличие от более строгого позиционного поиска). Чтобы активировать поиск по смежному расположению, возьмите список искомых терминов, разделенных запятой, в квадратные скобки. Опционально можно указать диапазон, в котором должны встречаться указанные термины. Например, запрос [Boston, New York, 5] будет искать все записи, где термины «Boston» и «New York» находятся не более чем в пяти позициях друг от друга.
iKnow получил несколько улучшений производительности при создании доменов, особенно при использовании систем с большим количеством ядер. В зависимости от вашего оборудования и набора данных вы можете заметить уменьшение общего времени обработки от 10 до 30%.
Расширены iKnow REST APIs. Например, вы можете получить только количество результатов либо количество с полным списком результатов для большинства существующих конечных точек API.
Улучшения в SQL
Аудит SQL-запросов
Данный выпуск добавляет возможность аудита исполнения SQL-запросов. Существует три новых системных события для аудита SQL-запросов:
%System/%SQL/DynamicStatement — для динамических SQL-запросов
%System/%SQL/EmbeddedStatement — для встроенных SQL-запросов
%System/%SQL/XDBCStatement — для xDBC-запросов
Для включения этих событий, перейдите в Портале Управления на страницу События аудита системы, выбрав Администрирование системы > Безопасность > Аудит > Настроить системные события.
Оптимизации запросов
SQL-запросы получили несколько оптимизаций. Оптимизатор запросов теперь учитывает селективность выбросов при вычислении селективности условий соединения, что приводит к улучшению планов для некоторых запросов. Внешние соединения теперь могут использовать все оптимизации, доступные для внутренних соединений. В частности, внешние условия соединения, которые могут быть частично удовлетворены индексом, больше не требуют создания временного индекса, что часто значительно повышает производительность запросов.
Опциональный приоритет операторов по стандарту ANSI SQL
Новая опция позволяет устанавливать приоритет операторов по стандарту ANSI SQL вместо приоритета операторов «слева направо», используемого по умолчанию в Cache SQL. Приоритет Cache SQL по-прежнему используется по умолчанию, но вы можете изменить приоритет через API или через страницу «Общие настройки SQL» Портала Управления, выбрав Администрирование системы > Конфигурация > Настройки SQL и Объектов > Общие настройки SQL.
«Эволюция» фиксированных планов
В предыдущие версии Cache была добавлена возможность фиксировать планы SQL-запросов и автоматически фиксировать планы запросов при обновлении до новых версий Cache. Если новая версия включала оптимизации для планов запросов, то к фиксированным планам они не применялись при обновлении. В текущем выпуске Cache определяет и отмечает те запросы, которые могут получить преимущества новых оптимизаций. На главной странице SQL-выражений такие запросы будут указаны в столбце «New Plan». Вы можете «разморозить» такие планы для получения преимуществ новых оптимизаций.
Где найти информацию о новых функциях Atelier – IDE на основе Eclipse
Atelier – IDE для Cache на основе Eclipse, доступна в качестве релиза, независимого от цикла релизов Cache. Новые функции Atelier описаны в документации, предоставляемой с каждой новой версией. Atelier позволяет разрабатывать приложения Cache на клиентской системе, загружать приложения на сервер Cache, где их можно запускать и отлаживать.
Будущая разработка будет сфокусирована на новой IDE. Studio останется доступной для установки, и разработчики смогут продолжать использовать ее для разработки. Тем не менее, Studio будет расцениваться как продукт на поддержке и не будет получать новой функциональности.
Некоторые незначительные ошибки Studio могут быть не устранены, в зависимости от требуемых ресурсов и серьезности проблемы.
Atelier доступен как отдельная загрузка в дополнение к Cache или Ensemble. Вы можете выбрать, использовать отдельный установщик Atelier или плагин для существующей инсталляции Eclipse. Atelier использует механизм автообновления Eclipse, чтобы помочь пользователям своевременно получать обновления. Вы можете загрузить Atelier на отдельной странице загрузки.
Другие изменения
Также в этом выпуске представлено множество мелких улучшений и исправлений. Если вы обновляетесь с существующей инсталляции, пожалуйста, ознакомьтесь с подробным списком изменений раздела Upgrade Checklist.
- Мастер XML-схемы позволяет произвести каскадное удаление подклассов, когда удалён экземпляр суперкласса.
- Cache Nodejs поддерживает Node 7.
- Новая опция для сброса CSP-буфера, даже если буфер еще не заполнен.