Початкова сторінка

Микола Жарких (Київ)

Персональний сайт

?

Ремонт дерева

Слід добре розуміти різницю між резервуванням бази даних і ремонтом дерева. Резервування бази даних має запобігти аваріям бази даних, таким як пошкодження таблиць, які роблять Смереку повністю непрацездатною. При резервуванні БД всі таблиці архівуються «як є», разом з усіма можливими логічними помилками.

Ремонт дерева полягає в пошуку логічних помилок. Для цього потрібно, щоб БД була працездатною. Для проведення ремонту слід зареєструватись в системі з правами глобального адміністратора і в персональному кабінеті клацнути посилання «Ремонт дерева».

Далі треба відзначити, які типи перевірок слід виконати і задати режим роботи – «Діагностика» чи «Ремонт». По команді «Діагностика» виконується тільки підрахунок числа пошкоджень, а команда «Ремонт» не тільки виявляє, але й виправляє виявлені пошкодження.

Пошук загублених вершин

Загубленою вважається вершина, для якої атрибут parent не дорівнює якомусь із значень поля id в таблиці nodes. Така вершина і вся її крона не буде коректно відображатись Смерекою. Ремонт полягає в тому, що загублені вершини приєднуються як дочірні до службової вершини «Звалище». Там їх можна переглянути і видалити або перемістити в потрібну позицію.

Пошук циклічних посилань

Цикл посилань (або рекурсивне посилання) утворюється, коли предківська вершина своїм атрибутом parent вказує на одну зі своїх дочірніх вершин. В найпростішому випадку вершина «У попа» має предком вершину «була собака», а вершина «була собака» має предком вершину «У попа». Циклічні посилання загрожують Смереці крахом. Ремонт полягає в тому, що ланцюжок розривається в довільному місці і примусово визначена коренева вершина приєднується до Звалища.

Відновлення порядку сортування

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

Перевірка унікальності символьних імен

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

Пошук загублених атрибутів

Загубленим вважається атрибут, для якого поле nodeid не дорівнює якомусь із значень поля id в таблиці nodes. Такий атрибут ніколи не буде використано. Швидкий ремонт полягає у видаленні всіх таких записів. Консервативний ремонт полягає у приєднанні цих атрибутів до вершини «Звалище». Там їх можна переглянути і видалити або якось використати.

Перевірка цілісності посилань

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

Інші помилки

Звалище : субдомен мусить мати тільки одне Звалище. Інші Звалища вважаються помилковими. Під час ремонту всі знайдені Звалища об’єднуються в одне. Зайві вершини видаляються.