Що таке транзакції? Системи обробки транзакцій


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

Введення в термінологію

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

Визначення поняття

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

Розглянемо зазначене поняття на прикладі продуктів 1С. Транзакція - це така ж неподільна послідовність дій. Наочним зразком може послужити запис про одиницю товару: відкриття потрібного довідника, створення нового елемента, заповнення передбачених полів. Для того щоб всі ці дії привели до бажаного результату, необхідно виконувати їх строго з першого і по останнє. Тільки за такої умови процедура буде вважатися успішною. В іншому ж випадку відбувається скасування транзакції.

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

не можу завершити захищену транзакцію

Транзакції в 1С: тонкощі вбудованої мови

Що таке транзакції в загальному випадку, нам зрозуміло. Але оскільки кожна компанія, що займається розробкою програмного забезпечення, робить це по-своєму, існують певні відмінності між транзакціями взагалі і транзакціями в 1С зокрема. Наприклад, вкладені (транзакція в транзакції) в 1С не підтримуються.

З точки зору синтаксису оператори вбудованої мови досить прості. Початок процесу оголошується за допомогою спеціальної процедури НачатьТранзакцію (). Процедура ЗафіксіроватьТранзакцію () використовується для запису змін в ході виконання дій. Якщо в процесі виконання стався збій, є можливість ОтменітьТранзакцію () для відкату скоєних змін.

Чому використання транзакцій переважно? Тому що код в цих процедурах виконується набагато швидше. Саме до цього і прагне будь-який програміст. Різниця в швидкості може бути не так відчутна, якщо користувачів 1С в офісі 1-2 співробітника, але її не можна не відчути, коли мова йде про цілі відділах, одночасно виконують різну роботу в зазначеній програмі.

Підводні камені

Крім очевидного плюса, що полягає в серйозному збільшенні швидкості читання і записи при роботі з базою, у транзакцій є і свій мінус. Повернемося до наведеного раніше прикладу з життя. Що таке транзакції, що здійснюються не однією людиною, а цілою родиною? Кожен намагається потрапити у ванну, щоб вмитися раніше, все товпляться на кухні, тому що настав час сніданку. В результаті члени сім'ї незадоволені один одним. У кращому випадку це просто невдалий початок дня, в гіршому - запізнення на роботу, догану від начальства, зірвані плани.

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

Бути чи не бути керованим блокувань?

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

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

Таким чином, своєчасний аналіз транзакцій і правильне ставлення до блокувань дозволяє повною мірою використовувати гнучкість системи "1С: Підприємство" і оптимізувати роботу бази, звівши до мінімуму тимчасові втрати.

системи обробки транзакцій

До чого призводять надлишкові блокування?

Питання зовсім не риторичне. Якщо прибрати потрібні блокування, виникне плутанина і хаос. У базі почнуть скупчуватися неправильні дані через одночасне списання залишків або, навпаки, нарахування активів. Але наслідки ці такого роду, що виявляться не відразу. Перший час робота буде йти швидко, створюючи ілюзію правильності вибору відмови від блокувань. З іншого боку, непродумано велика кількість блокувань відразу викликає повідомлення про помилки. "Не вдається завершити захищену транзакцію", - попереджає нас система. Що це означає? Дві транзакції взаємно заблокували один одного таким чином, що жодна не може ні завершити розпочате, ні провести скасування. Замкнуте коло з "мертвих" транзакцій буде висіти в базі до виявлення, помітно знижуючи продуктивність системи.

Зайві операції зі скасування дій збільшують кількість записів в журналі. Крім того, подібна система нежиттєздатна, адже ще більше збільшення користувачів просто поховає її під вантажем "мертвих" блокувань. Час простою буде незмінно рости. Як уникати таких ситуацій?

Рівні ізоляції - ще один спосіб не сісти на мілину

Говорячи про те, що таке транзакції, ми згадували про підводні камені. Продовжуючи аналогію, можна з упевненістю стверджувати, що варіювання рівня блокувань - надійний інструмент лоцмана в подорожі по морю 1С. Розрізняють два рівні ізоляції: "тільки читання, без запису" і "ні записи, ні читання". В автоматичному режимі вибір недоступний. Але досить перевести додаток в керований режим, і можна буде ставити "розумні" обмеження, вибираючи не тільки важливі документи, але й призначаючи їм відповідний рівень ізоляції.

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

поняття транзакції

Підводимо загальні підсумки

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

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

Поділися в соц мережах:

Увага, тільки СЬОГОДНІ!