У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


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

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

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

Операції видалення і модифікації кортежів допускаються тільки для кортежів постійних таблиць. Природно, що для виконання цих операцій необхідно ідентифікувати відповідний кортеж. Інтерфейс RSS допускає два способи такої ідентифікації: за допомогою tid'а кортежу (явна адресація) і з використанням ідентифікатора відкритого до цього часу сканування. Перший варіант можливий, оскільки tid кортежу повідомляється як параметр у відповідь операції занесення кортежу в постійну таблицю. При ідентифікації кортежу за допомогою ідентифікатора сканування мається на увазі кортеж, прочитаний за допомогою останньої операції NEXT. Якщо при такій ідентифікації виконана операція DELETE або UPDATE, що зачіпає порядок сканування (тобто сканування ведеться по індексу і операція модифікації міняє поле кортежу, що входить до складу ключа цього індексу), те поточний кортеж скану втрачається, і його ідентифікатор не можна використати для ідентифікації кортежу до виконання наступної операції NEXT.

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

При виконанні операції DELETE проводиться корекція всіх індексів, визначених на даному відношенні. Операція UPDATE також може спричинити корекцію індексів, якщо торкається поля, що входять до складу їх ключів.

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

Відповідно, параметрами операції BUILDLIST є набір параметрів для відкриття сканування (допускається будь-який спосіб сканування), список номерів полів, що складають кортежі нового списку, і список номерів полів, по яких треба проводити сортування (як і у разі створення нового індексу, можна окремо для кожного з цих полів указати вимогу до сортування по зростанню або спаданню значень даного поля). Окремим параметром операції BUILDLIST є ознака, у відповідності зі значенням якого допускаються або не допускаються кортежі-дублікати в новому списку. Забігаючи уперед, помітимо, що допущення або недопущення дублікатів у відсортованому списку залежить від того, для яких цілей він будується. Наприклад, якщо список будується для виконання операції з'єднання, то дублікатів в ньому бути не повинне. Якщо ж список будується для обчислення агрегатних функцій (COUNT, AVG і т.д.), те дублікати з нього прибирати не можна. Більш детально ми розглянемо цей і близькі питання в зв'язку з проблемами оптимізації запитів в System R.

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

Кожна операція RSS виконується в межах деякої транзакції. Інтерфейс RSS включає набір операцій управління проходженням транзакції: почати транзакцію (BEGIN TRANSACTION), закінчити транзакцію (END TRANSACTION), встановити точку збереження (SAVE) і виконати відкат до вказаної точки збереження або до початку транзакції (RESTORE).

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

У будь-якій точці транзакції до виконання операції END TRANSACTION може бути виконаний відкат даної


Сторінки: 1 2 3 4 5 6 7 8 9 10 11 12 13 14