Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
бесплатности».
До сих пор мы сознательно избегали обсуждения «бесплатности» MySQL и mSQL, 
поскольку термин «бесплатный» неоднозначен в мире программного обеспечения. На 
самом деле, лицензия как на один, так и на другой продукт может оказаться для 
вас не бесплатной, в зависимости от того, кем вы являетесь. По правилам, 
действовавшим в момент написания книги, университет не был обязан платить за 
лицензию ни на тот, ни на другой продукт. А коммерческий пользователь mSQL- 
обязан. Когда говорят, что MySQL «более бесплатна», чем mSQL, имеют в виду, что 
MySQL бесплатна для большего числа пользователей, чем mSQL.
Другая сторона понятия «бесплатный» для программ не имеет отношения к цене, а 
связана с возможностью изучать и модифицировать исходный код. В этом смысле тот 
и другой продукт совершенно бесплатны. Вы можете зайти на их веб-страницы и 
загрузить исходный код. Даже если вы принадлежите к пользователям MySQL или 
mSQL, которые обязаны платить за их использование, тратиться дополнительно на 
исходный код не нужно.
В мире программирования возник новый термин, предназначенный для избавления от 
неоднозначности понятия «бесплатный». Он называется Open Source- Открытый код. 
Фактически, термин «Open Source» стал торговой маркой, обозначающей программный 
продукт, исходный код которого открыт вне зависимости от взимаемой за его 
использование платы. Linux, Netscape, FreeBSD, Perl, Apache, все продукты GNU и 
многие продукты, упоминаемые в этой книге, такие как MySQL, mSQL, mm.mysql.jdbc 
и mSQL-JDBC (мы перечислили лишь немногие), - все они являются Open 
Source-продуктами.
Другие базы данных, о которых мы говорим в этой главе, также относятся к Open 
Source. Open source имеет очень большое значение в мире пользователей среднего 
класса, поскольку «большие парни» склонны рассматривать этот рынок как не 
заслуживающий их внимания из-за ограниченности, а разработчики малого класса 
считают эти продукты слишком сложными для себя.
Чего недостает MySQL и mSQL
Слово «недостает» выбрано за неимением лучшего. Как уже отмечалось, MySQL и 
mSQL сознательно предпочли отказаться от возможностей, которые могли снизить их 
производительность. Иными словами, в MySQL и mSQL ставка сделана на 
производительность. Однако некоторые пользователи среднего класса готовы 
отчасти пожертвовать производительностью ради определенных функций. Для 
понимания того, что предлагают другие базы данных среднего масштаба, полезно 
выяснить, что же опущено в MySQL и mSQL.
Разработчики MySQL собираются все-таки включить в свой продукт некоторые из 
этих функций с возможностью по желанию их отключать. Сейчас, когда книга 
печатается, мы зна- . ем, что планируется реализовать механизм хранимых 
процедур и вложенных запросов, а возможно, и транзакций.
Транзакции
Транзакции позволяют сгруппировать вместе несколько команд SQL в качестве 
единицы работы. Группируя вместе команды, можно быть уверенным, что никто не 
столкнется с частично измененной базой данных. Кроме того, при невозможности 
выполнить одну из команд вся единица работы не будет выполнена. Транзакции 
можно зрительно представить себе как перекресток оживленных дорог. В 
однопоточной системе с очередью, такой как mSQL, это как остановка перед 
перекрестком со всех четырех сторон. Все машины проезжают в очередь по одной. 
Если проезжает колонна из двух машин, существует опасность, что она будет 
разорвана перед знаком остановки.
В многопоточной системе с блокировкой, такой как MySQL, это больше напоминает 
перекресток с регулировщиком вместо знаков остановки. Движение происходит в 
любом порядке и с любой скоростью, а регулировщик следит, чтобы не было 
столкновений. Если к перекрестку подходят одновременно две машины с 
пересекающихся направлений, регулировщик приказывает одной из них остановиться 
и подождать, пока другая преодолеет перекресток.
Транзакции напоминают перекресток со светофором. Подходящий транспорт 
останавливается перед красным сигналом на то время, пока весь транспорт, 
следующий в перпендикулярном направлении, не пересечет перекресток.
Практический пример использования транзакций - банковское приложение, в котором 
перевод средств со сберегательного на чековый счет выполняется в результате 
изменения остатка на сберегательном счете, а затем изменения остатка на чековом 
счете. Это можно осуществить с помощью двух команд SQL:
# Снять $100 из $110 на сберегательном счете 
UPDATE account
SET balance = 10.00
WHERE id = 1234
# Добавить $100 к $55 на чековом счете 
UPDATE account
SET balance = 155.00 
WHERE id = 5678
В промежутке между двумя этими изменениями другой клиент мог провести операцию, 
проверяющую состояние чекового и сберегательного счетов, чтобы узнать, 
достаточна ли сумма для оплаты чека. Если бы подобное произошло, чек был бы 
возвращен банком. Еще хуже, если сервер «упадет» в промежутке между двумя 
изменениями. Клиент просто потеряет $100.
Объединяя эти две команды в транзакцию, вы говорите, что либо обе должны быть 
успешно выполнены, либо ни одна из них. Если первая команда пройдет, а вторая 
не сможет выполниться, то можно дать команду, называемую «откат»(«rollback»), 
которая вернет базу данных в состояние, предшествовавшее началу транзакции. 
 
<<-[Весь Текст]
Страница: из 157
 <<-