Веб-приложения должны использовать явные транзакции SQL?

Нет. Это не правильный алгоритм грубой силы для решения проблемы LCS. Смотрите этот случай -

AKBLC AMBNCK

Ответ LCS этих двух строк должен быть 3. Но в вашем алгоритме он будет вычислять 2 (AK).

6
задан Maxim 7 October 2008 в 08:28
поделиться

5 ответов

Я настоятельно рекомендую использовать режим транзакции для безопасной целостности данных, потому что режим автоматической фиксации может вызвать частичное сохранение данных.

2
ответ дан 9 December 2019 в 20:51
поделиться

Я только использовал бы явные транзакции, когда Вы делаете вещи, которые являются на самом деле транзакционными, например, давая несколько команд SQL, которые высоко взаимосвязаны. Я предполагаю, что классическим примером этого является банковское приложение - уходящие деньги из одной учетной записи и внесения его в другой учетной записи должны всегда успешно выполняться или перестать работать как пакет, иначе кто-то сорван!

Мы используем транзакции на Так, но только экономно. Большинство наших обновлений базы данных является автономным и атомарным. У очень немногих есть свойства банковского примера выше.

9
ответ дан 9 December 2019 в 20:51
поделиться

Это обычно обрабатывается для меня на слое интерфейса БД - веб-приложение редко называет несколько хранимых процедур в рамках транзакции. Это обычно называет единственную хранимую процедуру, которая справляется со всей транзакцией, таким образом, веб-приложение только должно волноваться о том, перестало ли это работать.

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

Существуют исключения к этому, где транзакция инициируется веб-приложением, но они обычно немногочисленны.

1
ответ дан 9 December 2019 в 20:51
поделиться

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

Если Вы имеете дело с CRUD в нескольких режиме запросов (плохая идея, IMO) затем, конечно, необходимо определить транзакции явно, поскольку эти запросы были бы, конечно, 'транзакционно связаны', Вы не захотите заканчиваться половиной модели в своей базе данных. Это релевантно, потому что некоторые веб-платформы имеют тенденцию делать вещи, 'несколько запрашивают' путь по различным причинам.

Что касается которого режим транзакции использовать его зависит от того, что можно поддерживать с точки зрения представлений данных (т.е., насколько текущий данные должны быть при наблюдении клиентами) и что необходимо будет поддерживать с точки зрения производительности.

0
ответ дан 9 December 2019 в 20:51
поделиться

Необходимо использовать транзакции, учитывая, что различные пользователи будут поражать базу данных одновременно. Я рекомендовал бы не использовать автоматическую фиксацию. Используйте скобки явной транзакции. Относительно разрешения каждой транзакции, необходимо заключить в скобки конкретную единицу работы (независимо от того, что это означает в контексте).

Вы могли бы также хотеть изучить различные уровни изоляции транзакции, которые поддерживает Ваша база данных SQL. Они предложат диапазон поведений с точки зрения того, что читающие пользователи видят частично обновленных записей.

0
ответ дан 9 December 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: