Порівняння декількох версій модулів 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Порівняння декількох версій модулів



Порівняння декількох версій модулів дає удосконалення надійності. Це застосовується лише в особливих випадках, оскільки вимагає великих інвестицій. Це використовується тільки для надзвичайно важливих програм.

Багатоваріантне програмування може бути реалізоване декількома способами:

Перший з них називається n-версії. Він розробляється n незалежними програмістами. Програми виконуються паралельно і результати порівнюються PCU. У разі розбіжності PCU вибирає правильний результат, наприклад, "голосування" використовується для ухвалення рішень. Службові дані для таких обчислень є важливим чинником. Проблема критично важлива для таких систем, як системи реального масштабу часу (Real Time Systems, RTS), для яких потрібно брати до уваги час реакції, наприклад, на погодні умови або кут нахилу літака.

Характеристики n-рівневого рішення паралельні, з одночасним відкриттям операцій над загальними даними декількома незалежними модулями.

Рисунок 1.

Інше рішення - це програмування з допоміжними модулями. Метод припускає існування двох модулів, один з яких активний, а інший використовується для перевірки результатів активного модуля. Якщо виявляється будь-яка некоректність, додатковий операційний модуль замінює базовий модуль. Існують різні версії паралельних рішень.

Рисунок 2

 

Транзакції

Транзакція - послідовність операцій що виконуються, які не можуть бути розділені і є одним цілим.

Транзакція складається з наступних операцій:

· читання даних x транзакцією T,

· запис даних x транзакцією T,

· відміна транзакції T,

· ухвалення транзакції T.

Транзакції використовуються для компактності та у випадку паралельних операцій.

Якщо виконується значна кількість процесів, компактність може не дотриматися і є можливість виникнення помилок.

 

 

У таблиці 1. наведена схема роботи двох процесів А і B, які використовують загальні дані.

Таблиця 1.

У Таблиці 1. наведено два паралельні процеси, які не порушують компактність.

Таблиця 2.

 

У таблиці 2. наведено два процеси, які порушують компактність.

Блок 6 не компактний. Є два процеси, які при незалежному виконанні дадуть результат 11. Відсутність синхронізації призведе до того, що один з процесів не буде оновлений.

Приклад: ми маємо 4 автори, які оновлюють тест. Якщо немає ніякого протоколу щодо оновлень, деякі виправлення можуть бути втрачені.

Транзакції роблять можливою підтримку сумісності процесів. При цьому ручна синхронізація або домовленості не потрібні.

Транзакції захищають від неповних виконань, які можуть з'явитися після збоїв.

Уявімо банківську систему з наступними операціями над рахунками клієнта F.

1. Клієнт читає магнітну картку і авторизується

2. Клієнт оголошує суму

3. Рахунок перевіряється

4. Залишок на рахунку зменшується на вказану суму

5. Посилається замовлення передачі

6. Касир знімає суму з рахунку

7. Касир проводить оплату

Питання полягає в тому, що трапиться, якщо між операцією 4 і 5 відбудеться відключення електрики. Рахунок зменшиться, клієнт не отримає грошей, фактичні дані втрачаються, директор скаже, що заяву слід писати електростанції, клієнт не погодиться і загрожуватиме позивом до суду і т.п.

Транзакції гарантують компактність даних і захищають від апаратного збою, помилок ПЗ, проблем з персоналом і т.д.

Постулати ACID

Транзакції гарантують відновлення до стану перед виникненням помилки. Це - основний принцип для забезпечення надійності програмного забезпечення, що працює з базами даних.

Під транзакціями розуміють наступні властивості:

(A) Атомарність – у всіх транзакціях виконується або одна операція, або нічого.

(C) Цілісність – якщо транзакція увійшла до цілісної бази даних, то поля і база даних повинні теж залишитися цілісними.

(I) Ізоляція – транзакція не знає про інші транзакції і не втручається в їх дії. Дії, що виконуються однією транзакцією, не повинні бути видимі іншим, поки не будуть отримані результати.

(D) Стійкість – після того, як транзакція завершиться, результати записуються на жорсткий диск і не можуть бути змінені випадковим чином, наприклад, відключенням електрики.

Транзакції в SQL

У SQL кожна транзакція починається з почати транзакцію (BEGIN TRANSACTION), і закінчується операцією фіксування(COMMIT), що позначає правильне закінчення, або відкат (ROLLBACK) (або відміна (ABORT)), означає повернення до початкового стану (або відміну) транзакції.

Такі команди, як вибрати, вставити, відновити, видалити, створити запускають транзакцію, якщо вона ще не була запущена.

Транзакція виконується, поки команда фіксувати (підтверджуюча) або відкат(що перериває або повертає). Транзакція може містити в собі такі слова, як видалити, створити, вставити, створити і т.д.

Приклад транзакції з командами відміна та фіксування наведені на рис. 3:

Рисунок 3. Приклад використання транзакцій.



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 205; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.234.83 (0.009 с.)