stringtranslate.com

Долговечность (системы баз данных)

В системах баз данных долговечность — это свойство ACID , которое гарантирует, что последствия совершенных транзакций сохранятся надолго, даже в случае сбоев, [1] включая инциденты и катастрофические события. Например, если при бронировании рейса сообщается, что место успешно забронировано, то место останется забронированным, даже если система выйдет из строя. [2]

Формально система баз данных обеспечивает свойство долговечности, если она допускает три типа сбоев: сбои транзакций, системы и сбои носителя. [1] В частности, транзакция завершается неудачно, если ее выполнение прерывается до того, как все ее операции будут обработаны системой. [3] Подобные прерывания могут быть вызваны ошибками ввода данных, отменой оператора, тайм-аутом или ошибками, специфичными для приложения, например, снятием денег с банковского счета при недостаточности средств. [1] На системном уровне сбой происходит, если содержимое энергозависимого хранилища потеряно, например, из-за сбоя системы , например , из-за нехватки памяти. [3] На уровне носителя, где носитель означает стабильное хранилище, которое выдерживает сбои системы, сбои происходят, когда стабильное хранилище или его часть теряется. [3] Эти случаи обычно представляют собой сбои дисков . [1]

Таким образом, чтобы быть долговечной, система базы данных должна реализовывать стратегии и операции, которые гарантируют, что последствия транзакций, которые были зафиксированы до сбоя, сохранятся после события (даже путем реконструкции), в то время как изменения незавершенных транзакций, которые не были зафиксированы, сохранятся. однако в момент сбоя они будут отменены и не повлияют на состояние системы базы данных. Доказано, что такое поведение является правильным, когда выполнение транзакций обладает соответственно свойствами устойчивости и восстанавливаемости . [3]

Механизмы

Упрощенный конечный автомат , показывающий возможные состояния СУБД после сбоя (красным цветом) и переходы (черным цветом), необходимые для возврата в работающую систему для достижения долговечности.

В системах, основанных на транзакциях, механизмы, обеспечивающие долговечность, исторически связаны с концепцией надежности систем, предложенной Джимом Греем в 1981 году. [1] Эта концепция включает долговечность, но она также опирается на аспекты атомарности и свойств согласованности . . [4] В частности, механизм надежности требует примитивов , которые явно указывают начало, конец и откат транзакций , [1] которые также подразумеваются для двух других вышеупомянутых свойств. В данной статье рассмотрены только механизмы, строго связанные с долговечностью. Эти механизмы разделены на три уровня: транзакционный, системный и медиа-уровень. Это также можно увидеть в сценариях, в которых могут произойти сбои, и которые необходимо учитывать при проектировании систем баз данных для обеспечения долговечности. [3]

Уровень транзакции

Устойчивость к сбоям, возникающим на уровне транзакций, таким как отмененные вызовы и противоречивые действия, которые могут быть заблокированы перед фиксацией с помощью ограничений и триггеров , гарантируется свойством сериализуемости выполнения транзакций. Состояние, созданное в результате эффектов ранее зафиксированных транзакций, доступно в основной памяти и, таким образом, является устойчивым, в то время как изменения, внесенные незафиксированными транзакциями, могут быть отменены. Фактически, благодаря сериализуемости их можно отличить от других транзакций и, следовательно, их изменения отбрасываются. [3] Кроме того, важно учитывать, что изменения на месте, которые перезаписывают старые значения без сохранения какой-либо истории, не приветствуются. [1] Существует множество подходов, позволяющих отслеживать историю изменений, например, решения на основе временных меток [5] или протоколирование и блокировка . [1]

Системный уровень

На системном уровне сбои по определению происходят [3] при потере содержимого энергозависимого хранилища. Это может произойти в таких случаях, как сбой системы или отключение электроэнергии . Существующие системы баз данных используют энергозависимую память (т.е. основную память системы) для разных целей: некоторые хранят в ней все свое состояние и данные даже без какой-либо гарантии долговечности; другие сохраняют состояние и данные или их часть в памяти, но также используют энергонезависимое хранилище для данных; другие системы сохраняют состояние только в основной памяти, сохраняя при этом все данные на диске. [6] Причина выбора энергозависимого хранилища, которое подвержено сбоям такого типа, и энергонезависимого хранилища кроется в различиях в производительности существующих технологий, которые используются для реализации этих видов хранения. Однако ситуация, вероятно, будет меняться по мере роста популярности технологий энергонезависимой памяти (NVM) . [7]

В системах, включающих энергонезависимое хранилище, надежность может быть достигнута за счет сохранения и очистки неизменяемого последовательного журнала транзакций в такое энергонезависимое хранилище перед подтверждением фиксации. Благодаря свойству атомарности транзакции можно рассматривать как единицу работы в процессе восстановления , гарантирующую долговечность при использовании журнала. В частности, механизм журналирования называется журналом упреждающей записи (WAL) и обеспечивает долговечность за счет буферизации изменений на диске до их синхронизации с основной памятью. Таким образом, путем восстановления из файла журнала все зафиксированные транзакции становятся устойчивыми к сбоям на уровне системы, поскольку их можно переделать. Вместо этого незафиксированные транзакции подлежат восстановлению, поскольку их операции записываются в энергонезависимое хранилище до того, как они эффективно изменят состояние базы данных. [8] Таким образом, частично выполненные операции можно отменить, не влияя на состояние системы. После этого те транзакции, которые были незавершенными, можно будет переделать. Таким образом, журнал транзакций из энергонезависимого хранилища можно повторно обработать, чтобы воссоздать состояние системы непосредственно перед последующим сбоем на уровне системы. Стоит отметить, что журналирование осуществляется как комбинация данных отслеживания и операций (т. е. транзакций) по соображениям производительности. [9]

Уровень СМИ

На уровне носителя сценарии сбоев затрагивают энергонезависимые хранилища, такие как жесткие диски , твердотельные накопители и другие типы аппаратных компонентов хранилища . [8] Чтобы гарантировать надежность на этом уровне, система баз данных должна полагаться на стабильную память, которая является памятью, которая полностью и идеально устойчива к сбоям. Такого рода память может быть достигнута с помощью механизмов репликации и надежных протоколов записи. [4]

Для обеспечения логической стабильной памяти доступно множество инструментов и технологий, таких как зеркалирование дисков , и их выбор зависит от требований конкретных приложений. [4] В целом стратегии и архитектуры репликации и резервирования , которые ведут себя как стабильная память, доступны на разных уровнях технологического стека. Таким образом, даже в случае катастрофических событий, когда оборудование хранения данных будет повреждено, можно предотвратить потерю данных . [10] На этом уровне существует прочная связь между долговечностью и восстановлением системы и данных в том смысле, что основная цель — сохранить данные не обязательно в онлайн-репликах, но также и в виде автономных копий. [4] Последние методы относятся к категориям резервного копирования , предотвращения потери данных и аварийного восстановления . [11]

Поэтому в случае сбоя носителя долговечность транзакций гарантируется возможностью восстановления состояния базы данных по файлам журналов, хранящимся в стабильной памяти, каким бы способом это ни было реализовано в системе базы данных. [8] Существует несколько механизмов для хранения и восстановления состояния системы базы данных, которые повышают производительность как с точки зрения пространства, так и времени по сравнению с управлением всеми файлами журналов, созданными с самого начала системы базы данных. Эти механизмы часто включают инкрементальный дамп , дифференциальные файлы и контрольные точки . [12]

Распределенные базы данных

В распределенных транзакциях обеспечение устойчивости требует дополнительных механизмов для сохранения согласованной последовательности состояний во всех узлах базы данных. Это означает, например, что одного узла может быть недостаточно для принятия решения о заключении транзакции путем ее фиксации. Фактически, ресурсы, используемые в этой транзакции, могут находиться на других узлах, где другие транзакции происходят одновременно. В противном случае, в случае сбоя, если не удастся гарантировать согласованность, будет невозможно подтвердить безопасное состояние базы данных для восстановления. По этой причине все участвующие узлы должны координировать свои действия, прежде чем фиксация может быть подтверждена. Обычно это делается с помощью протокола двухфазной фиксации . [13]

Кроме того, в распределенных базах данных даже протоколы регистрации и восстановления должны решать проблемы распределенных сред , такие как взаимоблокировки , которые могут препятствовать устойчивости и возможности восстановления транзакций и, следовательно, долговечности. [13] Широко распространенное семейство алгоритмов, обеспечивающее эти свойства, — это алгоритмы восстановления и использования семантики изоляции (ARIES) . [8]

Смотрите также

Рекомендации

  1. ^ abcdefgh Грей, Джим (1981). «Концепция транзакции: достоинства и ограничения» (PDF) . ВЛДБ . 81 : 144–154.
  2. ^ «Соответствие требованиям ACID: что это значит и почему вас должно это волновать» . МарияДБ . 29 июля 2018 года . Проверено 22 сентября 2021 г.
  3. ^ abcdefg Хадзилакос, Вассос (1988). «Теория надежности систем баз данных». Журнал АКМ . 35 (1): 121–145. дои : 10.1145/42267.42272 . ISSN  0004-5411. S2CID  7052304.
  4. ^ abcd Ацени, Паоло, изд. (1999). Системы баз данных: концепции, языки и архитектуры . Нью-Йорк: МакГроу-Хилл. стр. 311–320. ISBN 978-0-07-709500-0.
  5. ^ Свободова, Л. (1980). «УПРАВЛЕНИЕ ИСТОРИЯМИ ОБЪЕКТОВ В РЕПОЗИТОРИИ «ЛАСТОЧКА». Мит/LCS Tr-243 . США.
  6. ^ Петров, Александр (2019). Внутреннее устройство базы данных: глубокое погружение в то, как работают распределенные системы данных (1-е изд.). Пекин Бостон Фарнем Себастополь Токио: О'Рейли. стр. 40–42. ISBN 978-1-4920-4034-7.
  7. ^ Арулрадж, Джой; Павел, Андрей (09.05.2017). «Как построить систему управления базами данных энергонезависимой памяти». Материалы Международной конференции ACM по управлению данными 2017 года . СИГМОД '17. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1753–1758. дои : 10.1145/3035918.3054780. ISBN 978-1-4503-4197-4. S2CID  648876.
  8. ^ abcd Петров, Александр (2019). Внутреннее устройство базы данных: глубокое погружение в то, как работают распределенные системы данных (1-е изд.). Пекин Бостон Фарнем Себастополь Токио: О'Рейли. стр. 185–195. ISBN 978-1-4920-4034-7.
  9. ^ Мохан, К.; Хадерле, Дон; Линдси, Брюс; Пирахеш, Хамид; Шварц, Питер (1 марта 1992 г.). «ОВЕН: метод восстановления транзакций, поддерживающий детальную блокировку и частичный откат с использованием журнала с упреждающей записью». Транзакции ACM в системах баз данных . 17 (1): 94–162. дои : 10.1145/128765.128770 . ISSN  0362-5915. S2CID  8759704.
  10. ^ Эйх, Маргарет Х. (1 февраля 1987 г.). «Классификация и сравнение методов восстановления баз данных основной памяти». 1987 Третья международная конференция IEEE по инженерии данных . IEEE. стр. 332–339. дои : 10.1109/ICDE.1987.7272398. ISBN 978-0-8186-0762-2. S2CID  207773738.
  11. ^ Чой, Манхой; Леонг, Хонг Ва; Вонг, Ман Хон (2000). «Методы аварийного восстановления систем баз данных». Коммуникации АКМ . 43 (11с): 6. дои : 10.1145/352515.352521. ISSN  0001-0782. S2CID  14781378.
  12. ^ Верхофстад, Йост С.М. (1 июня 1978 г.). «Методы восстановления систем баз данных». Обзоры вычислительной техники ACM . 10 (2): 167–195. дои : 10.1145/356725.356730. S2CID  8847522.
  13. ^ Аб Мохан, К.; Хадерле, Дон; Линдси, Брюс; Пирахеш, Хамид; Шварц, Питер (1 марта 1992 г.). «ОВЕН: метод восстановления транзакций, поддерживающий детальную блокировку и частичные откаты с использованием журнала с упреждающей записью». Транзакции ACM в системах баз данных . 17 (1): 94–162. дои : 10.1145/128765.128770 . ISSN  0362-5915. S2CID  8759704.

дальнейшее чтение

Внешние ссылки