Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора пис.docx
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
112 Кб
Скачать
☆
  1. Задачи анализа транзакций на этапе физического проектирования и правила его проведения на примере одной транзакции.

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

Решая профессиональную задачу создания физической модели данных - учет влияния транзакций, - проектировщик базы данных стремиться создать такую физическую модель данных, которая, по его мнению, давала бы наибольшую производительность обработки запросов базы данных

Для успешного планирования каждой транзакции необходимо знать следующее:

  • транзакции, выполняемые наиболее часто и оказывающие существенное влияние на производительность;

  • транзакции, наиболее важные для работы организации;

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

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

28

Способы реализации транзакций. Работа по проектированию производных атрибутов. Виды реализации производных атрибутов

План ответа:

редактирования объектов. Ее цель – показать общий принцип действия пользовательских транзакций. Такой способ реализации пользовательских транзакций предоставляет следующие возможности:

– Изменённые данные отображаются сразу после внесения изменений. Пользователь может видеть результат своей работы до сохранения в общей базе. – Если происходит внезапное завершение работы приложения (отключение света, обрыв связи по сети), все действия, совершённые пользователем, сохраняются в базе.

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

– Поскольку все транзакции хранятся в одной разделяемой среде, то в данном случае представляется больше возможностей для решения проблем, возникающих при работе нескольких пользователей одновременно с одними и теми же записями.Реализация транзакцийВ большинстве случае корнем транзакции является бизнес-процесс, а не DAL-компонент или компонент бизнес-объекта, поскольку в бизнес-процессах обычно используются транзакции, охватывающие несколько бизнес-объектов, а не один. Но бывают случаи, когда нужно выполнять транзакционные операции над одним бизнес-объектом без участия бизнес-процесса более высокого уровня. Так, для добавления покупателя в базу данных выполняются следующие операции: вставка записи в таблицу Customer; вставка одной или нескольких записей в таблицу Address.Для добавления покупателя в базу данных необходимо успешное выполнение обеих операций. Если бизнес-объект никогда не будет частью более крупного бизнес-процесса, инициирующего транзакцию, лучше использовать в бизнес-объекте Customer ручные транзакции. Транзакции вручную значительно быстрее автоматических, так как они не требуют межпроцессного взаимодействия через DTC (Microsoft Distributed Transaction Coordinator).Рекомендации по использованию ручных транзаций в DAL-компонентах

При реализации ручных транзакций в DAL-компоненте примите во внимание следующие рекомендации.По возможности обрабатывайте транзакции в хранимых процедурах. Для управления транзакциями используйте операторы Transact-SQL: BEGIN TRANSACTION, END TRANSACTION и ROLLBACK TRANSACTION. Пример кода см. в разделе "How To Perform Transactions With Transact-SQL" .NET Data Access Architecture Guide. Если вы не используете хранимые процедуры и DAL-компоненты не вызываются бизнес-процессом, можно программно управлять транзакциями средствами ADO.NET. Пример кода см. в разделе "How to Code ADO.NET Manual Transactions" .NET Data Access Architecture Guide.

Рекомендации по использованию автоматических транзакций в DAL-компонентах спользование COM+-транзакций связано с повышенными издержками, зато у автоматических транзакций модель программирования проще, чем у ручных. Кроме того, без автоматических транзакций не обойтись, когда транзакции охватывают несколько распределенных источников данных, так как автомататические транзакции поддерживают взаимодействие с DTC. При реализации автоматических транзакций в DAL-компонентах примите во внимание следующие рекомендации. DAL-компонент должен наследовать от класса ServicedComponent из пространства имен System.EnterpriseServices. У любой сборки, зарегистрированной в службе COM+, должно быть строгое имя. Дополнительную информацию о сборках со строгими именами см. в Creating and Using Strong-Named Assemblies.

  • Пометить DAL-компонент атрибутом Transaction(TransactionOption.Supported), чтобы можно было выполнять операции чтения и записи в одном и том же компоненте. При указании этого атрибута можно избежать издержек выполнения транзакций там, где они не нужны, - в отличие от атрибута Transaction(TransactionOption.Required), при задании которого транзакции выполняются всегда.

В следующем фрагменте кода показывается, как поддерживать автоматические транзакции в классе DAL-компонента:

using System.EnterpriseServices;

[Transaction(TransactionOption.Supported)]

public class CustomerDALC : ServicedComponent

{

...

}

Если вы используете автоматические транзакции, DAL-компоненты должны голосовать за или против транзакций, чтобы сообщать об успешном или неудачном выполнении операции. Чтобы голосовать неявно, помечайте методы атрибутом AutoComplete и генерируйте исключение, если операция потерпела неудачу. Чтобы голосовать явно, вызывайте методы SetComplete или SetAbort класса ContextUtil.

Дополнительную информацию об автоматических транзакциях см. в разделе "Using Automatic Transactions" .NET Data Access Architecture Guide.