Миграция на последние версии Caché Кудинов Сергей
План Необходимость миграции Необходимость миграции –Использование новых/ усовершенствованных возможностей –Использование нового оборудования –Использование поддержки продуктов –Быть в тонусе!!! Рекомендации по миграции Рекомендации по миграции Примеры миграции Примеры миграции
Новые возможности Есть в Release Notes Остановимся на новых возможностях Caché
Работа с локальными массивами
Работа с глобальными массивами
Основные новые возможности в Производительность при работе с объектами Производительность при работе с объектами –Время компиляции –Обращение к свойствам и методам объектов Высокая надежность Высокая надежность –Усовершенствование работы с теневым сервером –Уменьшение времени после сбоев Управление большими конфигурациями Управление большими конфигурациями –Увеличение производительности задач/утилит Незапланированных (восстановление журнала, проверка целостности,...)Незапланированных (восстановление журнала, проверка целостности,...) Запланированные (передача изменений, backup,...)Запланированные (передача изменений, backup,...)
Обращение к свойствам/методам Увеличение производительности при обращении к Увеличение производительности при обращении к –Методам классов –Свойствам –Методам экземпляров Использование механизмов кеширования при обращении к методам/свойствам Использование механизмов кеширования при обращении к методам/свойствам –Подобная модель используется для кеширования программ (2007.1) Устранение «соревнований» между объектами на загруженных системах Устранение «соревнований» между объектами на загруженных системах –Уменьшение использование CPU
Результаты тестирования
Object Dispatch - итоги Вызов методов в раза быстрее, чем Вызов методов в раза быстрее, чем До 5 раз быстрее, чем Caché 5.2 До 5 раз быстрее, чем Caché 5.2 –Кумулятивный эффект улучшений при работе с объектами и программами Обращение к Методам/Свойствам лучше масштабируются Обращение к Методам/Свойствам лучше масштабируются –при увеличении числа процессов –при увеличении числа процессоров/ядер Уменьшение загрузки CPU Уменьшение загрузки CPU Доступно в Caché
Компиляция классов – наследование методов До код наследуемых методов копировался в классах-потомках До код наследуемых методов копировался в классах-потомках Если класс Patient наследует класс Person Если класс Patient наследует класс Person –Весь код метода, наследуемых из Person копировался в программ для Patient –Перекомпилировался весь наследуемый код в классе Patient
Недостатки существующего подхода Дублирование кода Дублирование кода Длительное время компиляции Длительное время компиляции –Время компиляции любого класса –Изменение класса вверху иерархии требует перекомпиляции всех классов ниже в иерархии Сложности с размером программ(ранее) Сложности с размером программ(ранее)
Реализация в Нет копирования методов супер-классов Нет копирования методов супер-классов Изменение обращения к методам супер-класса (использование %this) Изменение обращения к методам супер-класса (использование %this) Изменение компилятора для того, чтобы супер-класс мог быть перекомпилирован без компиляции классов- потомков Изменение компилятора для того, чтобы супер-класс мог быть перекомпилирован без компиляции классов- потомков
Новое для отказоустойчивых систем Более быстрые механизмы востановления после сбоев Более быстрые механизмы востановления после сбоев Устранение требований к сетевым дискам Устранение требований к сетевым дискам Уменьшение зависимости от ПО третьих лиц для кластеризации Уменьшение зависимости от ПО третьих лиц для кластеризации Использование нескольких теневых серверов Использование нескольких теневых серверов
Теневые сервера Использование нескольких теневых сервером Использование нескольких теневых сервером –Один из них основной –Другие резервные TCP –соединения между набром теневых серверов TCP –соединения между набром теневых серверов Основной сервер передает изменения резервным Основной сервер передает изменения резервным
Studio Возможность обнаружения undefined переменных Возможность обнаружения undefined переменных Подсказка при вводе макросов Подсказка при вводе макросов Подсказка при вводе параметров Подсказка при вводе параметров Подсказка при вводе локальных переменных Подсказка при вводе локальных переменных
Zen Поддержка drag-and-drop Поддержка drag-and-drop Динамическое изменение размеров групп Динамическое изменение размеров групп Усовершенствование механизма загрузки дерева Усовершенствование механизма загрузки дерева Новый tab control Новый tab control
CSP Поддержка программной http аутентификации из Cache Поддержка программной http аутентификации из Cache Новый интерфейс к IIS 7 Новый интерфейс к IIS 7 Поддержка пула соединений при работе с Apache Поддержка пула соединений при работе с Apache Поддержка http 1.1 Поддержка http 1.1 Передача сообщений >32K с помощью chunks Передача сообщений >32K с помощью chunks
Работа с потоками Усовершенствование механизма поиска текста в потоках (%CONTAINS и %SIMILARITY) Усовершенствование механизма поиска текста в потоках (%CONTAINS и %SIMILARITY) Усовершенствование планов SQL запросов при поиске текста в потоках (потоки могут индексироваться) Усовершенствование планов SQL запросов при поиске текста в потоках (потоки могут индексироваться) Поток может возвращаться SQL функцией Поток может возвращаться SQL функцией Поток может быть аргументом SUBSTRING Поток может быть аргументом SUBSTRING
Безопасность Супер-сервер может работать с SSL соединениями Супер-сервер может работать с SSL соединениями Telnet через SSL для Windows Telnet через SSL для Windows Усовершенствование безопасности для таблиц на уровне столбцов Усовершенствование безопасности для таблиц на уровне столбцов
Разное Усовершенствование light c++ binding Усовершенствование light c++ binding Поддержка JIS2004 Поддержка JIS2004 Профилирование кода на уровне подпрограмм Профилирование кода на уровне подпрограмм Усовершенствование NLS Усовершенствование NLS Бинарный SOAP Бинарный SOAP
Итого Более широкие возможности построения интерфейса (Zen+новые bindings) Более широкие возможности построения интерфейса (Zen+новые bindings) Увеличение производительности Увеличение производительности Использование новых конструкций (try…catch,…) Использование новых конструкций (try…catch,…) Новые технологии (DeepSee) Новые технологии (DeepSee)
Использование нового оборудования –Windows Server 2008 –AIX 6.1 –RedHat 5* –SuSe –Windows Vista
Использование технической поддержки Версии 5.x не поддерживаются Версии 5.x не поддерживаются –Трудности при решении проблем через WRC –Большие трудности при заказе Adhoc
Быть в тонусе Миграция с на значительно легче, чем с 4.1 на Миграция с на значительно легче, чем с 4.1 на Возможность использования новых технологий Возможность использования новых технологий Совершенствование процесса разработки/тестирования ПО Совершенствование процесса разработки/тестирования ПО
Рекомендации по миграции Анализ Release Notes Анализ Release Notes Анализ Upgrade CheckList Анализ Upgrade CheckList Анализ кода программ, классов, сsp-страниц, хранимого в глобалах кода Анализ кода программ, классов, сsp-страниц, хранимого в глобалах кода –Использование $ZU() –Использование системных классов –Использование системных программ –…
Ошибки компиляции Требования к корректности описания классов стали жестче Требования к корректности описания классов стали жестче Может потребоваться незначительная модификация для исправления ошибок Может потребоваться незначительная модификация для исправления ошибок Существуют изменения в описании структуры данных (например, в SQLStorage) Существуют изменения в описании структуры данных (например, в SQLStorage)
Ошибки исполнения Ошибки исполнения намного опаснее ошибок компиляции!!! Надо стараться их предотвратить Ошибки исполнения намного опаснее ошибок компиляции!!! Надо стараться их предотвратить Гораздо проще сравнить результат вызова системной функции в разных версиях Cache, чем протестировать работу всего приложения Гораздо проще сравнить результат вызова системной функции в разных версиях Cache, чем протестировать работу всего приложения Есть сомнения – лучше перепроверить Есть сомнения – лучше перепроверить
Примеры миграции НПЦ «Аир» (MSM-Cache 4.1-Cache 5.0-Cache ) НПЦ «Аир» (MSM-Cache 4.1-Cache 5.0-Cache ) ЭКО-М (DTM-Cache 5.0-Cache 5.2-Cache ) ЭКО-М (DTM-Cache 5.0-Cache 5.2-Cache ) Порт Владивостока (Cache ) Порт Владивостока (Cache ) SolidWorks (Cache 5.0-Cache 5.2-Cache ) SolidWorks (Cache 5.0-Cache 5.2-Cache ) Registru (Cache ) Registru (Cache ) Летограф (Cache ) Летограф (Cache ) …
Спасибо за внимание! Вопросы? Кудинов Сергей