Как сделать базу данных ACID-совместимой

Все в науке о данных начинается с данных. Без надлежащих и точных данных наука о данных похожа на роскошный автомобиль без бензина. Хорошо обслуживаемая, легко доступная, масштабируемая и отказоустойчивая база данных необходима для обеспечения доступа к данным.

Чтобы база данных не подводила нас, нам нужно правильно ее спроектировать и создать. Системы баз данных разработаны с учетом набора свойств, известных как ACID. Атомарность, согласованность, изоляция и долговечность - вот свойства, которые составляют ACID.

Прежде чем мы начнем обсуждение свойств ACID, нам нужно понять транзакции базы данных. Транзакция в основном представляет собой изменение в базе данных. Он может содержать одну или несколько операций. Например, перевод денег с одного банковского счета на другой включает несколько операций. Сначала деньги снимаются со счета отправителя. Затем он зачисляется на счет получателя.

Транзакция рассматривается как единое целое, даже если она содержит несколько операций. После завершения транзакции состояние базы данных меняется.

Теперь мы знаем, что такое транзакция с базой данных. Начнем со свойств ACID.

Атомарность

Атомарность лучше всего объяснить с помощью реальных атомов. Атом - это наименьшая единица, образующая химический элемент. Он состоит из протонов, нейтронов и электронов, но рассматривается как целостная структура. У нас не может быть и половины атома. У нас либо есть атом, либо его нет.

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

Атомарность относится к полноте или целостности транзакции базы данных. Атомарная транзакция либо происходит, либо не происходит вовсе. У нас не может быть частично выполненных транзакций.

Транзакция денежного перевода наглядно демонстрирует атомарность. Когда деньги снимаются со счета отправителя, они должны быть зачислены на счет получателя. В противном случае у нас были бы большие проблемы. Атомарная транзакция гарантирует, что это действие выполняется как единое целое.

Рассмотрим проблему, которая серьезно влияет на операции с базой данных в середине денежного перевода. Если базе данных не удается внести снятые деньги из-за этой проблемы, она возвращается в предыдущее согласованное состояние и остается неизменной. В результате перевод денег не происходит.

Последовательность

Согласованность означает, что транзакция должна быть совместима с ограничениями на целостность данных. Если транзакция нарушает ограничение, согласованность гарантирует, что транзакция не будет выполнена, и база данных вернется в предыдущее стабильное состояние. Таким образом, транзакция не происходит и состояние базы данных не меняется.

Транзакции, нарушающие ограничения, известны как незаконные транзакции. Предположим, ваш банковский счет не позволяет иметь отрицательный баланс. У вас на счету 20 долларов, и вы пытаетесь совершить покупку на 25 долларов с помощью карты. Эта покупка считается незаконной с точки зрения транзакций базы данных и поэтому отклоняется.

Другой пример согласованности - ввод данных. Если номер счета состоит ровно из 10 цифр, пользователю разрешается вводить только 10-значный номер счета. Процедуры базы данных могут использоваться для обеспечения согласованности входных данных.

Изоляция

Изоляция используется для обработки одновременных транзакций. В типичной базе данных, вероятно, будет несколько транзакций, которые одновременно читают или записывают в одну и ту же таблицу.

Если две транзакции, которые изменяют одни и те же данные, происходят одновременно, у нас может возникнуть проблема. Изоляция гарантирует, что эти транзакции «сериализованы», что означает, что одна из них ожидает завершения другой.

Представьте, что два человека одновременно пытаются купить один и тот же товар на веб-сайте электронной коммерции, а еще один остается на складе. Если база данных позволяет обоим покупателям совершить покупку одновременно, возникнет проблема. Изоляция упорядочивает эти действия, так что одно из них должно быть выполнено для запуска другого.

Долговечность

Долговечность гарантирует, что после завершения транзакции изменение в базе данных из-за этой транзакции будет постоянным. На него не повлияют системные сбои, такие как перебои в подаче электроэнергии.

Завершенные транзакции хранятся в энергонезависимой памяти. Предположим, у вас есть 100 долларов на вашем счете и вы переводите 20 долларов на другой счет. Это снижает ваш баланс до 80 долларов. Через некоторое время вы снова проверяете свой баланс и видите, что он составляет 100 долларов, как будто транзакции никогда не было. Это серийная проблема, и долговечность гарантирует, что таких проблем не произойдет.

Заключение

Свойства ACID имеют решающее значение для создания безопасной и хорошо обслуживаемой базы данных с максимальной целостностью данных. База данных должна соответствовать всем этим свойствам, чтобы минимизировать риск сбоя. Также важно сохранить целостность, точность и доступность данных.

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.