SlideShare a Scribd company logo
Применение
Change Views InterBase XE7
для синхронизации данных
Кросс-платформенные инструменты для работы с БД
Андрей Совцов
Embarcadero,Москва
email: Andrew.sovtsov@embarcadero.com
Дмитрий Кузьменко
Embarcadero MVP,
Генеральный директор iBase.ru, Москва
email: kdv@ibase.ru
90 из Fortune 100 и 97% из
Global 2000
Темы
1. Отслеживание обновлений данных
2. Общая модель ChangeViews
3. Создание подписок
4. Активация подписок
5. Просмотр обновленных данных
6. Особенности использования
– В SQL
– В драйверах и компонентах
7. Как это устроено
8. Примеры применения
InterBase - Применение
• Длительная история использования – с 1985 года
Первый коммерческий сервер с
многоверсионностью
• Базы данных в среднем до 150 гигабайт
• база данных может иметь размер до 131 терабайт
• До 500 одновременных пользователей
• чаще является лимитом операционной системы
• Бухгалтерия, склад, системы денежных переводов,
биллинг, торговля, системы учета …
• Однопользовательские и многопользовательские
приложения
Главные достоинства
• Минимум требований к аппаратному
обеспечению
• Минимум требований к ОС – десктопная или
серверная
• Минимум администрирования
– Может работать годами без обслуживания
– Для больших баз с большим количеством
пользователей обслуживание требуется для
достижения максимальной производительности
• Идентичность БД для разных платформ
InterBase XE7 - платформы
• 64-bit
– Windows 7, 8, Server 2008, 2012
– Linux RHEL 6, 7 SuSE 11.3, Ubuntu 14
• 32-bit
– Windows 7, 8, Server 2008, 2012
– Linux RHEL 6, SuSE 11.3, Ubuntu 14
• OS X, Android, iOS
– InterBase XE3
– InterBase XE7 – Update 1, выпущен 6 марта 2015
http://cc.embarcadero.com/item/30155
http://www.youtube.com/watch?v=l5fu2HXERbE
Отслеживание обновлений данных
• Обычное перечитывание данных
• Методы отслеживания изменений:
 Сравнение двух результатов выборки
 Нужно хранить предыдущий результат (ClientDataSet)
 Модель с дополнительным столбцом
 Дополнительный столбец, обновляемый триггером, с
генератором, инкрементируемым при вставке и обновлени
 Select * where upd_field > x
 Репликация триггерами
 Дополнительные триггеры на все реплицируемые таблицы,
таблица лога
• InterBase XE7 – ChangeViews !
InterBase XE7 ChangeViews
Subscription
EMPLOYEE
SALES
…
Пользователь
Устройство 1
Устройство 2
update
insert
delete
Создание подписки
CREATE SUBSCRIPTION <subscription_name>
ON
<table_name>[(column_name_comma_list)]
[FOR ROW (CHANGE | {INSERT, UPDATE, DELETE})]
[, <table_name>[(column_name_comma_list)]
[FOR ROW (CHANGE | {INSERT, UPDATE, DELETE})] ...]
[DESCRIPTION user-description]
create subscripion EMPS on
EMPLOYEE
FOR ROW (INSERT, UPDATE, DELETE)
Работает только в ODS 16 (базах, созданных в InterBase XE7)
• FOR ROW (CHANGE)
– По умолчанию
• CHANGE = INSERT, UPDATE
• Если столбцы явно не указаны, то
отслеживаются изменения всех столбцов
Примеры
• CREATE SUBSCRIPTION sub_employee_changes
ON EMPLOYEE (EMP_NO, DEPT_NO, SALARY) DESCRIPTION 'Subscribe to
changes in EMPLOYEE table';
• CREATE SUBSCRIPTION sub_customer_deletes
ON CUSTOMER FOR ROW (DELETE)
DESCRIPTION 'Subscribe to deletes in CUSTOMER table';
• CREATE SUBSCRIPTION sub_various_changes
ON EMPLOYEE FOR ROW (INSERT, UPDATE, DELETE), CUSTOMER FOR ROW
(INSERT, UPDATE, DELETE),
SALES FOR ROW (UPDATE),
DEPARTMENT (LOCATION) FOR ROW (UPDATE)
DESCRIPTION 'Subscribe to various changes on multiple tables';
Удаление подписки
• DROP SUBSCRIPTION <subscription_name>
[RESTRICT | CASCADE];
• RESTRICT – не удалять, если есть
подписчики (по умолчанию)
• CASCADE – удалять все активации подписок
Выдача прав на подписку
• GRANT SUBSCRIBE ON SUBSCRIPTION
<subscription_name> TO <user_name>;
• REVOKE SUBSCRIBE ON SUBSCRIPTION
<subscription_name> FROM <user_name>;
Активация подписки
• start transaction
• select …
– Получаем обычные данные
• set subscription … active
• select …
– Получаем изменения, на которые подписались
• set subscription … inactive
• select
– Получаем обычные данные
• …
• commit – информация о просмотренных изменениях будет
удалена
• rollback – просмотренные изменения подписки не удаляются
Активация подписки
• SET SUBSCRIPTION [<subscription_name> [,
<subscription_name> ...]]
[AT <destination>] {ACTIVE | INACTIVE};
• SET SUBSCRIPTION sub_employee_changes,
sub_customer_deletes AT ‘smartphone_123‘ ACTIVE;
• ACTIVE – создает «подписчика» в rdb$subscriptions,
если его нет, и включает режим показа изменений
• INACTIVE – выключает режим показа изменений
• [AT <destination>]
• Место получения обновлений по подписке
• Изменения накапливаются для конкретного
пользователя и места получения изменений
по подписке
• start - active – commit, start - active – commit…
Накапливаемые изменения
Особенности
• Уровни изолированности
– Read Committed
– Snapshot (Repeatable Read)
• Unsuccessful execution caused by system error
that does not preclude successful execution of
subsequent statements.
Read committed transaction cannot retrieve from
a change view.
– Подписка работает только в транзакции SNAPSHOT
• Если в таблице, отслеживаемой по подписке,
ничего не изменялось с момента получения
последней подписки, то
вы получите пустой результат операции!
• Select * from employee
<no rows>
• При экспериментах помните, что snapshot-
транзакция не показывает никаких сторонних
изменений.
IBTransaction1.DefaultAction:=TARollback
Подписка не активна – обычные данные
Подписка активна – только измененные данные
Выборка конкретных изменений
• Select …
where <FIELD> IS [NOT] {CHANGED | INSERTED |
UPDATED | DELETED}
• select * from employee where last_name is
updated
• UPDATED – только тот столбец, который был
изменен
• INSERTED, DELETED – любой столбец
Inserts
Updates
Deletes
Поддержка ChangeViews в ISQL
• ISQL
• SHOW SUBSCRIPTIONS
• SHOW SUBSCRIPTION <name>
• SET CHANGES
• Включение показа изменений – добавляется
вывод дополнительного столбца <change> для
каждого столбца таблицы, где показывается
что было сделано со столбцом (same, update,
insert, delete)
Новое в InterBase API
• Если изменения были – то при активной подписке
вы получите измененные строки. Однако понять, в
каких столбцах и что произошло, можно только в
компонентах прямого доступа, анализируя
XSQLVAR.SQLIND
• SQLIND_INSERT 1
• SQLIND_UPDATE 2
• SQLIND_DELETE 4
• SQLIND_CHANGE 8
• SQLIND_CHANGE_VIEW 32
Поддержка в компонентах
• Пока нет
– Будет в FireDAC Delphi XE8
• Для определения изменений столбца нужен доступ к XSQLVAR.sqlind
– sqlind содержит битовые флаги признаков изменений (см. ibase.h)
– Это значит, что обработка возможна только в компонентах прямого
доступа – IBX, FireDAC, …
• IBX - TIBSQL.Current.Vars[i].SqlVar.sqlind^;
• SQIIND and SQLIND_CHANGE_VIEW
– Это результат выдачи change_view
• SQLIND and
(SQLIND_CHANGE_VIEW or SQLIND_INSERT)
– Это результат выдачи change_view, запись вставлена
• …
Как это устроено
• При активных подписках удерживаются версии, которые нужны для показа
изменений
• Commit «сбрасывает» метку последних изменений
• Отключение пользователей или принудительный sweep не убирают
отслеживаемые изменения
2 update или delete
• Накопление версий ухудшает
производительность
• Насколько давние подписки требуется
хранить?
– Контроль rdb$subscribers.rdb$check_out_timestamp,
«сброс» подписки –
delete from rdb$subscribers
where rdb$subscriber_name = 'SYSDBA' and
rdb$subscription_name = 'EMPS‘
and rdb$destination = 'work3‘
• Накопленные изменения не переживают
backup/restore
• Как это применять?
– Получить изменения, сохранить в локальную
БД или кэш
– rdb$subscribers.rdb$check_out_timestamp
дата-время, с которого накоплены изменения
для конкретного подписчика
Почитать
• docwiki.embarcadero.com/InterBase/XE7/en/
What's_New_in_InterBase_XE7#Change_Views_Feature
• delphiaball.co.uk/2015/02/06/interbase-change-views-part-1/
• delphiaball.co.uk/2015/02/06/interbase-change-views-part-2-creating-change-view/
• delphiaball.co.uk/2015/02/07/using-interbase-change-views/
• delphiaball.co.uk/2015/03/06/interbase-change-views-example-demo-skill-sprint/
• delphiaball.co.uk/2015/03/11/interbase-xe7-update-1-released/
Проще, быстрее давать
качественный код
Гибкие средства создания и отладки для SQL-профессионалов
Предназначен для
•Разработчиков баз данных
•Бизнес-аналитики/отв.за данные
Преимущества
•Позволяет создавать быстрее качественный
SQL для разных платформ СУБД
•Поддержка всех платформ СУБД
•ISQL
•Visual Query Builder – мастер создания SQL
•Средства анализа кода (Code Analyst)
•Отладчик SQL
•Бесшовная интеграция с ведущими
коммерческими системами контроля
версий
Проблемы разработчиков БД
Расширение экосистемы
баз данных Качество кода
Циклы гибкой (Agile)
разработки
“Я использовал Rapid SQL для решения многих проблем на
разных платформах, и он всегда превосходил мои ожидания.
…Rapid SQL упрощает процесс написания серверного кода БД,
позволяя добиться лучшей производительности БД и с
легкостью выпускать высококачественные приложения,
работающие с БД.”
-Atos Origin, ведущая международная ИТ сервис-компания
Синхронизация схем и данных для разных сред баз данных
Синхронизация
баз данных
Отслеживание
изменений в БД
Пригодность к
аудиту БД и
контролю
соответствия
Быстрое внесение изменений в БД
•Создает скрипты изменений для
синхронизации выбранных объектов или
возврату в последнее состояние
•Полные знания по всем платформам СУБД
Обнаружить, отследить, учесть
•Сравнивает и синхронизирует данные
как в рамках одной, так и в разных БД
•Документирует важнейшие настройки
БД
Соответствие принятым
стандартам
•Архивы схем и настроек станут основой для
аудита и подтверждения соответствия
•Маскирование имперсонифицирует данные
Предназначен для Администраторов БД (DBA), Разработчиков БД
Уменьшение рисков при изменениях
DB Change Manager - данные
Сравнивает или
синхронизирует данные
таблиц БД
Сравнивает схемы, обеспечивает
сопоставление объектов,
маскирование данных
Полезные ссылки
• Описание
docwiki.embarcadero.com/InterBase/XE7/en/
What's_New_in_InterBase_XE7#Change_Views_Feature
• Interbase на сайте Embarcadero
http://www.embarcadero.com/ru/products/interbase
• InterBase Database: InterBase Labs и Tutorials
http://www.embarcadero.com/ru/products/interbase-labs
• Примеры использования
Newmont Mining, Protective Life, Catalina Marketing, Entrust, Microsoft:
http://www.embarcadero.com/our-customers/case-studies
• Поддержка
http://www.embarcadero.com/support
• Представительство
mailto: Russia.Info@embarcadero.com
Телефон: +7(495)7084393
В социальных сетях
Facebook: http://on.fb.me/WDUQqY
LinkedIn: http://linkd.in/WDVeWu
Google+: http://bit.ly/WDVViL
Спасибо за внимание!
Powering Today’s Applications and Data
Андрей Совцов
Embarcadero
Email: Andrew.Sovtsov@Embarcadero.com
Blog: http://embt.co/ASovtsov
Tel: +7(495)708 4393
Записи вебинаров: http://embt.co/MrAndySova
Блоги Embarcadero
(все языки):
http://community.embarcadero.com/index.php/blogs
+7(495) 953-13-34,
sales@ibase.ru, support@ibase.ru
Кузьменко Дмитрий
iBase.ru
Генеральный директор
IT-эксперт
Вопросы?

More Related Content

Viewers also liked

20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
Andrew Sovtsov
 
20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS) 20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS)
Andrew Sovtsov
 
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
Andrew Sovtsov
 
DBArtisan 2016 это не просто face lifting!
DBArtisan 2016 это не просто face lifting!DBArtisan 2016 это не просто face lifting!
DBArtisan 2016 это не просто face lifting!
Andrew Sovtsov
 
Embarcadero Team Server для администраторов БД
Embarcadero Team Server для администраторов БДEmbarcadero Team Server для администраторов БД
Embarcadero Team Server для администраторов БД
Andrew Sovtsov
 
20160309 Простейший контрольный список на мобильном устройстве
20160309 Простейший контрольный список на мобильном устройстве20160309 Простейший контрольный список на мобильном устройстве
20160309 Простейший контрольный список на мобильном устройстве
Andrew Sovtsov
 
20160323 Пример бизнес-приложения контроля качества в розничной торговле
20160323 Пример бизнес-приложения контроля качества в розничной торговле20160323 Пример бизнес-приложения контроля качества в розничной торговле
20160323 Пример бизнес-приложения контроля качества в розничной торговле
Andrew Sovtsov
 
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах EmbarcaderoПоддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Andrew Sovtsov
 
20151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 201620151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 2016
Andrew Sovtsov
 
20160330 Занятие 6. Серия практических занятий "Чеклист"
20160330 Занятие 6. Серия практических занятий "Чеклист"  20160330 Занятие 6. Серия практических занятий "Чеклист"
20160330 Занятие 6. Серия практических занятий "Чеклист"
Andrew Sovtsov
 
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
Andrew Sovtsov
 
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБДКак использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Andrew Sovtsov
 
2015/06/18 Как работать с InterBase Change Views в Delphi программах
2015/06/18 Как работать с InterBase Change Views в Delphi программах 2015/06/18 Как работать с InterBase Change Views в Delphi программах
2015/06/18 Как работать с InterBase Change Views в Delphi программах
Andrew Sovtsov
 
Управление метаданными графических файлов на примере VCL приложения Windows
Управление метаданными графических файлов на примере VCL приложения WindowsУправление метаданными графических файлов на примере VCL приложения Windows
Управление метаданными графических файлов на примере VCL приложения Windows
Andrew Sovtsov
 
Interbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios androidInterbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios android
Andrew Sovtsov
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БД
Andrew Sovtsov
 
RAD Server для разработки современных корпоративных систем
RAD Server для разработки современных корпоративных системRAD Server для разработки современных корпоративных систем
RAD Server для разработки современных корпоративных систем
Andrew Sovtsov
 

Viewers also liked (17)

20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
 
20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS) 20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS)
 
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
 
DBArtisan 2016 это не просто face lifting!
DBArtisan 2016 это не просто face lifting!DBArtisan 2016 это не просто face lifting!
DBArtisan 2016 это не просто face lifting!
 
Embarcadero Team Server для администраторов БД
Embarcadero Team Server для администраторов БДEmbarcadero Team Server для администраторов БД
Embarcadero Team Server для администраторов БД
 
20160309 Простейший контрольный список на мобильном устройстве
20160309 Простейший контрольный список на мобильном устройстве20160309 Простейший контрольный список на мобильном устройстве
20160309 Простейший контрольный список на мобильном устройстве
 
20160323 Пример бизнес-приложения контроля качества в розничной торговле
20160323 Пример бизнес-приложения контроля качества в розничной торговле20160323 Пример бизнес-приложения контроля качества в розничной торговле
20160323 Пример бизнес-приложения контроля качества в розничной торговле
 
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах EmbarcaderoПоддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
 
20151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 201620151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 2016
 
20160330 Занятие 6. Серия практических занятий "Чеклист"
20160330 Занятие 6. Серия практических занятий "Чеклист"  20160330 Занятие 6. Серия практических занятий "Чеклист"
20160330 Занятие 6. Серия практических занятий "Чеклист"
 
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
 
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБДКак использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
 
2015/06/18 Как работать с InterBase Change Views в Delphi программах
2015/06/18 Как работать с InterBase Change Views в Delphi программах 2015/06/18 Как работать с InterBase Change Views в Delphi программах
2015/06/18 Как работать с InterBase Change Views в Delphi программах
 
Управление метаданными графических файлов на примере VCL приложения Windows
Управление метаданными графических файлов на примере VCL приложения WindowsУправление метаданными графических файлов на примере VCL приложения Windows
Управление метаданными графических файлов на примере VCL приложения Windows
 
Interbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios androidInterbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios android
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БД
 
RAD Server для разработки современных корпоративных систем
RAD Server для разработки современных корпоративных системRAD Server для разработки современных корпоративных систем
RAD Server для разработки современных корпоративных систем
 

Similar to InterBase XE7: Применение Change Views для синхронизации данных

6. InterBase 2017 (Дмитрий Кузьменко)
6. InterBase 2017 (Дмитрий Кузьменко)6. InterBase 2017 (Дмитрий Кузьменко)
6. InterBase 2017 (Дмитрий Кузьменко)
sandy97
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Tanya Denisyuk
 
"Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7""Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7"
Badoo Development
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьТо, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
php-user-group-minsk
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...Ontico
 
0044
00440044
0044JIuc
 
Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0
Alexey Kovyazin
 
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest
 
My sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugMy sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmug
Andrey Tokarchuk
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Sveta Smirnova
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 То, что вы хотели знать о HandlerSocket, но не смогли нагуглить То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Sergey Xek
 
MySQL 8.0
MySQL 8.0MySQL 8.0
MySQL 8.0
Vittorio Cioe
 
лабораторная работа 8
лабораторная работа 8лабораторная работа 8
лабораторная работа 8student_kai
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)
AvitoTech
 
MySQL Optimization. Russian
MySQL Optimization. RussianMySQL Optimization. Russian
MySQL Optimization. Russian
Rawan Qurmet
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Badoo Development
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиAndrey Akulov
 
0039
00390039
0039JIuc
 
Транзакции и блокировки в MySql. Теория и практика
Транзакции и блокировки в MySql. Теория и практикаТранзакции и блокировки в MySql. Теория и практика
Транзакции и блокировки в MySql. Теория и практикаNikolay Gondin
 
Мультитенанстность в Exchange
Мультитенанстность в ExchangeМультитенанстность в Exchange
Мультитенанстность в Exchange
UC2
 

Similar to InterBase XE7: Применение Change Views для синхронизации данных (20)

6. InterBase 2017 (Дмитрий Кузьменко)
6. InterBase 2017 (Дмитрий Кузьменко)6. InterBase 2017 (Дмитрий Кузьменко)
6. InterBase 2017 (Дмитрий Кузьменко)
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
"Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7""Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7"
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьТо, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
 
0044
00440044
0044
 
Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0
 
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
 
My sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugMy sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmug
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 То, что вы хотели знать о HandlerSocket, но не смогли нагуглить То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
MySQL 8.0
MySQL 8.0MySQL 8.0
MySQL 8.0
 
лабораторная работа 8
лабораторная работа 8лабораторная работа 8
лабораторная работа 8
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)
 
MySQL Optimization. Russian
MySQL Optimization. RussianMySQL Optimization. Russian
MySQL Optimization. Russian
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памяти
 
0039
00390039
0039
 
Транзакции и блокировки в MySql. Теория и практика
Транзакции и блокировки в MySql. Теория и практикаТранзакции и блокировки в MySql. Теория и практика
Транзакции и блокировки в MySql. Теория и практика
 
Мультитенанстность в Exchange
Мультитенанстность в ExchangeМультитенанстность в Exchange
Мультитенанстность в Exchange
 

InterBase XE7: Применение Change Views для синхронизации данных

  • 1. Применение Change Views InterBase XE7 для синхронизации данных Кросс-платформенные инструменты для работы с БД Андрей Совцов Embarcadero,Москва email: Andrew.sovtsov@embarcadero.com Дмитрий Кузьменко Embarcadero MVP, Генеральный директор iBase.ru, Москва email: kdv@ibase.ru
  • 2. 90 из Fortune 100 и 97% из Global 2000
  • 3. Темы 1. Отслеживание обновлений данных 2. Общая модель ChangeViews 3. Создание подписок 4. Активация подписок 5. Просмотр обновленных данных 6. Особенности использования – В SQL – В драйверах и компонентах 7. Как это устроено 8. Примеры применения
  • 4. InterBase - Применение • Длительная история использования – с 1985 года Первый коммерческий сервер с многоверсионностью • Базы данных в среднем до 150 гигабайт • база данных может иметь размер до 131 терабайт • До 500 одновременных пользователей • чаще является лимитом операционной системы • Бухгалтерия, склад, системы денежных переводов, биллинг, торговля, системы учета … • Однопользовательские и многопользовательские приложения
  • 5. Главные достоинства • Минимум требований к аппаратному обеспечению • Минимум требований к ОС – десктопная или серверная • Минимум администрирования – Может работать годами без обслуживания – Для больших баз с большим количеством пользователей обслуживание требуется для достижения максимальной производительности • Идентичность БД для разных платформ
  • 6. InterBase XE7 - платформы • 64-bit – Windows 7, 8, Server 2008, 2012 – Linux RHEL 6, 7 SuSE 11.3, Ubuntu 14 • 32-bit – Windows 7, 8, Server 2008, 2012 – Linux RHEL 6, SuSE 11.3, Ubuntu 14 • OS X, Android, iOS – InterBase XE3 – InterBase XE7 – Update 1, выпущен 6 марта 2015 http://cc.embarcadero.com/item/30155 http://www.youtube.com/watch?v=l5fu2HXERbE
  • 7. Отслеживание обновлений данных • Обычное перечитывание данных • Методы отслеживания изменений:  Сравнение двух результатов выборки  Нужно хранить предыдущий результат (ClientDataSet)  Модель с дополнительным столбцом  Дополнительный столбец, обновляемый триггером, с генератором, инкрементируемым при вставке и обновлени  Select * where upd_field > x  Репликация триггерами  Дополнительные триггеры на все реплицируемые таблицы, таблица лога • InterBase XE7 – ChangeViews !
  • 9. Создание подписки CREATE SUBSCRIPTION <subscription_name> ON <table_name>[(column_name_comma_list)] [FOR ROW (CHANGE | {INSERT, UPDATE, DELETE})] [, <table_name>[(column_name_comma_list)] [FOR ROW (CHANGE | {INSERT, UPDATE, DELETE})] ...] [DESCRIPTION user-description] create subscripion EMPS on EMPLOYEE FOR ROW (INSERT, UPDATE, DELETE) Работает только в ODS 16 (базах, созданных в InterBase XE7)
  • 10. • FOR ROW (CHANGE) – По умолчанию • CHANGE = INSERT, UPDATE • Если столбцы явно не указаны, то отслеживаются изменения всех столбцов
  • 11. Примеры • CREATE SUBSCRIPTION sub_employee_changes ON EMPLOYEE (EMP_NO, DEPT_NO, SALARY) DESCRIPTION 'Subscribe to changes in EMPLOYEE table'; • CREATE SUBSCRIPTION sub_customer_deletes ON CUSTOMER FOR ROW (DELETE) DESCRIPTION 'Subscribe to deletes in CUSTOMER table'; • CREATE SUBSCRIPTION sub_various_changes ON EMPLOYEE FOR ROW (INSERT, UPDATE, DELETE), CUSTOMER FOR ROW (INSERT, UPDATE, DELETE), SALES FOR ROW (UPDATE), DEPARTMENT (LOCATION) FOR ROW (UPDATE) DESCRIPTION 'Subscribe to various changes on multiple tables';
  • 12. Удаление подписки • DROP SUBSCRIPTION <subscription_name> [RESTRICT | CASCADE]; • RESTRICT – не удалять, если есть подписчики (по умолчанию) • CASCADE – удалять все активации подписок
  • 13. Выдача прав на подписку • GRANT SUBSCRIBE ON SUBSCRIPTION <subscription_name> TO <user_name>; • REVOKE SUBSCRIBE ON SUBSCRIPTION <subscription_name> FROM <user_name>;
  • 14. Активация подписки • start transaction • select … – Получаем обычные данные • set subscription … active • select … – Получаем изменения, на которые подписались • set subscription … inactive • select – Получаем обычные данные • … • commit – информация о просмотренных изменениях будет удалена • rollback – просмотренные изменения подписки не удаляются
  • 15. Активация подписки • SET SUBSCRIPTION [<subscription_name> [, <subscription_name> ...]] [AT <destination>] {ACTIVE | INACTIVE}; • SET SUBSCRIPTION sub_employee_changes, sub_customer_deletes AT ‘smartphone_123‘ ACTIVE; • ACTIVE – создает «подписчика» в rdb$subscriptions, если его нет, и включает режим показа изменений • INACTIVE – выключает режим показа изменений
  • 16. • [AT <destination>] • Место получения обновлений по подписке • Изменения накапливаются для конкретного пользователя и места получения изменений по подписке • start - active – commit, start - active – commit… Накапливаемые изменения
  • 17. Особенности • Уровни изолированности – Read Committed – Snapshot (Repeatable Read) • Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. Read committed transaction cannot retrieve from a change view. – Подписка работает только в транзакции SNAPSHOT
  • 18. • Если в таблице, отслеживаемой по подписке, ничего не изменялось с момента получения последней подписки, то вы получите пустой результат операции! • Select * from employee <no rows> • При экспериментах помните, что snapshot- транзакция не показывает никаких сторонних изменений.
  • 20.
  • 21. Подписка не активна – обычные данные
  • 22. Подписка активна – только измененные данные
  • 23. Выборка конкретных изменений • Select … where <FIELD> IS [NOT] {CHANGED | INSERTED | UPDATED | DELETED} • select * from employee where last_name is updated • UPDATED – только тот столбец, который был изменен • INSERTED, DELETED – любой столбец
  • 24.
  • 28. Поддержка ChangeViews в ISQL • ISQL • SHOW SUBSCRIPTIONS • SHOW SUBSCRIPTION <name> • SET CHANGES • Включение показа изменений – добавляется вывод дополнительного столбца <change> для каждого столбца таблицы, где показывается что было сделано со столбцом (same, update, insert, delete)
  • 29.
  • 30. Новое в InterBase API • Если изменения были – то при активной подписке вы получите измененные строки. Однако понять, в каких столбцах и что произошло, можно только в компонентах прямого доступа, анализируя XSQLVAR.SQLIND • SQLIND_INSERT 1 • SQLIND_UPDATE 2 • SQLIND_DELETE 4 • SQLIND_CHANGE 8 • SQLIND_CHANGE_VIEW 32
  • 31. Поддержка в компонентах • Пока нет – Будет в FireDAC Delphi XE8 • Для определения изменений столбца нужен доступ к XSQLVAR.sqlind – sqlind содержит битовые флаги признаков изменений (см. ibase.h) – Это значит, что обработка возможна только в компонентах прямого доступа – IBX, FireDAC, … • IBX - TIBSQL.Current.Vars[i].SqlVar.sqlind^; • SQIIND and SQLIND_CHANGE_VIEW – Это результат выдачи change_view • SQLIND and (SQLIND_CHANGE_VIEW or SQLIND_INSERT) – Это результат выдачи change_view, запись вставлена • …
  • 32. Как это устроено • При активных подписках удерживаются версии, которые нужны для показа изменений • Commit «сбрасывает» метку последних изменений • Отключение пользователей или принудительный sweep не убирают отслеживаемые изменения 2 update или delete
  • 33. • Накопление версий ухудшает производительность • Насколько давние подписки требуется хранить? – Контроль rdb$subscribers.rdb$check_out_timestamp, «сброс» подписки – delete from rdb$subscribers where rdb$subscriber_name = 'SYSDBA' and rdb$subscription_name = 'EMPS‘ and rdb$destination = 'work3‘ • Накопленные изменения не переживают backup/restore
  • 34. • Как это применять? – Получить изменения, сохранить в локальную БД или кэш – rdb$subscribers.rdb$check_out_timestamp дата-время, с которого накоплены изменения для конкретного подписчика
  • 35. Почитать • docwiki.embarcadero.com/InterBase/XE7/en/ What's_New_in_InterBase_XE7#Change_Views_Feature • delphiaball.co.uk/2015/02/06/interbase-change-views-part-1/ • delphiaball.co.uk/2015/02/06/interbase-change-views-part-2-creating-change-view/ • delphiaball.co.uk/2015/02/07/using-interbase-change-views/ • delphiaball.co.uk/2015/03/06/interbase-change-views-example-demo-skill-sprint/ • delphiaball.co.uk/2015/03/11/interbase-xe7-update-1-released/
  • 36. Проще, быстрее давать качественный код Гибкие средства создания и отладки для SQL-профессионалов Предназначен для •Разработчиков баз данных •Бизнес-аналитики/отв.за данные Преимущества •Позволяет создавать быстрее качественный SQL для разных платформ СУБД •Поддержка всех платформ СУБД •ISQL •Visual Query Builder – мастер создания SQL •Средства анализа кода (Code Analyst) •Отладчик SQL •Бесшовная интеграция с ведущими коммерческими системами контроля версий Проблемы разработчиков БД Расширение экосистемы баз данных Качество кода Циклы гибкой (Agile) разработки “Я использовал Rapid SQL для решения многих проблем на разных платформах, и он всегда превосходил мои ожидания. …Rapid SQL упрощает процесс написания серверного кода БД, позволяя добиться лучшей производительности БД и с легкостью выпускать высококачественные приложения, работающие с БД.” -Atos Origin, ведущая международная ИТ сервис-компания
  • 37. Синхронизация схем и данных для разных сред баз данных Синхронизация баз данных Отслеживание изменений в БД Пригодность к аудиту БД и контролю соответствия Быстрое внесение изменений в БД •Создает скрипты изменений для синхронизации выбранных объектов или возврату в последнее состояние •Полные знания по всем платформам СУБД Обнаружить, отследить, учесть •Сравнивает и синхронизирует данные как в рамках одной, так и в разных БД •Документирует важнейшие настройки БД Соответствие принятым стандартам •Архивы схем и настроек станут основой для аудита и подтверждения соответствия •Маскирование имперсонифицирует данные Предназначен для Администраторов БД (DBA), Разработчиков БД Уменьшение рисков при изменениях
  • 38. DB Change Manager - данные Сравнивает или синхронизирует данные таблиц БД Сравнивает схемы, обеспечивает сопоставление объектов, маскирование данных
  • 39. Полезные ссылки • Описание docwiki.embarcadero.com/InterBase/XE7/en/ What's_New_in_InterBase_XE7#Change_Views_Feature • Interbase на сайте Embarcadero http://www.embarcadero.com/ru/products/interbase • InterBase Database: InterBase Labs и Tutorials http://www.embarcadero.com/ru/products/interbase-labs • Примеры использования Newmont Mining, Protective Life, Catalina Marketing, Entrust, Microsoft: http://www.embarcadero.com/our-customers/case-studies • Поддержка http://www.embarcadero.com/support • Представительство mailto: Russia.Info@embarcadero.com Телефон: +7(495)7084393 В социальных сетях Facebook: http://on.fb.me/WDUQqY LinkedIn: http://linkd.in/WDVeWu Google+: http://bit.ly/WDVViL
  • 40. Спасибо за внимание! Powering Today’s Applications and Data Андрей Совцов Embarcadero Email: Andrew.Sovtsov@Embarcadero.com Blog: http://embt.co/ASovtsov Tel: +7(495)708 4393 Записи вебинаров: http://embt.co/MrAndySova Блоги Embarcadero (все языки): http://community.embarcadero.com/index.php/blogs +7(495) 953-13-34, sales@ibase.ru, support@ibase.ru Кузьменко Дмитрий iBase.ru Генеральный директор IT-эксперт