ЗНІМКИ (невеликі відхилення від основної теми)

Тут буде доречно, кілька відхилившись від основної теми, обговорити поняття знімків (Snapshot) [101] Знімки в дійсності мають багато спільного з уявленнями, але не слід плутати ці поняття Як і уявлення, знімки – це похідні змінні відносини, але, на відміну від уявлень, знімки реальні, а не віртуальні, тобто знімки представлені в базі даних не тільки у вигляді власних визначень в термінах інших змінних відносини, а й (принаймні, концептуально) у вигляді власної матеріалізованої копії даних, наприклад, як показано нижче

VAR P2SC SNAPSHOT

( ( S JOIN SP ) WHERE P# = P# (P2) ) { S#, CITY } REFRESH EVERY DAY

Визначення знімка багато в чому подібно виконанню запиту, за винятком наступного

1 Результат виконання цього запиту зберігається в базі даних під вказаним име ньому (у наведеному вище прикладі це P2SC) як змінна відносини, доступ до якої дозволений тільки для читання (Не рахуючи операції періодичного обнов лення див пункт 2)

2 Періодично (у нашому прикладі – раз на добу, що встановлюється опцією EVERY DAY) зміст знімка оновлюється, тобто поточні дані анулюються і запит виконується повторно, після чого отриманий результат запиту запи сують в якості нового значення знімка

Таким чином, знімок P2SC завжди представляє стан даних, але на той момент часу, який відстоїть від поточного не більше як на 24 години (пропонуємо читачеві визначити самостійно, яким в такому випадку повинен бути предикат даного відносини)

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

Примітка Ця ідея стає ще привабливішим в середовищі розподілених баз даних або додатків підтримки прийняття рішень (подробиці наводяться, відповідно, в главах 21 і 22) Відзначимо також, що знімки представляють важливий окремий випадок контрольованої надмірності (Див главу 1), а процедура поновлення знімка – Це відповідний процес поширення поновлення (Знову див розділ 1)

У загальному випадку визначення знімка має наступний синтаксис

VAR &ltrelvar name&gt SNAPSHOT &ltrelation exp&gt &ltcandidate key def list&gt REFRESH EVERY &ltnow and then&gt

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

&ltnow and then&gt, який може приймати, наприклад, такі значення: MONTH (Місяць), WEEK (Тиждень), HOUR (Година), п MINUTES (n хвилин), MONDAY (понеділок), WEEKDAY (День тижня) і тп Слід особливо відзначити, що для підтримки постійної

синхронізації знімка з однією або декількома змінними відносини, на підставі яких він був створений, може використовуватися специфікація у формі REFRESH

[ON]    EVERY  UPDATE

Нижче наведено синтаксис оператора DROP, застосовуваного для видалення визначення знімка

DROP VAR  &ltrelvar name&gt   

Тут параметр &ltrelvar name&gt задає імя видаляється знімка

Примітка Мається на увазі, що операція видалення знімка завершиться невдало, якщо яка-небудь змінна відносини в даний момент посилається на видаляється знімок Альтернативним рішенням може бути розширення наведеного вище визначення знімка за рахунок включення опцій RESTRICT і CASCADE Тут ми не будемо обговорювати цю можливість

Примітка щодо термінології До часу підготовки першого видання даної книги знімки були відомі не під їх сучасною назвою, а іменувалися (фактично майже виключно) матеріалізовані представленіямі6 (див розділ Список літератури в главі 22) Однак цей термін є вкрай невдалим, і, по

6 Деякі автори (але не всі) застосовують термін матеріалізоване уявлення виключно для позначення знімків, щодо яких можна гарантувати, що вони завжди будуть залишатися актуальними (тобто для створення яких застосовується оператор REFRESH ON EVERY UPDATE)

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

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*