SlideShare a Scribd company logo
Запросы классов
Лебедюк Эдуард
• Базовые запросы классов
• Кастомные запросы классов
План
Базовые запросы классов
Абстракция над SELECT SQL
• Метод представления SELECT SQL запросов
• Обрабатываются оптимизатором и компилятором SQL
• В списке аргументов нужно перечислить список аргументов SQL запроса
• Caché Studio предоставляет мастер создания запросов классов
Что такое
Базовые запросы классов
• Абстракция SQL в COS коде
• Упрощение чтения int кода
• Упрощение работы с курсорами
• Уменьшение времени компиляции
• Документирование запросов
Преимущества по сравнению с SQL
Пример определения
Базовые запросы классов
Query ByName(name As %String = "") As %SQLQuery
(ROWSPEC="ID:%Integer,Name:%String,DOB:%Date,SSN:%String")
[ SqlProc ]
{
SELECT ID, Name, DOB, SSN
FROM Sample.Person
WHERE (Name %STARTSWITH :name)
ORDER BY Name
}
• %SQL.Statement
• SQL контекст
Как использовать?
Базовые запросы классов
Set statement=##class(%SQL.Statement).%New()
Set status=statement.%PrepareClassQuery("Sample.Person","ByName")
Set resultset=statement.%Execute("A")
While resultset.%Next() {
Write !, resultset.%Get("Name")
}
Call Sample.SP_Sample_By_Name('A')
Select * from Sample.SP_Sample_By_Name('A'')
Кастомные запросы классов
• Запрос, логику которого вы пишете сами
Что такое
Кастомные запросы классов
• Сложная логика
• Вы получаете доступ к данным через API, формат которого вас не устраивает
• Данные хранятся в глобалах, без классов
• Для доступа к данным необходима эскалация прав
• Для доступа к данным необходимо запросить внешнее API
• Для доступа к данным необходим доступ к файловой системе
• Необходимы какие-то дополнительные операции перед выполнением самого
запроса (установление соединения, проверка прав и т.д.)
Зачем
• queryName — похож на базовый запрос класса, предоставляет информацию
• queryNameExecute — конструктор запроса
• queryNameFetch — осуществляет получение следующего результата
• queryNameClose — деструктор запроса
Детали реализации и примеры - habrahabr.ru/company/intersystems/blog/270839
Как?
Кастомные запросы классов
• Обход глобала
– Данные хранятся в глобалах, без классов
– Нужно уменьшить количество обращений к глобалам
– Результаты должны/могут быть отсортированы по ключу глобала
• Статический SQL
– Упрощение чтения int кода
– Упрощение работы с курсорами
– Уменьшение времени компиляции
• Динамический SQL
– Актуально для случаев, когда кроме собственно запроса, который представим в виде
SQL, нужно производить какие-либо дополнительные действия
Варианты
Логика кастомного запроса
Пример
EnsLogViewer
• Просмотр логов Ensemble
• Добавили поддержку областей
• Работает на
– 2013.1
– 2014.1
– 2015.1
– 2015.2
https://github.com/intersystems-ru/EnsLogViewer
EnsLogViewer
Альтернативный подход
%SQL.CustomResultSet
• Несколько более высокая скорость работы
• Вся метаинформация берётся из определения класса, ROWSPEC не нужен
• Соответствие принципам ООП
Особенности
%SQL.CustomResultSet
Конец
habrahabr.ru/company/intersystems/blog/270839

More Related Content

PPT
NoSql. Фокус на тестирование
PPTX
Особенности тестирования NoSql приложений
PPT
MongoDB. Фокус на тестирование
PPT
Parallelization of tests with SeleniuGrid
PDF
По Вашей просьбе, продукты Atlassian в Docker
PPTX
Особенности тестирования NoSQL приложений
PPT
Основные команды языка SQL
PDF
TDD или как я стараюсь писать код
NoSql. Фокус на тестирование
Особенности тестирования NoSql приложений
MongoDB. Фокус на тестирование
Parallelization of tests with SeleniuGrid
По Вашей просьбе, продукты Atlassian в Docker
Особенности тестирования NoSQL приложений
Основные команды языка SQL
TDD или как я стараюсь писать код

What's hot (16)

PPTX
Jmeter
PPTX
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
PDF
Performance Test Driven Development (CEE SERC 2013 Moscow)
PPTX
Нейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
PPTX
О тестировании в EDI
PPTX
Sql server clr integration
PDF
01-Hibernate. Понятие ORM-JPA
PDF
Продвинутое использование Celery — Александр Кошелев
PPTX
Работа с порталом техподдержки Vertex
PDF
Проверка на прочность или нагрузочное тестирование с Jmeter
PPTX
django-and-postgresql
PPT
Java. Lecture 07. Advanced XML
PDF
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
PDF
Юрий Буянов «Архитектура Goozy»
PPTX
Александр Шелёмин «SQL Server Performance 101»
PPTX
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Jmeter
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
Performance Test Driven Development (CEE SERC 2013 Moscow)
Нейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
О тестировании в EDI
Sql server clr integration
01-Hibernate. Понятие ORM-JPA
Продвинутое использование Celery — Александр Кошелев
Работа с порталом техподдержки Vertex
Проверка на прочность или нагрузочное тестирование с Jmeter
django-and-postgresql
Java. Lecture 07. Advanced XML
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Юрий Буянов «Архитектура Goozy»
Александр Шелёмин «SQL Server Performance 101»
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Ad

Viewers also liked (11)

PPT
Tips for fast weight loss
PDF
Resume letters
PDF
20151221134933 r&l
PDF
New Member Orientation Packet
DOCX
Writing Sample-U.S. Open Article
PDF
Final FaceView Mask Presentation
PDF
實用分析工具 Amplitude / 分析工具hub - Segment
PPTX
Marketing and promotion
PDF
20151218104332
DOC
Stephen Dudley, CV-2
PDF
Resume and letters of recommendations
Tips for fast weight loss
Resume letters
20151221134933 r&l
New Member Orientation Packet
Writing Sample-U.S. Open Article
Final FaceView Mask Presentation
實用分析工具 Amplitude / 分析工具hub - Segment
Marketing and promotion
20151218104332
Stephen Dudley, CV-2
Resume and letters of recommendations
Ad

Similar to Class queries (20)

PPTX
Есть ли жизнь с ORM или типовая архитектура CRUD приложения
PPTX
Система обработки бизнес-логики server-side приложения на Groovy
PDF
владивосток форум новости технологий 2015
PPTX
Введение в Oracle
PPTX
Katerina Simonova CSEDays
PPTX
Simonova CSEDays
PPTX
Katerina Simonova CSEDays
PPTX
физическая структура хранения артемов Ready
PPTX
Meeting #4. Frameworks.
PPT
Simonova sql server-enginetesting
PPTX
Построение собственного JS SDK — зачем и как?
PDF
Лекция Android. БД SQLite, ContentProvider, Loader
PPTX
ASP.NET, MVC, ASP.NET MVC
PDF
Подходы к сигнатурному статическому анализу
PDF
Как построить свой фреймворк для автотестов?
PDF
Регрессионное тестирование верстки
PDF
2016-01-16 02 Екатерина Боброва. Архитектура автоматизированных тестов
PPTX
Архитектура автоматизированных тестов: представление предметной области
PPT
лабораторная работа 2
PDF
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Есть ли жизнь с ORM или типовая архитектура CRUD приложения
Система обработки бизнес-логики server-side приложения на Groovy
владивосток форум новости технологий 2015
Введение в Oracle
Katerina Simonova CSEDays
Simonova CSEDays
Katerina Simonova CSEDays
физическая структура хранения артемов Ready
Meeting #4. Frameworks.
Simonova sql server-enginetesting
Построение собственного JS SDK — зачем и как?
Лекция Android. БД SQLite, ContentProvider, Loader
ASP.NET, MVC, ASP.NET MVC
Подходы к сигнатурному статическому анализу
Как построить свой фреймворк для автотестов?
Регрессионное тестирование верстки
2016-01-16 02 Екатерина Боброва. Архитектура автоматизированных тестов
Архитектура автоматизированных тестов: представление предметной области
лабораторная работа 2
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg

Class queries

  • 2. • Базовые запросы классов • Кастомные запросы классов План
  • 4. • Метод представления SELECT SQL запросов • Обрабатываются оптимизатором и компилятором SQL • В списке аргументов нужно перечислить список аргументов SQL запроса • Caché Studio предоставляет мастер создания запросов классов Что такое Базовые запросы классов • Абстракция SQL в COS коде • Упрощение чтения int кода • Упрощение работы с курсорами • Уменьшение времени компиляции • Документирование запросов Преимущества по сравнению с SQL
  • 5. Пример определения Базовые запросы классов Query ByName(name As %String = "") As %SQLQuery (ROWSPEC="ID:%Integer,Name:%String,DOB:%Date,SSN:%String") [ SqlProc ] { SELECT ID, Name, DOB, SSN FROM Sample.Person WHERE (Name %STARTSWITH :name) ORDER BY Name }
  • 6. • %SQL.Statement • SQL контекст Как использовать? Базовые запросы классов Set statement=##class(%SQL.Statement).%New() Set status=statement.%PrepareClassQuery("Sample.Person","ByName") Set resultset=statement.%Execute("A") While resultset.%Next() { Write !, resultset.%Get("Name") } Call Sample.SP_Sample_By_Name('A') Select * from Sample.SP_Sample_By_Name('A'')
  • 8. • Запрос, логику которого вы пишете сами Что такое Кастомные запросы классов • Сложная логика • Вы получаете доступ к данным через API, формат которого вас не устраивает • Данные хранятся в глобалах, без классов • Для доступа к данным необходима эскалация прав • Для доступа к данным необходимо запросить внешнее API • Для доступа к данным необходим доступ к файловой системе • Необходимы какие-то дополнительные операции перед выполнением самого запроса (установление соединения, проверка прав и т.д.) Зачем
  • 9. • queryName — похож на базовый запрос класса, предоставляет информацию • queryNameExecute — конструктор запроса • queryNameFetch — осуществляет получение следующего результата • queryNameClose — деструктор запроса Детали реализации и примеры - habrahabr.ru/company/intersystems/blog/270839 Как? Кастомные запросы классов
  • 10. • Обход глобала – Данные хранятся в глобалах, без классов – Нужно уменьшить количество обращений к глобалам – Результаты должны/могут быть отсортированы по ключу глобала • Статический SQL – Упрощение чтения int кода – Упрощение работы с курсорами – Уменьшение времени компиляции • Динамический SQL – Актуально для случаев, когда кроме собственно запроса, который представим в виде SQL, нужно производить какие-либо дополнительные действия Варианты Логика кастомного запроса
  • 12. • Просмотр логов Ensemble • Добавили поддержку областей • Работает на – 2013.1 – 2014.1 – 2015.1 – 2015.2 https://github.com/intersystems-ru/EnsLogViewer EnsLogViewer
  • 14. • Несколько более высокая скорость работы • Вся метаинформация берётся из определения класса, ROWSPEC не нужен • Соответствие принципам ООП Особенности %SQL.CustomResultSet

Editor's Notes

  • #3: Запросы классов InterSystems Caché — это полезный инструмент, используемый для абстракции от непосредственно SQL запросов в COS коде. В самом простом случае это выглядит так: допустим вы используете один и тот же SQL запрос в нескольких местах, но с разными аргументами. Для того, чтобы не писать его каждый раз, вы можете обозначить текст запроса как запрос класса и в дальнейшем обращаться к этому запросу по его имени. А ещё есть кастомные запросы, в которых логику получения следующей строки результатов вы пишете сами. Под катом я расскажу о том, как этим всем можно пользоваться.