Інвертовані списки

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

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

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

І нарешті, на третьому рівні знаходиться власне основний файл.

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

На рис. 9.11 представлений приклад інвертованого списку, складеного для вторинного ключа «Номе]) групи у списку студентів деякого навчального закладу. Для наочнішого уявлення ми обмежили розмір блоку п'ятьма записами (цілими числами).

записів

Мал. 9.11.Побудова інвертованого списку за номером групи для списку студентів

Для одного основного файлу може бути створено кілька інвертованих списків різних вторинних ключів.

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

При модифікації основного файлу відбувається така послідовність дій:

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

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

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

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