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