Введение
Экранирование является важной техникой, используемой в технических средствах информации для защиты данных от несанкционированного доступа и использования. В современном мире, где информация является ценным активом, обеспечение безопасности данных имеет решающее значение для защиты интересов организаций и частных лиц.
Экранирование направлено на предотвращение доступа к информации, которая не предназначена для просмотра или использования определенными лицами. Это может быть достигнуто путем применения различных методов, таких как шифрование, доступ к данным на основе ролей, ограничения доступа к данным и т.д.
Проблема несовместимости
Основная проблема, с которой сталкиваются системы ТСИ, заключается в том, что две транзакции могут одновременно читать и изменять одни и те же данные, приводя к неожидаемым результатам. Например, две транзакции могут одновременно читать значение переменной, а затем каждая из них может ее изменить. В результате, изменения одной транзакции могут быть потеряны.
Экранирование
Экранирование - это техника, используемая для предотвращения таких ситуаций. Существует два основных подхода к экранированию:
Предотвращающее экранирование (Preventive shielding): Этот подход пытается предотвратить возникновение конфликтов между транзакциями. Он основывается на правилах, которые ограничивают доступ транзакций к данным, чтобы гарантировать, что они не могут конфликтовать.
Исправляющее экранирование (Compensating shielding): Этот подход позволяет транзакциям конфликтовать, но затем исправляет любые возникшие проблемы. Он использует компенсирующие транзакции, которые отменяют изменения, сделанные транзакцией, если они приводят к конфликту.
Примеры экранирования
Рассмотрим примеры обоих подходов:
Предотвращающее экранирование: Предположим, у нас есть банковский счет, и две транзакции хотят снять с него деньги. Вместо того, чтобы позволить им одновременно снять деньги, мы можем установить правило, согласно которому только одна транзакция может снять деньги с этого счета в любой момент времени. Это предотвращает конфликты, но может привести к блокировке, если много транзакций хотят снять деньги одновременно.
Исправляющее экранирование: Предположим, у нас есть система бронирования билетов, и две транзакции хотят забронировать последний билет на один и тот же рейс. Если обе транзакции одновременно пытаются забронировать билет, одна из них может успешно забронировать билет, а другая может получить сообщение об ошибке. Затем вторая транзакция может попробовать забронировать другой билет на другой рейс.
Изоляция и согласованность
Изоляция гарантирует, что транзакции работают независимо друг от друга, то есть изменения, внесенные одной транзакцией, не должны влиять на другие транзакции, пока первая транзакция не будет завершена и не будет применена. Это обеспечивает согласованность данных и предотвращает непреднамеренные последствия, вызванные одновременным доступом нескольких транзакций к данным.
Существует несколько уровней изоляции, определенных стандартом изоляции транзакций ANSI (ACID), которые гарантируют различную степень изоляции:
Чтение зафиксированных данных (Read Uncommitted): Самый низкий уровень изоляции, который позволяет транзакциям читать незафиксированные данные других транзакций. Это может привести к неожидаемым результатам, таким как "грязное чтение".
Чтение зафиксированных данных с повторяемостью чтения (Read Committed): Этот уровень изоляции гарантирует, что транзакции видят только зафиксированные данные, но может привести к повторяющемуся чтению, когда одна и та же транзакция читает одни и те же данные несколько раз и получает разные результаты.
Повторяемость чтения (Repeatable Read): Этот уровень изоляции гарантирует, что транзакция всегда видит одни и те же данные при повторном чтении, но может позволить другим транзакциям вставлять новые строки, которые транзакция еще не видела.
Сериализуемость (Serializable): Это изоляции, который гарантирует, что все транзакции видят одни и те же данные в том же порядке, что и если бы они выполнялись одна за другой. Это обеспечивает самую высокую степень согласованности данных, но может привести к снижению производительности из-за более жестких ограничений на одновременный доступ к данным.
Согласованность гарантирует, что транзакции видят согласованное состояние данных. Это означает, что транзакции не должны видеть недопустимых состояний данных, таких как отрицательный баланс банковского счета. Существует несколько уровней согласованности, в том числе:
Согласованность по ключу (Key-Shared): Этот уровень согласованности гарантирует, что транзакции видят согласованные данные для каждого уникального ключа.
Согласованность по записи (Row-Shared): Этот уровень согласованности гарантирует, что транзакции видят согласованные данные для каждой записи.
Согласованность по странице (Page-Shared): Этот уровень согласованности гарантирует, что транзакции видят согласованные данные для каждой страницы.
Согласованность по таблице (Table-Shared): Этот уровень согласованности гарантирует, что транзакции видят согласованные данные для всей таблицы.
Изоляция и согласованность тесно связаны и вместе гарантируют, что транзакции работают независимо друг от друга и видят согласованное состояние данных. Правильный выбор уровней изоляции и согласованности зависит от конкретной ситуации и может повлиять на производительность и согласованность системы
Вывод
Экранирование является важной техникой в системах TZI, которая позволяет предотвращать или исправлять конфликты между транзакциями. Правильный выбор подхода к экранированию зависит от конкретной ситуации и может повлиять на производительность и согласованность системы.
Литература:
Беренсон, Р. Р. (1995). Транзакционная обработка and Techniques. Addison-Wesley Professional. Грей, Дж., Рюттер, А., и Шапиро, М. (1996). Транзакционная обработка: Concepts and Techniques. Morgan & Claypool Publishers. Херлих, М., и Шавит, Н. (2008). Искусство многопроцессорной обработки. Morgan & Claypool Publishers. СпИгль, С. (2009). Системы транзакционной обработки. John Wiley & Sons.