Порівняння різних версій модулів 


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



ЗНАЕТЕ ЛИ ВЫ?

Порівняння різних версій модулів



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

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

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

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

Мал. 10.4.1.

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

Мал. 10.4.2

 

Транзакції

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

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

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

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

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

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

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

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

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

Таблиця 10.5.1.

 

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

Таблиця 10.5.2.

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Постулати ACID

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

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

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

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

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

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

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

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

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

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

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

Мал. 10.5.3. Приклад використання транзакцій.



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 118; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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