2013-07-11 6 views
2

Я просматривал функции API Win32 для операций управления файлами и каталогами. Я видел, что некоторые из этих функций имеют так называемые «транзакционные» аналоги.Что такое транзакционные операции с транзакциями?

Примеры:
CreateDirectory и CreateDirectoryTransacted
RemoveDirectory и RemoveDirectoryTransacted
CreateFile и CreateFileTransacted
CopyFile и CopyFileTransacted

Я читал объяснения этих транзакционных функций, статьи Википедии Transactional NTFS и this MSDN Magazine page. Но из-за тяжелой терминологии (для меня) на этих страницах я не совсем понял эти объяснения. Все они пришли к общему мнению, что эти функции являются «атомарными». Но насколько я понимаю из слова «атом», это ядро ​​с вращающимися электронами вокруг него ...

Не могли бы вы объяснить мне простые и простые английские предложения, каковы цели и действия этих функций ? Почему и когда вы предпочитаете транзакционную версию функции API?

+1

«Атомный» в этом контексте относится к первоначальному значению (греческого) слова, которое относится к «неделимому». Атомные операции таковы. Такая операция либо завершается успешно, либо в случае ошибки, если она не работает в целом, так что, что бы ни случилось, не будет никакого результата с полуоткрытым результатом, который может быть, например, поврежденной файловой системой. Другими словами: когда атомная операция выполняется в согласованном состоянии, она всегда * приводит к согласованному состоянию; либо старое согласованное состояние, либо новое согласованное состояние, но между ними нет ничего. – JimmyB

+0

Возможно, посмотрите на это: http://msdn.microsoft.com/en-us/library/hh802690%28v=vs.85%29.aspx, в котором говорится, что «атомарность здесь заключается в том, что изменения либо полностью применяются, либо не применяются на самом деле, поскольку несогласованное состояние приведет к повреждению файла ». – JimmyB

+0

Этот сайт предназначен только для членов его эксперта, потому что, даже если они не являются экспертами по теме, о которых они спрашивают, они знают, как задавать вопросы, которые не выделяются как «вне темы». – Ameen

ответ

1

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

Использование нетранзакционной файловой системы и API, скажем, у вас есть файл, содержащий:

AAAA 

Теперь вы хотите, чтобы заполнить файл со всеми B-х, но при этом так и в середине власти и не все данные передаются на диск. Теперь у вас есть несогласованное состояние, когда вы читаете файл обратно (после восстановления питания):

BBAA 

Помните FAT и ScanDisk?

Теперь с транзакциями файловая система в основном сначала записывает изменения в другое место на диске и изменяет «указатели местоположения файлов данных» inodes в направлении нового местоположения данных только по завершении, обозначая пробел старым данные снова заняты как «доступные».

Вам не нужна транзакционная NTFS (TxF) для этого, как «стандартная» NTFS также promises to ensure consistency:

NTFS является возмещаемой файловой системой, которая гарантирует согласованность тома с помощью стандартного ведения журнала транзакций и методы восстановления. В случае сбоя системы NTFS запускает процедуру восстановления, которая обращается к информации, хранящейся в файле журнала транзакций. Процедура восстановления NTFS гарантирует восстановление объема в согласованное состояние. Для ведения транзакций требуется очень мало накладных расходов.

1

Почему и когда вы предпочитаете транслировать версию функции API?

Существует несколько сценариев, приведенных в приведенном выше сообщении link.

Один из них - это пример использования приложения-установщика, которому необходимо скопировать/установить несколько файлов в разные местоположения, а затем, возможно, выполнить некоторые обновления в реестре. До запуска установщика система может считаться согласованной. После того, как установщик выполнил всю свою работу, программное обеспечение полностью установлено, и система снова находится в состоянии.

Если, однако, компьютер выходит из строя во время процесса установки, может быть не совсем тривиально определить, какие шаги процедуры установки были успешно выполнены до сбоя, а какие нет. Транзакционные операции могут оказать поддержку в этой ситуации путем «автоматического» восстановления согласованного состояния системы, так как оно было до. Установщик выполнял, если для любой причиной сбоя установки.

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

Кроме того, концепция «атомных» операций присутствует в разных областях разработки программного обеспечения, например, при параллельном программировании или в системах управления базами данных. См. Статью Wikipedia.