Вопрос: Что нам дает транзакция? — КиберПедия 

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Вопрос: Что нам дает транзакция?

2022-10-10 49
Вопрос: Что нам дает транзакция? 0.00 из 5.00 0 оценок
Заказать работу

Ответ: У нее много замечательных свойств, но нам сейчас важно одно – атомарность. Вы в транзакцию помещаете определенные команды – операции. Например, вы кладете в транзакцию 3-4 операции и говорите: «Вот эти операции должны быть обязательно выполнены!». Я добавляю данные в одну таблицу, вторую таблицу и третью. И если я не положу данные в три таблицы может быть информация как-то разрушена, утеряна, есть такое понятие «нарушена целостность информации». Мне нужна гарантия, что во все три таблицы была введена информация без всяких потерь. Что я делаю? Я делаю транзакцию. Что у нас получается? БД фиксирует каждые действия в транзакцию. У нее есть специальный журнал транзакций, где она пишет «Сделано». Авдруг где-то какой-то шаг не получился? Да, у нас есть возможность по этому журналу, который на жестком диске потом сказать «ага! не удалось.». Произвели откат и в итоге ничего не испорчено. Выскажете: «Аэтогонебыло?». Какнет, это было. Этобылосразувпервойверсии. Без этого распределенная БД работать не может. Потому что это намного сложнее и требует дополнительных усилий, и может быть в первой версии не так это было и важно. Что такое распределенные транзакции? Это когда я сохраняю данные и у меня точно также три действия, только они в трех разных физических БД. Вот это уже серьезная история.

Вы вообще сами хотите, чтобы своим кодом с каждой БД договариваться, что сейчас начнется распределенные транзакции? Что вот вы такие хорошие ребята, чтобы она там для вас все сохраняла, что вы потом скажете, «нужно это все принять или выбросить». С каждой надо будет договариваться. Это все очень неудобно. Поэтому серверная оснастка, естественно, включает в себя специальный софт. У Microsoftможет быть кто видел такая программа запущена: «MicrosoftDistributedTransactionCoordinator», как минимум. В другой ОС будет другая программа, но она обязана быть в серверной оснастке, потому что это не мой код должен бегать по всем базам и договариваться, что у нас тут распределенная транзакция, которая 5 разных участников объединяет на разных машинах по сети. Значит есть координаторы. Базы данных понимают, что такое распределенные транзакции, они есть. А чего нет? В версии 1.1 драйвер не поддерживал распределенные транзакции. Он не умел с ними общаться. Он этот протокол общения с участниками распределенной транзакции не поддерживал. Поэтому соответственно в версии 2, 2.1. была добавлена поддержка спецификации JDBCэтого протокола распределенных транзакций и теперь все драйвера, которые начинались с версии 2.1 уже могут договариваться с координатором распределенных транзакций и т.д. и т.д. Т.е. это все берет на себя драйвер. Вы просто ему скажете: «нужно сделать. и он за вас от вашего имени со всеми будет договариваться». Поэтому, как только эти две позиции были реализованы для нас и появился этот драйвер с версией 2.1, то там уже все серьезные проблемы, и с т.з. производительности и с т.з. бизнес-логики крайне важны.

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

Кроме того, что JDBCимеет версию, драйвер, который написан для одной и той же версии может быть четырех типов. Это для общего развития бегло рассмотрим, потому что на дворе 21 век, и такого старья, как на этом слайде мы найдем с трудом.

Первого и второго типа драйвера – это драйвера, которые написаны на Си. Ну первый на чистом Си написан, а второй частично на Си. Представьте, как выглядит драйвер первого типа. Представьте себе 1996 год. Нам говорят: «надо срочно для нашей любимой БД сделать драйвер для ребят, которые тут на Javaначали писать. Какой-тоновыйинепонятныйязыкJava. Давайте им поможем?». Делалось это так: писался очень маленький код, который был перед ODBCдрайвером на входе. Он был по сути мостом, т.е. он переводил ваши команды с Java, которые вам присылали в команды ODBCдрайвера. На самом деле мы не писали драйвер, а писали переходник с JDBCна ODBC.Хитрый и быстрый способ заткнуть проблемы с функционалом, а уже потом не спеша, когда что-то работает, когда заплатка есть, потихонечку начинают писать на Java.

JDBC Type 1: JDBC-ODBC Bridge plus ODBC Driver. See the left side of the first picture shown below. This combination provides JDBC access via ODBC drivers. ODBC binary code, and in many cases, database client code, must be loaded on each client machine that uses a JDBC-ODBC Bridge. Sun provides a JDBC-ODBC Bridge driver, which is appropriate for experimental use and for situations in which no other driver is available.
JDBC Type 2: A native API partly Java technology-enabled driver. See the right side of the first picture shown below. This type of driver converts JDBC calls into calls on the client API for Oracle, Sybase, Informix, DB2, or other DBMS. Note that, like the bridge driver, this style of driver requires that some binary code be loaded on each client machine.

 

А вот третий и четвертый: видите написано «PureJava»? Этодругоедело. Конечноэтолучше. Ипроблемаздесьстипамиданных. Эточтополучается? Если у нас имеется переходник, то мы из Javaобращаемся к Си.

1. Происходит конвертация типов данных из Javaв Си

2. Из Си идет в БД, там тоже идет конвертация типов данных, потому что Си и БД - это тоже разные типы данных.

3. Из БД идет в Си, с той же конвертацией

4. Происходит конвертация типов данных из Сив Java

Вы представляете себе, сколько там преобразований? Я конечно понимаю, если там все отлажено, то все хорошо, но это потеря времени. Так что чистая Javaона как минимум одно преобразование убирает.


Поделиться с друзьями:

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

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

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.