Oracle и обработка транзакций OLTP • В 1970- 1980-е прогресс в области больших ЭВМ (mainframe) обеспечивался пакетной автоматизацией основных бизнес-процессов, например бухгалтерского учета и начисления зарплаты. Но с постепенным внедрением транзакций наметился переход от пакетной обработки к интерактивному взаимодействию пользователей с системой. Так появились на свет системы оперативной обработки транзакций (online transaction processing, OLTP). Транзакция • Транзакцией называется логическая единица работы, которая должна быть выполнена полностью или не выполнена вовсе. Любая транзакция обычно состоит из одной или нескольких команд языка манипулирования данными (DML), таких как INSERT, UPDATE, DELETE, и завершается либо командой COMMIT, делающей изменения постоянными, либо командой ROLLBACK, отменяющей изменения. Транзакция должна обладать следующими свойствами: • Атомарность (Atomic) Транзакция выполняется или не выполняется как единое, неделимое целое. • Непротиворечивость (Consistent) Завершенная транзакция оставляет измененные данные в непротиворечивом корректном состоянии. • Изолированность (Isolated) Любая транзакция выполняется изолированно и не оказывает влияния на состояние других транзакций. • Долговечность (Durable) Изменения, произведенные зафиксированной транзакцией, постоянны. Общие характеристики OLTP • Плотный поток транзакций и большое количество пользователей Во многих компаниях OLTP-системы - основа повседневной работы, поэтому нагрузка на них и количество пользователей больше, чем у любой другой используемой в организации системы. Общие характеристики OLTP • Требования к производительности Во многих компаниях OLTP-системы - основа повседневной работы, поэтому нагрузка на них и количество пользователей больше, чем у любой другой используемой в организации системы. Общие характеристики OLTP • Высокая надежность Как правило, такие системы считаются ответственными для работы предприятия (mission-critical), простой которых обходится весьма дорого. Общие характеристики OLTP • Масштабируемость Способность к наращиванию потока транзакций без существенного снижения производительности позволяет OLTPсистемам переносить колебания активности пользователей. Общие средства обеспечения конкурентного доступа и производительности Нерасширяемая блокировка на уровне строк • Oracle блокирует только те строки, с которыми работает транзакция, и никогда не расширяет блокировку до уровня страницы или таблицы. В некоторых СУБД блокировка расширяется со строки на страницу, когда внутри страницы заблокировано достаточно много строк. Это приводит к неоправданным конфликтам, если пользователю нужны строки, которые больше никем не используются, но тем не менее недоступны из-за того, что содержащая их страница заблокирована. Многоверсионная согласованность по чтению • Oracle обеспечивает согласованность данных на уровне одной команды или целой транзакции, не ставя блокировок чтения. • Гарантируется, что запрос увидит только данные, зафиксированные на момент начала запроса. Изменения, произведенные транзакциями, которые еще не завершились в момент начала запроса, невидимы. Эффект транзакций, запущенных после начала запроса и зафиксированных до его окончания, также не виден в запросе. Для получения данных в том виде, в котором они существовали на момент начала запроса, Oracle пользуется сегментами отката. Разделяемые SQL-команды • Разбор SQL-команд отнимает довольно много процессорного времени. Oracle кэширует разобранные и оптимизированные команды в специальной области внутри разделяемого пула. Если другой пользователь захочет выполнить уже кэшированную команду, то издержек на разбор и оптимизацию не будет. Однако повторно могут быть использованы только абсолютно идентичные команды - любые различия в количестве пробелов, символов новой строки или в регистре букв существенны. Для OLTP-систем характерно большое количество пользователей, работающих с одним и тем же приложением. Это идеальная ситуация для повторного использования разделяемых SQL-команд. Хранимые схемы планов выполнения • В версии Oracle8i появилась поддержка устойчивых планов выполнения, которые иногда называют связанными планами (bound plans). Способ выполнения SQL-команды критически важен для производительности. После того как разработчик или администратор базы данных добился оптимальной эффективности некоторой команды, он может заставить оптимизатор Oracle применять тот же самый план вне зависимости от изменений в окружении. Технология Real Application Clusters • Поддерживает работу одной базы данных на кластере серверов, обеспечивая тем самым высокую отказоустойчивость, высокую производительность и масштабируемость без необходимости внесения изменений в приложение. • Позволяет нескольким машинам обращаться к одним и тем же файлам базы данных, расположенным на общем диске. RAC в полной мере поддерживает технологию Cache Fusion, идея которой в том, чтобы сделать данные, хранящиеся в кэше на одной машине, доступными всем остальным машинам в кластере. Если какой-то машине понадобился блок, который используется в данный момент другой машиной либо просто находится в кэше другой машины, то этот блок напрямую передается запрашивающему узлу, обычно по высокоскоростной шине. Обеспечение надежности Резервная база данных Oracle может обеспечить резервирование, поддерживая копию основной базы данных на другой машине - обычно в другом узле. Журналы с основного сервера транспортируются на резервный и там применяются, чтобы продублировать все произведенные в основной базе изменения. B Oracle8i реализованы механизм автоматической транспортировки журналов на резервный узел и возможность открывать резервную базу в режиме чтения для генерации отчетов. В версии Oracle9i появилось понятие логической резервной базы данных (logical standby). В этом случае изменения передаются в виде SQL-команд, а не журналов, что позволяет использовать резервную базу и для других целей. Прозрачное восстановление приложений при отказе (Transparent Application Failover, TAF) TAF - это программный интерфейс, позволяющий автоматически присоединить сеанс пользователя к другому экземпляру Oracle, если обслуживающий его экземпляр вышел из строя. Все запросы, которые в этот момент обрабатывались, возобновляются с последней извлеченной строки. Опция Oracle Streams /Advanced Queuing (AQ) • Опция AQ в подсистеме Oracle Streams предоставляет способ асинхронной, или отложенной, межсистемной коммуникации, что позволяет разным системам работать более независимо. Уход от зависимостей между системами позволяет избежать «каскадных» сбоев, то есть одна из взаимосвязанных систем может продолжать работу, даже если другая вышла из строя. Репликация посредством Oracle Streams Для повышения избыточности можно воспользоваться встроенным механизмом репликации Oracle. Произведенные транзакциями изменения можно синхронно или асинхронно реплицировать в другие базы. Если основная база данных откажет, то данные можно будет получить из других баз. Real Application Clusters (RAC) • RAC не только позволяет нескольким экземплярам обращаться к одной и той же базе, но и обеспечивает высочайший уровень надежности, защищая систему от последствий сбоя любого узла кластера. Если какой-то узел вышел из строя, остальные продолжают предоставлять доступ к базе. Технология публикации/подписки в Oracle В Oracle8i технология Advanced Queuing была дополнена механизмом публикации/подписки (publish-subscribe). Приложение может подписаться на очередь сообщений и указать атрибуты тех сообщений, в получении которых оно заинтересовано. Когда другое приложение публикует сообщение, помещая его в эту очередь, Oracle просматривает содержимое сообщения, выясняет, какие приложения в нем заинтересованы, и посылает им извещения. Например, приложение по отгрузке продукции может подписаться на очередь заказов, указав, что интерес для него представляют только сообщения о заказах в состоянии «Готов к отгрузке». И только такие сообщения оно и будет получать. Хранилища данных и средства бизнесанализа в Oracle Кроме сбора и хранения данных СУБД предоставляют средства бизнес-анализа, которые применяются для стратегического и тактического управления корпорацией или государственным учреждением. Это может быть формирование сводных показателей, выявление трендов и взаимосвязей между данными, прогнозирование. Хранилища данных Для проведения анализа данных «на лету» с помощью OLTP-баз потребовалось бы столько ресурсов, что своевременная обработка транзакций стала бы невозможной. При выполнении подобных незапланированных запросов часто применяются встроенные аналитические функции СУБД, потребляющие очень много вычислительных ресурсов. Хранилище данных • Хранилище данных (англ. Data Warehouse) — предметно-ориентированная информационная база данных, специально разработанная и предназначенная для подготовки отчётов и бизнес-анализа с целью поддержки принятия решений в организации. Данные, поступающие в хранилище данных, как правило, доступны только для чтения. Данные из OLTP-системы копируются в хранилище данных таким образом, чтобы построение отчётов и OLAP-анализ не использовал ресурсы транзакционной системы и не нарушал её стабильность. Как правило, данные загружаются в хранилище с определённой периодичностью, поэтому актуальность данных может несколько отставать от OLTP-системы.