Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
Ключевые изменения в 2015Что нового и куда движутся технологии InterSystems
Шваров Евгений
Новое в CachéЧтоновогов Caché 2015
• Еслиранее1-2релизавгод• В2015-м– релизыкаждыйквартал!
• Сейчасесть2015.1 релизи2015.2FT.
РелизыCachéкаждыйквартал
• Ростпроизводительностидо2,5разпосравнениюсCaché2014
• НаибольшийэффектнаблюдаетсядлямногопроцессорныхсистемидлябольшихECPконфигураций
УскорениеработывCaché2015
• Глобалы (NoSQL доступ)• SQL– таблицы• Объекты• XMLProjection• 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
SELECTJSON_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 ChunkNOverhead
Overhead
t1t2
РазмерычастейРавные части,неслишкомбольшие,неслишкоммаленькие
ЗависимостьЧастидолжныбытьнезависимыдруготдруга
SQL query
Использование в запросах
1•Использование %PARALLELговоритоптимизатору,чтонужноразделитьзапрос
Работаоптимизатора• Определяетвозможность
параллелизации
• Разделяетпервуюкартувплане
наNчастей
• Генерируетусловияс
диапазонадлякаждойчасти
• Работаетпоисходному
планусучетомразделения
начасти
2••Генерируетсястандартныйпланзапроса
3••%PARALLELпроверяетплан
4••Сгенерированныйкодсодержитразделениеипостановкувочередь
Работа запросов: пример
selectAvg(Age)from%PARALLELSample.Person
…where id<=X1…
…where id>X1andid<=X2…
…where id>X2andid<=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é
CrossPlatform
OpenSource
ModernExperience
Ecosystem SourceControl Debugging
Refactoring UnitTesting
CodeAnalysis
Как люди выбирают современное IDE?
• Atelier– этоплагиндлясвободнойIDEEclipse• Кросплатформенная среда(Windows,Linux,Mac…)• ВстроеннаяподдержкаGit/GitHub• ДляэкспортавVCSоперируемфайламиоперационнойсистемы• Нативный UDL экспорт,никакогоXML
Atelier. Что это и фичи
• CCachéработаидетчерезRESTAPI• Почтивседелаетсянасторонеклиента–Строится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
MDX2JSONRESTAPI
DeepSeeMobile
Смартфон
Cachéсервер
Дашборды
Виджеты
ДанныеMDX
Как это работает?
Типичные бизнес задачи DeepSee• Пивот-таблица• Дриллдаунданных• Гистограммы• Таймчарты
Что дает DeepSee Mobile?Визуализациядашбордов DeepSee наiPhone/iPad,Android,Winphone
НиоднойстрочкипрограммированияРаботаетначинаясверсии2013.1
Все вместе• Релизыкаждыйквартал• УскорениеCachéв2-2.5раза• DocDB• Нативная поддержкаJSON –ядро,CacheSQL,COS• ПараллельныйSQL• НоваястудияAtelier• DeepSeeMDX2JSONRESTAPI
ВОПРОСЫ?