Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БИЛЕТ 36 -37,43.doc
Скачиваний:
3
Добавлен:
04.05.2019
Размер:
303.1 Кб
Скачать
  1. Olap и oltp системы, хранилище данных.

Первоначально в теории БД была сформирована концепция

OLTP (On-Line Transaction Processing) систем или систем оперативной обработки транзакций. Эти системы предназначены для решения задач сбора, хранения и поиска оперативных данных. Они используются в повседневной деятельности предприятия.

Обычно в таких системах предусмотрено архивирование данных, которые обычно уже не используются. Так, например, данные о студентах, которые уже завершили свое обучение.

Но для выполнения полного анализа деятельности организации, определения ее деловых показателей и тенденций их изменения необходимо иметь доступ не только к текущим данным, но и к ранее накопленным. Для упрощения подобного анализа Коддом была разработана концепция хранилища данных (data warehouse).

Хранилище данных – предметно-ориентированный, интегрированный, неизменчивый, поддерживающий хронологию набор данных, организованный для целей поддержки принятия решений. Попросту говоря, хранилище данных – это глобальный репозиторий, предназначенный для хранения сводных данных по всему предприятию в целом. Предполагается, что такое хранилище может содержать сведения, поступающие из самых разных источников данных, а также различные накопительные и сводные данные.

Хранилище оперативных данных (Operational Data Store — ODS) представляет собой репозитарий для текущих и интегрированных оперативных данных, применяемых при анализе. Чаще всего оно структурируется и заполняется данными по такому же принципу≫ как и обычное хранилище данных, но фактически применяется просто как область накопления данных перед их передачей в обычное хранилище. Это что-то среднее между хранилищем и реляционной БД.

Однако лицам, ответственным за принятие корпоративных решений, необходимо иметь мощные инструменты анализа накопленных данных. Основными средствами анализа в последние годы стали инструменты оперативной аналитической обработки (On-Line Analytical Processing — OLAP) и инструменты разработки данных (data mining).

OLAP – технология оперативной аналитической обработки данных, использующая методы и средства для сбора, хранения и анализа многомерных данных в целях поддержки процессов принятия решений. Основное назначение OLAP систем – поддержка аналитичекой деятельности, произвольных запросов пользователей-аналитиков. Целью является помощь в генерации и проверке возникающих гипотез.

  1. Соглашения по преобразованию (приведению) типов данных в языке C++. Операторы const_cast, reinterpret_cast, static_cast, dynamic_cast.

С помощью механизма приведения типов можно явно преобразовывать данные одного типа в данные другого. Есть два равнозначных способа:

(имяТипа) значение // была определена еще в языке С

имяТипа (значение) // введена в С++ для сходства с вызовом функции

Оператор const_cast() используется для добавления или удаления из типа модификаторов const (и volatile). Другими словами – для устранения постоянства объекта. Например, если член-функция класса объявлена как const, она не может изменять данные в этом классе. Однако, с помощью оператора const_cast можно преобразовать ее к объекту, отличному от const и имеющему тот же тип. Это позволит член-функции const изменить данные класса:

Void f() const // член-функция класса myClass

{ Somevalue++; // запрещено

Const_cast<myClass*>(this)->SomeValue++; // можно!!}

Данный пример преобразовывает объект класса myClass в объект такого же типа, но без модификатора const в методе f().

Оператор reinterpret_cast() выполняет преобразование между указателями, их типами и числами в указатели и наоборот. Синтаксис: reinterpret_cast<Type>(Object);

Type может быть указателем, ссылкой, арифметическим типом, указателем на функцию или на число. Если существует неявное преобразование из Object в Type, то оператор работает, иначе – генерирует ошибку времени компиляции. Результат является системозависимым (то есть зависит от реализации). Пример – преобразование указателя к целому типу и наоборот:

int func(void* p)

{ Return reinterpret_cast<int>(p) }

int main()

{ int value=8;

int j=Func(reinterpret_cast<void*>(value));// 8

int j=Func(reinterpret_cast<void*>(&value)); // вернет непредсказуемый адрес (н-р, 1234567)

}

Оператор dynamic_cast() позволяет определить во время выполнения, указывает ли ссылка (или указатель) базового класса на объект указанного порожденного. Оператор можно применять только тогда, когда базовый класс является полиморфным (т.е. есть в базовом классе хотя бы одна виртуальная функция).

Синтаксис: dynamic_cast <Type> (Object)

Аргумент Type – это тип, к которому выполняется приведение. Аргумент Object – преобразуемый объект. Type должен быть указателем или ссылкой на тип определенного класса. Аргумент Object должен быть выражением для указателя или ссылки. В случае успеха dynamic_cast преобразует Object к желаемому типу. Поскольку в случае неудачного приведения ссылки возбуждается исключение bad_cast, то применение данного оператора безопаснее традиционного приведения, которое терпит неудачу и не указывает на ошибку. Использование оператора dynamic_cast также называется безопасным приведением типа. Преобразование указателя или ссылки порожденного класса в указатель или ссылку базового класса выполняется во время компиляции, а результат направляется в указатель или ссылку на подобъект базового класса. Такое преобразование называется преобразованием вверх (upcast). По аналогии обратное преобразование – преобразование вниз (downcast).

В отличие от dynamic_cast(), оператор static_cast() используется в контексте типа объекта времени компиляции (т.е. компилятору заранее известно, какой тип объекта будет преобразовываться).

Синтаксис аналогичен dynamic_cast(). И Type, и Object должны быть известны на стадии компиляции. Если существует определенный в C++ метод, обеспечивающий запрашиваемый перевод, то он будет использован (например, из float в double).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]