3. • Если ранее 1-2 релиза в
год
• В 2015-м – релизы
каждый квартал!
• Сейчас есть 2015.1 релиз
и 2015.2 FT.
Релизы Caché каждый квартал
4. • Рост производительности
до 2,5 раз по сравнению с
Caché 2014
• Наибольший эффект
наблюдается для
многопроцессорных
систем и для больших ECP
конфигураций
Ускорение работы в Caché 2015
5. • Глобалы (NoSQL доступ)
• SQL – таблицы
• Объекты
• XML Projection
• Caché 2015 – DocDB!
Новое представление и способ работы с данными
6. DocDB - подробности
• Теперь ваши данные
можно представить и
как документы
• CRUD и запросы к
данным как к
документам
• Манипуляция данными в
JSON
• DocDB ~ MongoDB
##class(%Dynamic.Object).%New()
##class(%Dynamic.Array).%New()
##class(%Dynamic.AbstractVector).%ParseJSON()
7. DocDB - подробности
• Создан специальный
пакет классов %Dynamic
• Релиз в 2015.3?
##class(%Dynamic.Object).%New()
##class(%Dynamic.Array).%New()
##class(%Dynamic.AbstractVector).%ParseJSON()
9. Расширенная поддержка JSON. COS
Set array=[ 1,2,3,4 ]
Set array=[ 1,x,y*2,"string",x_","_y ]
Set object={ "forename":"Joe", surname:"Blogs" }
Set object={ sum: var1+var2, type: $select(x=1:"one",x=2:"two") }
Set array=[ (a]b) , (a]]b) ]
Set object={ var : (a]b) }
Set array=[ 1, { name : forename_" "_surname } , val**2, { var : [ 1, x*y ] } ]
Set object={ name : forename_" "_surname, sub : [ { var : "val" }, 5, (a]b) ] }
Do ..Method([1,2,3], { var:"val" })
Создать инстанс %Zen.ProxyObject можно с помощью set
10. JSON расширения в Caché SQL. Хранение данных
• Никаких новых типов данных SQL не предлагается
• JSON документы хранятся как значения строчного типа,
например,VARCHAR, CLOB, VARBINARY, или BLOB и т.п.
CREATE TABLE employees (
emp_id INTEGER,
department INTEGER,
emp_json VARCHAR (5000) )
11. JSON расширения в Caché SQL. Запросы
• Добавлены новые ключевые слова:
– JSON_OBJECT
– JSON_OBJECTAGG
– JSON_ARRAY
– JSON_ARRAYAGG
12. • Этот запрос возвращает одну строку каждого отдела записанного в таблице DEPTS;
• Эта строка содержит одну колонку, в которой JSON Объект сериализован, и
содержит номер отдела и название
JSON_OBJECT
SELECT
JSON_OBJECT( 'deptno' : deptno, 'deptname' : deptname )
FROM depts
{ "deptno" : 314,"deptname" : "Engineering" }
13. Расширенная поддержка JSON. Изменения в ядре
Парсинг JSON на уровне ядра дает ускорение работы с
JSON до 200 раз
15. • Параллельные вычисления в Caché уже есть.
• Параллельные вычисления в Caché SQL - %PARALLEL
• Как все работает.
• Когда стоит применять.
Параллелизация SQL запросов Caché. %Parallel
16. • Параллельная компиляция классов
– Появилась в Caché 2011.1, автоматическая с Caché 2013.1
• Параллельное построение индексов
– [Caché 2013.1]
– %Library.IndexBuilder.%ConstructIndicesParallel()
• DeepSee
– Построение кубов
– MDX запросы
» Вычисление каждой ячейки – отдельная задача
» Рабочие процессы могу использовать все доступные ядра
Параллелизация в Caché. Что уже есть
17. Использование в запросах
• Select … UNION %PARALLEL select …
– Каждая ветка UNION вычисляется в отдельном процессе Caché
• Select … FROM %PARALLEL <tables>
– N частей
– Оптимизатор SQL решает как разделить запрос на части
– Вычисления делятся на части по ключам (индекса или таблицы)
– Where T1.ID>? AND T1.ID<=?
– Внутренние функции определяют границы частей
– Проверяются глобалы индексов и данных
Синтаксис
18. Требования к параллелизации
Запрос, разделяемый на несколько частей
t
Chunk1 Chunk2 Chunk3 ChunkN
Overhead
Overhead
t1
t2
Размеры частей
Равные части, не слишком
большие, не слишком
маленькие
Зависимость
Части должны быть
независимы друг от друга
SQL query
19. Использование в запросах
1
• Использование %PARALLEL говорит
оптимизатору, что нужно разделить запрос
Работа оптимизатора
• Определяет возможность
параллелизации
• Разделяет первую карту в плане
на N частей
• Генерирует условия с
диапазона для каждой
части
• Работает по исходному
плану с учетом
разделения на части
2
• Генерируется стандартный план запроса
3
• %PARALLEL проверяет план
4
• Сгенерированный код содержит разделение и
постановку в очередь
20. Работа запросов: пример
select Avg(Age) from %PARALLEL Sample.Person
…where id<=X1…
…where id>X1 and
id<=X2…
…where id>X2 and
id<=X3
…where id>X3
Куски
вычисленийSELECT…
FROM
%PARALLEL
<tables>…
SELECT count(T1.Age),sum(T1.Age) FROM %NOPARALLEL Sample.Person T1
%PARTITION BY T1.ID>? AND T1.ID<=?
Получение
итогового
результата
Очередь
задач
21. Когда использовать %PARALLEL
– НЕ замена для индексов
• Индексы позволяют делать меньше вычислений для одного и того же запроса
– Потребляет больше ресурсов
• Разделение, объединение результатов
– НЕ для всех запросов подойдет
• Не все запросы станут быстрее
Волшебная палочка?
24. • Atelier – это плагин для свободной IDE Eclipse
• Кросплатформенная среда (Windows, Linux, Mac…)
• Встроенная поддержка Git/GitHub
• Для экспорта в VCS оперируем файлами операционной системы
• Нативный UDL экспорт, никакого XML
Atelier. Что это и фичи
25. • C Caché работа идет через REST API
• Почти все делается на стороне клиента
–Строится AST
–Производится рефакторинг
–Поиск
–Отладка
Atelier - архитектура
26. • Полностью RESTful интерфейс для работы клиента
–Исследование содержимого областей и баз
–Компиляция
–Синхронизация
–API полностью публично*
• Отладка происходит посредством взаимодействия Web Sockets
• Будет встроенный telnet клиент
Atelier – работа с сервером
28. • Бета программа начнется по готовности
– Синтаксический разбор - COS
– Поддержка классов
– Поддержка программ
– Отладка +
– Интеграция с Unit тестированием
• Летом?
Когда релиз?
30. • Каждый виджет DeepSee получает результат MDX запроса и
визуализирует результат.
• Сделано REST-API, которое выдает по MDX результат в виде JSON
• Кроме MDX есть обвязка метаданных дашбордов: виджеты,
фильтры, доступ, MDX-запросы.
• Модуль включен в продукт, результат ждем в 2015.3
MDX2JSON
31. MDX2JSON REST API
DeepSee Mobile
Смартфон
Caché сервер
Дашборды
Виджеты
Данные MDX
Как это работает?
32. Типичные бизнес задачи DeepSee
• Пивот-таблица
• Дриллдаун данных
• Гистограммы
• Таймчарты
33. Что дает DeepSee Mobile?
Визуализация дашбордов DeepSee на iPhone/iPad, Android, Winphone
Ни одной строчки программирования
Работает начиная с версии 2013.1
34. Все вместе
• Релизы каждый квартал
• Ускорение Caché в 2-2.5 раза
• DocDB
• Нативная поддержка JSON –ядро, CacheSQL, COS
• Параллельный SQL
• Новая студия Atelier
• DeepSee MDX2JSON REST API
ВОПРОСЫ?