39. Typy indeksowania w hurtowniach danych. (duzo, przeczytac raz i zrozumiec powinno wystarczyc. To jest proste.) Po co inne niŝ B-Tree? Bo B-Tree w hurtowniach danych jest zbyt mało efektywny. Oprócz materializowanych perspektyw i przepisywania zapytań, do optymalizacji zapytań analitycznych stosuje się róŝnego rodzaju specjalizowane struktury indeksowe. Najczęściej stosowanymi w praktyce są: indeksy połączeniowe, indeksy bitmapowe i bitmapowe indeksy połączeniowe.
Indeks połączeniowy (ang. join index) łączy z sobą rekordy z róŝnych tabel posiadające tę samą wartość atrybutu połączeniowego, jest więc strukturą zawierającą zmaterializowane połączenie wielu tabel. Indeks taki posiada strukturę B drzewa zbudowanego na atrybucie połączeniowym tabeli (bądź na wielu takich atrybutach). Liście indeksu zawierają wspólne wartości atrybutu połączeniowego tabel wraz z listami adresów rekordów w kaŝdej z łączonych tabel. Slajd przedstawia strukturę indeksu połączeniowego zdefiniowanego na atrybucie sklep_id tabeli Sklepy. W tym przypadku, liście indeksu zawierają: - wskaźniki do rekordów opisujących kaŝdy ze sklepów - adresy wszystkich rekordów z tabeli SprzedaŜ opisujących sprzedaŝ danego sklepu. W przykładzie liść z wartością indeksowanego atrybutu sklep_id równą 1010 zawiera wskaźnik do rekordu w tabeli Sklepy opisującego sklep o tym numerze i listę wskaźników do rekordów tabeli SprzedaŜ opisujących sprzedaŝ w sklepie o numerze 1010. Ten przykładowy indeks przyspiesza wyszukiwanie danych na temat sprzedaŝy wskazanego sklepu.
Ideą indeksu bitmapowego (ang. bitmap index) jest wykorzystanie pojedynczych bitów do zapamiętania informacji o tym, Ŝe dana wartość atrybutu występuje w określonym rekordzie tabeli. Dla kaŝdej unikalnej wartości atrybutu jest przechowywana tablica bitów, zwana mapą bitową. KaŜdy bit mapy odpowiada jednemu rekordowy w tabeli R bit pierwszy odpowiada pierwszemu rekordowi w tabeli R, bit drugi drugiemu rekordowi itp. Dla mapy A = zielony bit n przyjmuje wartość jeden, jeśli wartością atrybutu A rekordu o numerze n jest zielony. W przeciwnym przypadku bit n przyjmuje wartość zero.
Liczba bitów mapy bitowej odpowiada liczbie rekordów tabeli R. Indeks bitmapowy jest zbiorem map bitowych dla wszystkich unikalnych wartości danego atrybutu. Indeks tego typu (w zaleŝności od implementacji) moŝe równieŝ posiadać strukturę B drzewa, w którego liściach zamiast adresów rekordów są przechowywane mapy bitowe.
Przykład indeksu bitmapowego dla atrybutu typ przedstawiono na slajdzie. PoniewaŜ atrybut typ moŝe przyjąć jedną z czterech wartości, tj. 'coupe', 'limuzyna', 'sedan', 'sport', więc indeks bitmapowy składa się z czterech map - po jednej mapie dla kaŝdej wartości. Przykładowo, pierwszy bit mapy bitowej opisującej samochody 'coupe' przyjmuje wartość 0. Oznacza to, Ŝe wartością atrybutu typ pierwszego rekordu nie jest 'coupe'. Drugi bit tej mapy przyjmuje wartość 1, co oznacza, Ŝe wartością atrybutu typ drugiego rekordu jest 'coupe'.
Bitmapowy indeks połączeniowy (ang. bitmap join index) łączy w sobie koncepcję indeksu połączeniowego i bitmapowego. Na slajdzie przedstawiono przykład koncepcji bitmapowego indeksu połączeniowego zdefiniowanego na atrybucie kategoria tabeli Produkty. PoniewaŜ atrybut ten przyjmuje dwie róŝne wartości (kosmetyki, alkohole), więc indeks będzie się składał z dwóch map bitowych. KaŜda z map będzie opisywała rekordy z tabeli SprzedaŜ. Mapa o nazwie 'kosmetyki' będzie opisywała sprzedaŝ kosmetyków, a mapa 'alkohole' - sprzedaŝ alkoholi. Pierwszy bit mapy 'kosmetyki' przyjmuje wartość 1, co oznacza, Ŝe pierwszy rekord w tabeli SprzedaŜ dotyczy kosmetyku. Drugi bit tej mapy przyjmuje równieŝ wartość 1, co równieŝ oznacza, Ŝe drugi rekord tabeli SprzedaŜ dotyczy kosmetyku. Podobnie jest w przypadku bitu 3 i 6 mapy 'kosmetyki'. Implementacyjnie, bitmapowy indeks połączeniowy posiada strukturę B-drzewa, w którego liściach znajdują się mapy bitowe opisujące łączone rekordy.
40. Reguły Codda dotyczące OLAP. Multidimensional conceptual view. OLAP operates with CUBEs of data that represent multidimensional construct of data. Event though the name implies three dimensional data, the number of possible dimensions is practically unlimited. Transparency. OLAP systems should be part of an open system that supports heterogeneous data sources. Accessibility. The OLAP should present the user with a single logical schema of the data. Consistent reporting performance. Performance should not degrade as the number of dimensions in the model increases. Client/server architecture. Should be based on open, modular systems. Generic dimensionality. Not limited to 3-D and not biased toward any particular dimension. A function applied to one dimension should also be able to be applied to another. Dynamic sparse-matrix handling. Related both to the idea of nulls in relational databases and to the notion of compressing large files, a sparse matrix is one in which not every cell contains data. OLAP systems should accommodate varying storage and data-handling options. Multiuser support. OLAP systems should support more than one user at the time. Unrestricted cross-dimensional operations. Similar to rule of generic dimensionality; all dimensions are created equal, and operations across data dimensions should not restrict relationships between cells. Intuitive data manipulation. Ideally, users shouldn't have to use menus or perform complex multiple-step operations when an intuitive drag-and-drop action will do. Flexible reporting. Save a tree. Users should be able to print just what they need, and any changes to the underlying financial model should be automatically reflected in reports. Unlimited dimensional and aggregation levels. The OLAP cube can be built with unlimited dimensions, and aggregation of the contained data also does not have practical limits.