Оперативная обработка транзакций (OLTP)
Оперативная обработка транзакций (OLTP) — это управление данными о транзакциях с помощью компьютерных систем. Системы OLTP записывают операции обмена данными в организации, выполняющиеся каждый день, и поддерживают запрашивание этих данных, чтобы на их основе делать выводы.
Транзакционные данные
Данные о транзакциях — это сведения, полученные в результате отслеживания взаимодействий, связанных с деятельностью организации. Как правило, это бизнес-транзакции, например полученные от клиентов платежи, отправленные поставщикам платежи, поступление продуктов на склад или их перемещение со склада, оформленные заказы или предоставленные услуги. События транзакций, которые сами по себе являются транзакциями, обычно содержат измерение времени, некоторые числовые значения и ссылки на другие данные.
Транзакции обычно должны быть атомарными и согласованными. Атомарность означает, что транзакция всегда полностью завершается успешно либо неудачно как одна элементарная операция и никогда не остается в состоянии частичной завершенности. Если не удается выполнить транзакцию, система базы данных должна откатить все шаги, которые уже выполнены в рамках этой транзакции. В традиционной системе управления реляционными базами данных (RDBMS) этот откат происходит автоматически, если транзакция не может быть завершена. Согласованность означает, что после выполнения транзакции данные всегда остаются в допустимом состоянии. (Это очень неофициальные описания атомарности и согласованности. Существуют более формальные определения этих свойств, таких как ACID.)
В транзакционных базах данных строгая согласованность транзакций может поддерживаться с помощью различных стратегий блокировки, например пессимистической блокировки. Это обеспечивает строгую согласованность всех данных в контексте предприятия для всех пользователей и процессов.
Уровень хранилища данных в трехуровневой архитектуре чаще всего используется для развертываний с использованием данных о транзакциях. Как правило, трехуровневая архитектура состоит из уровня представления, уровня бизнес-логики и уровня хранилища данных. Соответствующая архитектура развертывания — n-уровневая архитектура, в которой может быть несколько средних уровней для бизнес-логики.
Стандартные характеристики данных о транзакциях
Как правило, данные о транзакциях имеют следующие характеристики:
Требование | Description |
---|---|
нормализация | Высокая степень нормализации |
Схема | Схема при записи (строгое соблюдение) |
Согласованность | Строгая согласованность (гарантии ACID) |
Целостность | Высокая степень целостности данных |
Использование транзакций | Да |
Стратегия блокировки | Пессимистическая или оптимистическая |
Возможность обновления | Да |
Возможность добавления | Да |
Рабочая нагрузка | Большое число операций записи, среднее число операций чтения |
Индексирование | Первичный и вторичные индексы |
Размер данных | Небольшой и средний размер |
Модель | Реляционная |
Форма представления данных | табличный |
Гибкость запросов | Высокая гибкость |
Масштабировать | Небольшой (МБ) и большой (несколько ТБ) |
Когда следует использовать это решение:
Выбирайте OLTP, чтобы обеспечить эффективную обработку и хранение бизнес-транзакций, а также быстро и согласованно предоставлять доступ к ним для клиентских приложений. Используйте эту архитектуру, если любые ощутимые задержки при обработке отрицательно повлияют на повседневную работу организации.
Системы OLTP предназначены для эффективной обработки и хранения транзакций, а также для запрашивания данных о транзакциях. Эффективная обработка и хранение отдельных транзакций в системе OLTP частично достигается путем нормализации данных — разделения данных на более мелкие и менее избыточные блоки. Это обеспечивает эффективность, так как система OLTP может независимо обрабатывать большое число транзакций, и позволяет избежать дополнительной обработки, необходимой для поддержания целостности данных при наличии избыточных данных.
Сложности
При реализации и использовании системы OLTP могут возникнуть некоторые сложности:
Системы OLTP не всегда хорошо обрабатывают агрегаты по большим объемам данных, хотя существуют исключения, такие как хорошо запланированное решение на основе SQL Server. Анализ данных, которые основаны на статистических вычислениях более миллиона отдельных транзакций, является очень ресурсоемким для системы OLTP. Он может медленно выполняться и привести к снижению производительности из-за блокировки других транзакций в базе данных.
При проведении анализа и создании отчетов по данным с высокой степенью нормализации запросы, как правило, будут сложными, так как для большинства запросов требуется денормализовать данные с помощью соединений. Кроме того, соглашения об именовании для объектов базы данных в системах OLTP, как правило, являются неполными и сжатыми. Из-за высокой нормализации и неполного соглашения об именовании бизнес-пользователям трудно выполнять запросы в системах OLTP без помощи разработчика архитектуры данных или администратора базы данных.
Бессрочное хранение журналов транзакций и хранение большого количества данных в одной таблице могут снизить производительность запросов в зависимости от числа хранящихся транзакций. Распространенным решением является поддержание соответствующего периода времени (например, текущий финансовый год) в системе OLTP и перезапись данных журнала в другие системы, такие как киоск данных или хранилище данных.
OLTP в Azure
Как правило, такие приложения, как веб-сайты, размещенные в веб-приложениях службы приложений, REST API, запущенные в службе приложений, а также мобильные и классические приложения, взаимодействуют с системой OLTP через промежуточный интерфейс REST API.
На практике большинство рабочих нагрузок не являются чисто OLTP. Для них также требуется аналитический компонент. Кроме того, растет потребность в создании отчетов в режиме реального времени, например создание отчетов в операционной системе. Это также называется гибридной транзакционной или аналитической обработкой (HTAP) (гибридная транзакционная и аналитическая обработка). Дополнительные сведения см. в статье об оперативной аналитической обработке (OLAP).
Все следующие хранилища данных в Azure соответствуют основным требованиям к OLTP и управлению данными о транзакциях:
- База данных SQL Azure
- SQL Server на виртуальной машине Azure;
- База данных Azure для MySQL
- База данных Azure для PostgreSQL
Основные критерии выбора
Чтобы ограничить количество вариантов, сначала ответьте на следующие вопросы:
Вы хотите использовать управляемую службу, а не управлять собственными серверами?
Зависит ли ваше решение от совместимости с Microsoft SQL Server, MySQL или PostgreSQL? Количество вариантов для хранилищ данных может быть ограничено приложением из-за драйверов, поддерживаемых для взаимодействия с хранилищем данных, или на основе предположений касательно используемой базы данных.
Выдвигаются ли особенно высокие требования к пропускной способности операций записи? Если да, выберите вариант с поддержкой таблиц в памяти.
Является ли ваше решение мультитенантным? Если да, выберите варианты с поддержкой пулов емкости, где большое количество экземпляров баз данных подготавливаются на основе эластичного пула ресурсов, вместо фиксированных ресурсов на одну базу данных. Это позволит лучше распределить емкость для всех экземпляров базы данных и сделать ваше решение более экономичным.
Нужно ли обеспечить чтение данных с низкой задержкой в нескольких регионах? Если да, выберите вариант с поддержкой вторичных реплик, доступных для чтения.
Нужно ли обеспечить высокий уровень доступности баз данных в нескольких географических регионах? Если да, выберите вариант с поддержкой георепликации. Также рассмотрите варианты, которые поддерживают автоматический переход с первичной реплики на вторичную реплику.
Есть ли у вашей базы данных особые требования к безопасности? Если да, выберите варианты, которые предоставляют такие возможности, как безопасность на уровне строк, маскирование данных и прозрачное шифрование данных.
Матрица возможностей
В следующих таблицах перечислены основные различия в возможностях.
Общие возможности
Возможность | База данных SQL Azure | SQL Server на виртуальной машине Azure. | База данных Azure для MySQL | База данных Azure для PostgreSQL |
---|---|---|---|---|
Управляемая служба | Да | No | Да | Да |
Запуск на платформе | Н/П | Windows, Linux, Docker | Неприменимо | Неприменимо |
Программируемость 1 | T-SQL, .NET, R | T-SQL, .NET, R, Python | SQL | SQL, PL/pgSQL, PL/JavaScript (v8) |
[1] Без поддержки клиентского драйвера, что позволяет подключать различные языки программирования и использовать хранилище данных OLTP.
Масштабируемость
Возможность | База данных SQL Azure | SQL Server на виртуальной машине Azure. | База данных Azure для MySQL | База данных Azure для PostgreSQL |
---|---|---|---|---|
Максимальный размер экземпляра базы данных | 4 ТБ | 256 ТБ | 16 ТБ | 16 ТБ |
Поддержка пулов емкости | Да | Да | No | No |
Поддержка горизонтального увеличения масштаба кластеров | No | Да | No | No |
Динамическая масштабируемость (увеличение масштаба) | Да | No | Да | Да |
Возможности для поддержки аналитических рабочих нагрузок
Возможность | База данных SQL Azure | SQL Server на виртуальной машине Azure. | База данных Azure для MySQL | База данных Azure для PostgreSQL |
---|---|---|---|---|
Темпоральные таблицы | Да | Да | No | No |
Таблицы в памяти (оптимизированные для памяти) | Да | Да | No | No |
Поддержка columnstore | Да | Да | No | No |
Адаптивная обработка запросов | Да | Да | No | No |
Возможности доступности
Возможность | База данных SQL Azure | SQL Server на виртуальной машине Azure. | База данных Azure для MySQL | База данных Azure для PostgreSQL |
---|---|---|---|---|
Вторичные реплики, доступные для чтения | Да | Да | Да | Да |
Георепликация | Да | Да | Да | Да |
Автоматический переход на вторичный ресурс | Да | No | No | No |
Восстановление на определенный момент времени | Да | Да | Да | Да |
Возможности системы безопасности
Возможность | База данных SQL Azure | SQL Server на виртуальной машине Azure. | База данных Azure для MySQL | База данных Azure для PostgreSQL |
---|---|---|---|---|
Безопасность на уровне строк | Да | Да | Да | Да |
Маскирование данных | Да | Да | No | No |
Прозрачное шифрование данных | Да | Да | Да | Да |
Ограничение доступа для определенных IP-адресов | Да | Да | Да | Да |
Ограничение доступа для разрешения доступа только к виртуальной сети | Да | Да | Да | Да |
Проверка подлинности Microsoft Entra | Да | No | Да | Да |
Проверка подлинности Active Directory | No | Да | No | No |
Многофакторная проверка подлинности | Да | No | Да | Да |
Поддержка функции Always Encrypted | Да | Да | No | No |
Частный IP-адрес | No | Да | No | No |
Следующие шаги
- Введение в таблицы, оптимизированные для памяти
- Обзор и сценарии использования OLTP в памяти
- Оптимизация производительности с помощью технологий в памяти в База данных SQL Azure и Управляемый экземпляр SQL Azure
- Распределенные транзакции по облачным базам данных