НОУ ІНТУІТ, Лекція, Створення фізичної моделі бази даних
Специфікація транзакцій
Отже, транзакція бази даних - це логічна одиниця роботи, яка переводить базу даних з одного завершеного стану до іншого завершеного стану. Під завершеним станом бази даних тут розуміється такий стан даних у базі даних, яке порушує цілісності цих даних - всі дані у таблицях бази даних правильні, а посилання між таблицями коректні. На додаток транзакція групує операції над даними таким чином, щоб усі звернення до бази даних були успішно завершені або, у разі збою, база даних повернулася в попередній завершений стан (відкат транзакції).
Оскільки будь-яка операція зміни даних у базі даних несе у собі потенційну можливість порушення цілісності даних, необхідно суворо визначати транзакції та ідентифікувати інформацію, яка зазвичай включається до визначення транзакції.
Визначення транзакції може мати різні форми. Іноді визначення транзакцій використовується репозиторій даних CASE -средств проектування бази даних . Найчастіше визначення транзакцій виконується у вигляді текстових описів. Незалежно від обраного підходу, будь-яке хороше визначення транзакції включає кілька важливих елементів. До таких елементів відносяться:
- ім'я транзакції;
- номер транзакції;
- опис транзакції;
- характер транзакції та її складність;
- обсяг транзакції;
- вимоги до продуктивності транзакції;
- відносний пріоритет;
- час виконання транзакції.
Першим кроком у визначенні транзакції є унікальна ідентифікація кожної транзакції бази даних. Це можна зробити призначенням імені та номера кожноїтранзакції бази даних. Імена транзакцій повинні дозволяти користувачам відрізняти їх один від одного. Опис транзакцій включає перелік операцій предметної області, що виконуються транзакцією. Що ж до опису транзакцій, воно має бути виконано в термінах предметної області, зрозумілих користувачеві. Тут слід пам'ятати таке: а) опис транзакції має описувати, що транзакція робить для користувача, а чи не як виконується; і б) опис має бути зрозумілим користувачеві, що не виключає використання технологічного жаргону.
приклад. Специфікація транзакції
Номер транзакції: 001
Ім'я транзакції: Призначити роботу службовця.
Опис транзакції: Транзакція перевіряє, чи не призначена вже дана робота даному службовцю, потім перевіряє, чи має службовець робочий час для виконання даної роботи. Якщо результати перевірки позитивні (дана робота не призначена цьому службовцю, і службовець має у своєму розпорядженні часом для її виконання), то призначення даної роботи цьому службовцю.
В OLTP-системах більшість транзакцій відомі заздалегідь, тому між специфікацією транзакції та транзакцією бази даних існує взаємно однозначна відповідність. У DSS системах транзакції часто не відомі заздалегідь, і, отже, неможливо в принципі описати всі транзакції. У цьому випадку специфікація транзакції лише загалом визначає транзакції бази даних , тому проектувальнику бази даних важливо вміти передбачити тип транзакцій, які користувач найімовірніше виконуватиме у базі даних.
Для кожної транзакції може бути визначений характер транзакції як онлайнова транзакція або пакетна транзакція, а також її складність. Зазвичай складність вказується у термінах"висока", "середня", "низька". Ця інформація потрібна проектувальнику бази даних для оцінки транзакцій бази даних загалом. Кількість транзакцій тій чи іншій складності впливає тимчасово проектування фізичної моделі бази даних - що більше у базі даних транзакцій високої складності, то більше вписувалося час проектування фізичної моделі . Складність транзакції є умовною мірою трудомісткості роботи проектувальника бази даних при досягненні вимог продуктивності бази даних.
Висока складність зазвичай приписується транзакції, яка має дві з наступних характеристик:
- містить від 8 до 10 команд SQL;
- містить пропозицію WHERE з великою кількістю предикатів;
- містить пропозицію WHERE з більш ніж трьома з'єднаннями чи під запитами;
- обробляє більш ніж 100 рядків.
Низька складність приписується транзакції з наступними характеристиками:
- містить до трьох команд SQL;
- містить пропозицію WHERE з одним або двома предикатами;
- обробляє менш ніж 25 рядків.
Транзакція із середньою складністю має характеристики між нижньою та високою складністю.
приклад. Специфікація транзакції
Продовжуючи наведений вище приклад, можемо вказати таке:
Характер транзакції: онлайн транзакція.
Обсяг транзакції (Transaction volume statistics) зазвичай включає два параметри: середню частоту транзакції (наприклад, 50 тр./год) і пікову частоту транзакції (наприклад, 70 тр./год). Оцінка частотних характеристик транзакцій бази даних дуже важлива для проектування фізичної моделі бази даних: налаштування фізичної структури бази даних для транзакцій з високою частотою істотно відрізняється від її налаштування для транзакції з низькою частотою використання.
Для модернізації існуючих систем інформація про частоти транзакцій може бути подана у вхідній документації на основі аналізу статистики експлуатації системи. А ось для новостворених баз даних таку інформацію отримати практично неможливо, і доводиться користуватися приблизними оцінками.
Специфікація транзакції повинна включати вимоги щодо продуктивності транзакції. Продуктивність бази даних загалом складається з продуктивності кожної транзакції окремо та його розподілу у часі. Це дуже важлива інформація для проектувальника даних при вирішенні завдання налаштування фізичної структури бази даних. Якщо проектувальник бази даних немає такої інформації, він може вирішити завдання досягнення продуктивності шляхом підбору відповідних конструкцій бази даних. Вимоги щодо продуктивності зазвичай задаються як параметра час реакції, тобто. кількості секунд, потрібних для виконання транзакції. Наприклад, у багатьох банківських системах транзакція для зняття грошей з рахунку клієнта має займати більше 5 секунд.
Іншою формою завдання вимоги на продуктивність транзакцій бази даних є зазначення їх характеру та складності. Наприклад:
- онлайнові транзакції високої складності мають виконуватися не більше 15 с;
- онлайнові транзакції середньої складності повинні виконуватися трохи більше 7 з;
- онлайнові транзакції низької складності повинні виконуватися трохи більше 4 з;
- пакетні транзакції високої складності повинні виконуватися трохи більше 1 години;
- пакетні транзакції середньої складності повинні виконуватися трохи більше 0,5 години;
- пакетні транзакції низької складності мають виконуватися не більше 15 хв.
У якій формі проектувальник бази даних отримаєвимоги на продуктивність транзакцій, сказати складно. Буде дуже добре, якщо він їх узагалі отримає. Це є одним із найвужчих місць, як у вихідній документації, так і в проектуванні фізичної моделі. На практиці проектувальники баз даних "відпускають" базу даних у дослідну експлуатацію таким чином, щоб отримати тимчасові характеристики виконання транзакцій та задовольнити вимоги щодо продуктивності в рамках вирішення завдань зворотного впливу.
Бажано у специфікації транзакції вказати її відносний пріоритет, який показує, наскільки важливою є справжня транзакція для предметної області порівняно з іншими. Відносний пріоритет транзакції дозволяє проектувальнику бази даних згрупувати транзакції за цим параметром, що дасть змогу послідовно оцінити всі транзакції бази даних та їх внесок у продуктивність бази даних.
Далі в процесі створення фізичної моделі даних проектувальник бази даних налаштовуватиме фізичну структуру так, щоб кожна окремо виконувалася швидше. Виконання будь-якої транзакції у базі даних із великим пріоритетом негативно позначається на продуктивності інших транзакцій. Ранжування транзакцій щодо відносного пріоритету дозволяє збалансувати вплив транзакцій один на одного в базі даних в цілому.
Завдання пріоритету транзакцій може мати різні форми. Зазвичай така дія зводиться до суб'єктивної оцінки як числа від 1 до 10.
Кожна специфікація транзакції повинна містити команди SQL, які визначають операції з базою даних. Вказівка команд SQL у тих створення фізичної моделі бази даних дозволяють оцінити час виконання транзакцій ( execution time ), тобто. фактична кількість секунд, необхідна для завершеннятранзакції у режимі експлуатації бази даних. Для проектувальника бази даних цей параметр є важливим ще й з точки зору розробки специфікацій модулів додатків бази даних для розробників додатків.
Приклад. Продовжуючи наш приклад, можна скласти таку таблицю.