Надежность хранения данных
Поддержка транзакций
Одним из основополагающих механизмов организации обработки данных в клиент/серверной среде является механизм транзакций.
Транзакция – это последовательность операций над данными, которая должна быть выполнена как целый неделимый блок. Транзакция считается завершенной только тогда, когда все составляющие ее операции выполнились успешно. При ошибке в любой из составляющих транзакция считается незавершенной.
О важности механизма поддержки транзакций можно судить на примере перечисления денег между счетами клиентов банка. Процесс перечисления состоит из снятия денег на счете одного клиента, начисления денег на счет другого и фиксирования операции в журнале. Если после снятия денег с первого счета в момент зачисления денег на счет второго произойдет какой-либо сбой, то деньги просто исчезнут! С первого счета они будут сняты, а на второй не начислены. Если применяется механизм транзакций, то потери не произойдет. В случае сбоя в течение транзакции произойдет ее откат.
Откат транзакции (Rollback) – приведение данных к виду, в котором они находились до начала транзакции. Другими словами – отмена всех произведенных данной транзакцией модификаций данных.
Если же все составляющие транзакции были успешно выполнены, то происходит процесс фиксирования транзакции (Commit).
Например, внесение изменений в таблицы баз данных MS SQL Server производит только после получения команды Commit. До этого все операции заносятся в журнал транзакций без физического изменения таблиц.
Одним из безусловных преимуществ SQL-сервера является высокая надежность хранения данных. Тысячи специалистов компаний-производителей SQL-серверов на протяжении десятилетий совершенствовали механизмы защиты данных от потери.
В современных серверах баз данных применяется все техническое многообразие решений, призванных защитить данные от неприятностей. Сюда можно отнести такие решения, как механизм транзакций и ведение журнала транзакций, автоматическое и инициируемое администратором резервное копирование баз данных и их восстановление с резервных копий, организация записи данных на дисковых массивах со сложнейшими системами резервирования и восстановления данных на магнитных носителях, создание отказоустойчивых кластерных систем (когда несколько мощных компьютеров функционируют как единое целое) и многое другое.
Стоит ли говорить, что стоимость самостоятельной разработки подобных систем может превысить все разумные и неразумные пределы!
Мы имеем возможность применять многолетний опыт лучших инженерных умов, реализованный в виде SQL-серверов. И этим, безусловно, стоит воспользоваться!