ндексації, які дозволять підвищити швидкість завантаження даних і отримання інформації.
Для оптимізації роботи гиперкуба необхідно визначити те, які завдання необхідно вирішувати в першочерговому порядку, і за якими критеріями нам треба домагатися підвищення якості роботи. Головним для нас є підвищення швидкості роботи програми, при цьому бажано, щоб був потрібний не дуже великий обсяг оперативної пам'яті. Підвищення швидкодії можливо за рахунок введення додаткових механізмів доступу до даних, наприклад, введення індексування. На жаль, це підвищує накладні витрати оперативної пам'яті. Тому визначимо, які операції нам необхідно виконувати з найбільшою швидкістю. Для цього розглянемо окремі компоненти, що реалізують гиперкуб. Ці компоненти мають два основних типи - вимірювання і таблиця фактів. Для вимірювання типової завданням буде:
додавання нового значення;
визначення координати за значенням виміру;
визначення значення по координаті.
При додаванні нового значення елемента нам необхідно перевірити, чи є у нас вже таке значення, і якщо є, то не додавати нове, а використовувати наявну координату, в іншому випадку необхідно додати новий елемент і визначити його координату . Для цього необхідний спосіб швидкого пошуку наявності потрібного елемента (крім того, така задача виникає і при визначенні координати за значенням елемента). Для цього оптимальним буде використання хеширование. При цьому оптимальною структурою буде використання хеш-дерев, в яких будемо зберігати посилання на елементи. При цьому елементами будуть рядки словника вимірювання. Тоді структуру значення вимірювання можна представити таким чином:
PFactLink=^ TFactLink;=record: integer;// Індекс факту в таблиці
Next: PFactLink;// Посилання на наступний елемент
End;=record: string;// Значення вимірювання
Index: integer;// Значення координати: PFactLink;// Покажчик на початок списку елементів таблиці фактів;
І в хеш-дереві будемо зберігати посилання на унікальні елементи. Крім того, нам необхідно вирішити завдання зворотного перетворення - по координаті визначити значення вимірювання. Для забезпе?? Ення максимальної продуктивності треба використовувати пряму адресацію. Тому можна використовувати ще один масив, індекс в якому є координатою вимірювання, а значення - посилання на відповідний запис у словнику. Однак можна поступити простіше (і заощадити при цьому на пам'яті), якщо відповідним чином впорядкувати масив елементів так, щоб індекс елемента і був його координатою.
Організація ж масиву, що реалізує список фактів, не представляє особливих проблем зважаючи на його простої структури. Єдине зауваження буде таке, що бажано розраховувати всі способи агрегації, які можуть знадобитися, і які можна розраховувати інкрементного (наприклад, сума).
3.3 Побудова зрізів куба
Отже, ми описали спосіб зберігання даних у вигляді гиперкуба. Він дозволяє сформувати набір точок в багатовимірному просторі на основі інформації, що знаходиться в сховищі даних. Для того, щоб людина могла мати можливість роботи з цими даними, їх необхідно представити у вигляді, зручному для обробки. При цьому в якості основних видів представл...