ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Все о MySQL. Целостность данных


28-12-2009

В системе MySQL предусмотрен определенный механизм ограничений первичных и внешних ключей в целях поддержки целостности данных. Столбцы могут быть объявлены таким образом, чтобы сделать ввод значений NULL недопустимым. Для предотвращения появления незаполненных столбцов, MySQL поддерживает использование значений по умолчанию, которые совместно со свойствами NOT NULL обеспечивают ввод в столбец только допустимых данных, в противном случае столбец останется пустым.
Транзакции
До недавнего времени MySQL не имел возможностей по обработке транзакций, однако, начиная с версии 3.23, у MySQL появились такие дескрипторы, как InnoDB и BDB, которые имеют возможность работы с транзакциями, аналогично коммерческим реляционным СУБД.
Считается, что СУБД может работать с транзакциями, если она соответствует условиям теста, известного как ACID-тест. Удовлетворяющая ACID-тесту база данных должна иметь следующие характеристики:
■ атомарность (A);
■ целостность (C);
■ изолированность (I);
■ надежность (D).
Рассмотрим все эти характеристики детальнее. Скоро
В то время как будущие версии MySQL должны иметь внешние ключи во всех типах таблиц, эта составляющая ссылочной целостности сейчас предусмотрена только в таблицах типа InnoDB.

Атомарность
По определению транзакцией называется операция или последовательность операций, которые позволяют осуществить доступ к данным базы данных или их изменение. Согласно терминологии языка SQL, транзакция возникает, когда один или несколько операторов SQL работают единым блоком. Каждый оператор SQL в таком блоке зависит от других операторов; другими словами, если один из операторов из блока по какой-то причине выполнен не будет, будет сделан "откат" всех операторов и все данные возвращаются в состояние, которое они имели перед началом транзакции. Группировка операторов SQL как части единого блока (или транзакции) сообщает MySQL о том, что весь блок должен выполняться атомарно.
Атомарное выполнение представляет собой дилемму "все или ничего". Все операторы SQL должны выполняться для того, чтобы база данных сохраняла целостность данных; в противном случае выполнение ни одного из операторов, принадлежащих блоку, завершено не будет. В СУБД MySQL начало блока обозначается оператором BEGIN. Транзакция (или рабочий блок) не будет помечена как выполненная до тех пор, пока не будет выполнен оператор COMMIT, по которой MySQL завершает действие. При необходимости оператор ROLLBACK инициирует откат всех изменений данных в состояние, которое они имели до выполнения оператора BEGIN.
Например, при дебитовании и кредитовании вашего банковского счета, банк добавляет и вычитает деньги со счета одной транзакцией. В эти модификации обычно вовлечено несколько таблиц. Таким образом, банк не в состоянии поддерживать целостность данных, не гарантируя выполнения всей транзакции, а не только ее части.
Управление транзакциями очень важно для систем клиент/сервер, выполняющих ввод данных, или для любого приложения, которое должно рассчитывать на хорошую защиту от неопределенной потери данных, как это было в примере с банком, описанном выше.
Целостность
Можно сказать, что целостность достигнута, если после каждой транзакции система остается в целостном состоянии, независимо от успешности выполнения транзакции.
Предположим, например, что ваш банк выполняет транзакцию по переводу денег с одного банковского счета на другой. Эта транзакция вычитает определенную денежную сумму с одного банковского счета, но ей не удается прибавить эту же сумму на другом счете, на который переводится данная денежная сумма. Это значит, что с этого момента система больше не будет находиться в целостном состоянии. В таком случае эта транзакция нарушает ограничения, обеспечивающие целостность, и система больше не соответствует требованиям ACID-теста.
В СУБД MySQL целостность поддерживается прежде всего механизмами регистрации MySQL, которые записывают все изменения, происходящие в базе данных, обеспечивая протоколирование и восстановлении транзакций. Когда система отключается посредине выполнения транзакции, процесс восстановления MySQL использует эти журналы для определения успешности завершения транзакции и при необходимости делает откат.
В дополнение к процессу протоколирования, в MySQL предусмотрены механизмы блокировки, обеспечивающие блокировку всех таблиц, строк и индексов, участвующих в транзакции вне зависимости от того, будут ли они выполнены успешно или будет сделан откат.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Компоненты поддержки Все о MySQL. Целостность данных. Продолжение.