Это 10-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления
Как следует из названия этой статьи, что такое база данных транзакций? Короткий ответ: это система хранения, которая поддерживает все или без каких-либо многочисленных операций, обычно называемых транзакциями. Это означает, что если некоторые из возможных списков операций с данными (например, создание, обновление или удаление информации) будут выполнены, все операции будут отменены, а база данных будет восстановлена в любом состоянии до операции. Действие начинается.
Эта функция обеспечивает надежное хранение и обработку информации, поскольку предотвращает ошибочное манипулирование данными, гарантируя, что база данных всегда находится в правильном состоянии. Транзакционные базы данных гарантируют целостность данных даже в случае сбоя системы, что может иметь решающее значение для многих случаев использования.
Рассмотрим быстрый и распространенный пример: клиент банка использует приложение на мобильном устройстве для перевода средств с одного счета на другой. Полная и правильная транзакция требует дебета исходного счета и кредита целевого счета.
Однако в случае отключения электроэнергии учетная запись источника после сервера базы данных не была зачислена на предыдущую учетную запись назначения? Истинно транзакционная база данных гарантирует, что в этом случае первая часть всей транзакции будет отменена (или "откатится"), потому что вторая часть не пройдет, и база данных останется в правильном и непротиворечивом состоянии, несмотря на сбой.
В этой статье мы более подробно рассмотрим транзакции базы данных и их важность, объясним четыре элемента «соответствия ACID» и их важность, а также обсудим, что связано с поддержкой этих элементов, поскольку данные и транзакции распределяются по современным системам. несколько конкретных советов по выбору системы транзакционной базы данных, отвечающей вашим потребностям.
Что такое транзакция базы данных?
Проще говоря, транзакция базы данных — это единица работы, выполняемая системой управления базами данных (СУБД) в отношении данной базы данных, выполняя операции с данными и обновляя базовые файлы на различных носителях. Транзакционная база данных гарантирует, что такие единицы работы выполняются по принципу «все или ничего», поскольку любой сбой в любой операции приведет к приостановке всех операций и откату всех операций, оставив базу данных в состоянии, в котором она находилась до начала транзакции.
Есть две основные причины для использования транзакционной базы данных. Первая заключается в том, что она делает единицу работы надежной при любых обстоятельствах. Вспоминая наш банковский пример, клиенты могут быть уверены, что когда их деньги будут списаны с исходного счета, они будут зачислены на счет назначения. Если что-то пойдет не так (например, сбой сети, сбой сервера и т. д.), клиенты хотят, чтобы их учетные записи оставались прежними, а не просто случайно теряли деньги.
Вторая причина заключается в том, что описываемая нами транзакционная база данных всегда находится в правильном и непротиворечивом состоянии, независимо от возможных сбоев всех задействованных технологий. Никто не хочет хранить информацию в системе, данные которой могут стать несогласованными из-за недопустимых операций, или информация может быть потеряна, если сервер выйдет из строя. Конечно, не все варианты использования являются критически важными, но многие из них таковы, и в этих случаях транзакционные базы данных могут обеспечить огромную ценность для бизнеса.
Конечно, не каждая система баз данных является транзакционной по своей природе. Некоторые системы сосредоточены только на записи отсутствующей информации или информации, которая не требуется для поддержки транзакционных функций. При рассмотрении вашего варианта использования важно обратить пристальное внимание на то, в какой степени вам нужны эти возможности, и сопоставить свои ожидания со степенью, в которой базовая система базы данных придерживается принципов транзакционной базы данных.
Важность соблюдения требований ACID
ACID (аббревиатура от «Atomicity, Consistency, Isolation, and Durability») представляет собой набор принципов, обеспечивающих надежную и правильную обработку транзакций базы данных. В следующей таблице объясняется, что включают в себя эти четыре различных элемента.
элемент | значение |
---|---|
атомарность | Все операции с данными в транзакции выполняются или откатываются по принципу «все или ничего». |
последовательность | Информация в базе данных должна быть семантически значимой во всех случаях (например, нельзя вставлять дочерние данные без действительного родителя, не использовать пустые значения для обязательных полей и т. д.). |
изолировать | Каждая транзакция должна выполняться независимо от любых других транзакций, выполняемых в то же время, то есть нельзя допускать «утечки» информации из одной транзакции в другую. |
Долговечность | Любая успешно завершенная транзакция записывается на неизгладимую память, то есть ее данные не могут быть потеряны в случае программного или даже аппаратного сбоя. |
Давайте рассмотрим более сложный пример, чтобы проиллюстрировать, почему важны гарантии ACID. Представьте себе другую распространенную ситуацию, когда два человека А и Б бронируют места в одном ряду на один и тот же сеанс в кинотеатре. A зарезервировал только одно место, а B пытается забронировать целый ряд для семейной прогулки.
Если А зарезервировал место первым, то транзакция Б не состоится, потому что место в онлайн-корзине уже зарезервировано и не может быть забронировано повторно. Это объясняет атомарность, потому что одна из операций с данными человека B терпит неудачу, что они оба сделали, и согласованность, потому что система не допустит бессмысленных данных, таких как два человека, чтобы зарезервировать одно и то же место.
Транзакция B будет отменена только тогда, когда подписка A будет успешно завершена и записана в базу данных. Однако до того, как это произойдет, особенность изоляции заключается в том, чтобы позволить двум людям одновременно попытаться торговать на одном и том же месте, гарантируя, что обе стороны видят оспариваемое место как доступное до тех пор, пока оно не будет фактически зарезервировано.
Наконец, даже если вся система резервирования выйдет из строя после того, как А успешно зарезервирует место, постоянство гарантирует, что правильные данные сохраняются при перезапусках. Это позволяет А распечатывать билеты по запросу и наслаждаться шоу, независимо от каких-либо системных сбоев после корректного завершения транзакции.
Как работает распределенная транзакция?
Все более распределенный характер современных приложений, часто доступных по всему миру, усложняет проблему транзакционных баз данных. Причина в том, что гарантии ACID так же важны для распределенной системы, как и программное обеспечение для одной базы данных, работающее на одном сервере, но использование нескольких серверов или узлов может значительно усложнить проблему.
подумай об этом. Это просто, когда одно программное обеспечение базы данных может «решить» отменить все другие операции с данными в транзакции, как только первая транзакция завершится ошибкой. Когда программное обеспечение базы данных работает на десятках (или даже сотнях) узлов, разбросанных по всему миру, это совсем другая история. Любой сбой любого элемента любой операции с данными на любом из этих серверов требует отмены всей транзакции и безопасного отката в любом месте. Точно так же, даже если транзакция успешна, вся система должна гарантировать, что все операции будут правильными и надежными, независимо от того, какой сервер или серверы их выполняют.
На практике распределенные транзакционные базы данных трудно реализовать правильно, но, к счастью, некоторые поставщики это умеют. Например, благодаря своей архитектуре и алгоритму хранения данных Fauna может обеспечивать строго сериализуемые внешне согласованные транзакции.
В отличие от других систем, Fauna не требует строгой синхронизации физических часов между всеми серверами для обеспечения согласованности, что позволяет избежать обычных ограничений расстояния между серверами-репликами, поэтому полезно для развертываний по всему миру с типичными глобальными задержками в Интернете. Методы, требующие синхронизации, могут вызвать сбои, если системные часы или сетевой трафик отличаются на миллисекунды, в то время как более мягкие требования Fauna не страдают от таких проблем.
Это возможно, потому что Fauna предоставляет механизм транзакций, вдохновленный Calvin, способ достижения быстрых распределенных транзакций в системах многораздельных баз данных. Механизм транзакций Fauna может достичь «независимой согласованности» благодаря протоколу распределенных транзакций. На самом деле перед записью в какую-либо базу данных Fauna заранее определяет порядок, в котором должны выполняться транзакции. Затем исполнительный механизм Fauna обрабатывает их таким образом, чтобы конечный результат был таким же, как если бы они обрабатывались по одному в указанном порядке.
По сути, вы получаете всю скорость и мощность распределенных транзакций, выполняющихся параллельно на нескольких серверах, и в то же время пользуетесь всеми преимуществами данных транзакционной базы данных, как если бы они выполнялись последовательно на одном сервере.
призыв к действию
Fauna сочетает в себе всю гибкость и производительность нетранзакционной базы данных с реляционными запросами и возможностями транзакционной базы данных, а ACID гарантирует полностью распределенное использование. На самом деле благодаря тому, как Fauna обрабатывает свои распределенные транзакции, пользователи могут избежать аномалий данных, которые могут возникнуть в других системах. Бессмертные записи, устаревшие чтения, изменение причинно-следственных связей и другие подобные проблемы предотвращаются с помощью строго сериализуемых многорегиональных транзакций, которые не ограничивают количество ключей, документов или разделов.
Также стоит отметить, что Fauna не является «базой данных как услугой» (DBaaS), которая обычно размещается на хостинге, или даже некоторыми кластерными облачными предложениями, оба из которых требуют управления. Вместо этого Fauna представляет собой настоящий «API данных», что означает, что разработчики могут просто совершать вызовы по мере необходимости, не тратя время на настройку или масштабирование, со всеми преимуществами транзакционной базы данных и соответствием требованиям ACID.
Поскольку это настоящий API данных, Fauna не имеет всех обычных проблем с настройкой и конфигурацией и работает «из коробки» как бессерверная утилита. Разработчикам нужна только учетная запись, чтобы начать работу, без комиссий и щедрых стартовых привилегий. Никаких общих головных болей: без конфигурации экземпляра, без обширной конфигурации и т. д.
В этой статье мы исследуем транзакционные базы данных, объясним гарантии ACID, которые они предоставляют, проиллюстрируем их ценность в критически важных случаях использования, обсудим, как современная потребность в распределенных транзакциях усложняет ситуацию, и предоставим некоторые конкретные рекомендации, чтобы легко получить преимущества данных КИСЛОТНОЕ соответствие.
Наконец, Fauna обеспечивает все преимущества за счет простых транзакций распределенной базы данных, автоматической настройки и простого масштабирования. Регистрация бесплатна, начать работу легко, цены понятны и просты — платите только за то, что действительно используете. Если вы считаете, что Fauna может справиться с вашими потребностями в данных, почему бы не попробовать прямо сейчас?
Это все для этой статьи
Я давно веду блог о технологиях, и это одна из моих технических статей/руководств. Надеюсь, вам это понравится! Вот краткий обзор домашней страницы моего блога Nuggets:Хай Йонг
Если вы действительно узнали что-то новое из этой статьи, ставьте лайк, добавляйте в закладки и делитесь с друзьями. 🤗Наконец, не забудьте поставить ❤ или 📑 в поддержку.