34
Ключевые изменения в 2015 Что нового и куда движутся технологии InterSystems Шваров Евгений

владивосток форум новости технологий 2015

Embed Size (px)

Citation preview

Ключевые изменения в 2015 Что нового и куда движутся

технологии InterSystems Шваров Евгений

Новое в Caché Что нового в Caché 2015

• Если ранее 1-2 релиза в год

• В 2015-м – релизы каждый квартал!

• Сейчас есть 2015.1 релиз и 2015.2 FT.

Релизы Caché каждый квартал

• Рост производительности до 2,5 раз по сравнению с Caché 2014

• Наибольший эффект наблюдается для многопроцессорных систем и для больших ECP конфигураций

Ускорение работы в Caché 2015

• Глобалы (NoSQL доступ)

• SQL – таблицы

• Объекты

• XML Projection

• Caché 2015 – DocDB!

Новое представление и способ работы с данными

DocDB - подробности • Теперь ваши данные

можно представить и как документы

• CRUD и запросы к данным как к документам

• Манипуляция данными в JSON

• DocDB ~ MongoDB

##class(%Dynamic.Object).%New()

##class(%Dynamic.Array).%New()

##class(%Dynamic.AbstractVector).%ParseJSON()

DocDB - подробности

• Создан специальный пакет классов %Dynamic

• Релиз в 2015.3?

##class(%Dynamic.Object).%New()

##class(%Dynamic.Array).%New()

##class(%Dynamic.AbstractVector).%ParseJSON()

Расширенная поддержка JSON

• Изменения в COS

• Изменения в SQL

• Изменения в ядре

Расширенная поддержка 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

JSON расширения в Caché SQL. Хранение данных

• Никаких новых типов данных SQL не предлагается

• JSON документы хранятся как значения строчного типа, например,VARCHAR, CLOB, VARBINARY, или BLOB и т.п.

CREATE TABLE employees ( emp_id INTEGER, department INTEGER, emp_json VARCHAR (5000) )

JSON расширения в Caché SQL. Запросы

• Добавлены новые ключевые слова:

– JSON_OBJECT

– JSON_OBJECTAGG

– JSON_ARRAY

– JSON_ARRAYAGG

• Этот запрос возвращает одну строку каждого отдела записанного в таблице DEPTS;

• Эта строка содержит одну колонку, в которой JSON Объект сериализован, и

содержит номер отдела и название

JSON_OBJECT

SELECT JSON_OBJECT( 'deptno' : deptno, 'deptname' : deptname ) FROM depts { "deptno" : 314,"deptname" : "Engineering" }

Расширенная поддержка JSON. Изменения в ядре

Парсинг JSON на уровне ядра дает ускорение работы с JSON до 200 раз

Параллельные вычисления в SQL Новый хинт %PARALLEL

• Параллельные вычисления в Caché уже есть.

• Параллельные вычисления в Caché SQL - %PARALLEL • Как все работает.

• Когда стоит применять.

Параллелизация SQL запросов Caché. %Parallel

• Параллельная компиляция классов – Появилась в Caché 2011.1, автоматическая с Caché 2013.1

• Параллельное построение индексов – [Caché 2013.1]

– %Library.IndexBuilder.%ConstructIndicesParallel()

• DeepSee

– Построение кубов

– MDX запросы

» Вычисление каждой ячейки – отдельная задача

» Рабочие процессы могу использовать все доступные ядра

Параллелизация в Caché. Что уже есть

Использование в запросах

• Select … UNION %PARALLEL select …

– Каждая ветка UNION вычисляется в отдельном процессе Caché

• Select … FROM %PARALLEL <tables>

– N частей

– Оптимизатор SQL решает как разделить запрос на части

– Вычисления делятся на части по ключам (индекса или таблицы)

– Where T1.ID>? AND T1.ID<=?

– Внутренние функции определяют границы частей

– Проверяются глобалы индексов и данных

Синтаксис

Требования к параллелизации

Запрос, разделяемый на несколько частей

t

Chunk1 Chunk2 Chunk3 ChunkN O

verh

ead

Overh

ead

t1 t2

Размеры частей

Равные части, не слишком

большие, не слишком

маленькие

Зависимость

Части должны быть

независимы друг от друга

SQL query

Использование в запросах

1

• Использование %PARALLEL говорит

оптимизатору, что нужно разделить запрос

Работа оптимизатора

• Определяет возможность

параллелизации

• Разделяет первую карту в плане

на N частей

• Генерирует условия с

диапазона для каждой

части

• Работает по исходному

плану с учетом

разделения на части

2 • Генерируется стандартный план запроса

3 • %PARALLEL проверяет план

4 • Сгенерированный код содержит разделение и

постановку в очередь

Работа запросов: пример

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<=?

Получение итогового результата

Очередь

задач

Когда использовать %PARALLEL

– НЕ замена для индексов

• Индексы позволяют делать меньше вычислений для одного и того же запроса

– Потребляет больше ресурсов

• Разделение, объединение результатов

– НЕ для всех запросов подойдет

• Не все запросы станут быстрее

Волшебная палочка?

Atelier – новая студия Кросплатформенная студия для Caché

Cross

Platform

Open

Source

Modern

Experience

Ecosystem Source

Control Debugging

Refactoring Unit

Testing

Code

Analysis

Как люди выбирают современное IDE?

• Atelier – это плагин для свободной IDE Eclipse

• Кросплатформенная среда (Windows, Linux, Mac…)

• Встроенная поддержка Git/GitHub

• Для экспорта в VCS оперируем файлами операционной системы

• Нативный UDL экспорт, никакого XML

Atelier. Что это и фичи

• C Caché работа идет через REST API

• Почти все делается на стороне клиента

–Строится AST

–Производится рефакторинг

–Поиск

–Отладка

Atelier - архитектура

• Полностью RESTful интерфейс для работы клиента

–Исследование содержимого областей и баз

–Компиляция

–Синхронизация

–API полностью публично*

• Отладка происходит посредством взаимодействия Web Sockets

• Будет встроенный telnet клиент

Atelier – работа с сервером

Atelier

• Бета программа начнется по готовности

– Синтаксический разбор - COS

– Поддержка классов

– Поддержка программ

– Отладка +

– Интеграция с Unit тестированием

• Летом?

Когда релиз?

DeepSee – MDX2JSON Доступ к данным через REST

• Каждый виджет DeepSee получает результат MDX запроса и

визуализирует результат.

• Сделано REST-API, которое выдает по MDX результат в виде JSON

• Кроме MDX есть обвязка метаданных дашбордов: виджеты,

фильтры, доступ, MDX-запросы.

• Модуль включен в продукт, результат ждем в 2015.3

MDX2JSON

MDX2JSON REST API

DeepSee Mobile

Смартфон

Caché сервер

Дашборды

Виджеты

Данные MDX

Как это работает?

Типичные бизнес задачи DeepSee

• Пивот-таблица

• Дриллдаун данных

• Гистограммы

• Таймчарты

Что дает DeepSee Mobile?

Визуализация дашбордов DeepSee на iPhone/iPad, Android, Winphone

Ни одной строчки программирования

Работает начиная с версии 2013.1

Все вместе

• Релизы каждый квартал

• Ускорение Caché в 2-2.5 раза

• DocDB

• Нативная поддержка JSON –ядро, CacheSQL, COS

• Параллельный SQL

• Новая студия Atelier

• DeepSee MDX2JSON REST API

ВОПРОСЫ?