- •Билет № 36
- •Системный анализ и системный подход. Пять принципов системного подхода. Методология проведения исследований на базе системного подхода.
- •Ключи. Неопределенность значений атрибутов в ключах.
- •Понятие интерфейса. Язык описания интерфейсов idl (midl).
- •Критерии оценки надежных компьютерных систем. Оранжевая книга.
- •Алгоритм исключения станции из сети ArcNet.
- •Билет № 37
- •Общая структурная схема информационной поисковой системы. Компоненты информационной поисковой системы. Словарь информационно-поисковой системы.
- •Olap и oltp системы, хранилище данных.
- •Структура информационных ресурсов и соответствующих законодательных актов.
- •Типичные схемы построения многосегментных lan.
- •Билет № 43
- •Общая классификация систем. Классификация по степени организованности.
- •Нормальные формы. Общая классификация. Пример построения.
- •Признаки сложных систем согласно общей теории систем. Примеры систем (выделить в них признаки).
- •Определение классов и типов испд.
- •Обеспечение надежной доставки данных. Метод скользящего окна
Olap и oltp системы, хранилище данных.
Первоначально в теории БД была сформирована концепция
OLTP (On-Line Transaction Processing) систем или систем оперативной обработки транзакций. Эти системы предназначены для решения задач сбора, хранения и поиска оперативных данных. Они используются в повседневной деятельности предприятия.
Обычно в таких системах предусмотрено архивирование данных, которые обычно уже не используются. Так, например, данные о студентах, которые уже завершили свое обучение.
Но для выполнения полного анализа деятельности организации, определения ее деловых показателей и тенденций их изменения необходимо иметь доступ не только к текущим данным, но и к ранее накопленным. Для упрощения подобного анализа Коддом была разработана концепция хранилища данных (data warehouse).
Хранилище данных – предметно-ориентированный, интегрированный, неизменчивый, поддерживающий хронологию набор данных, организованный для целей поддержки принятия решений. Попросту говоря, хранилище данных – это глобальный репозиторий, предназначенный для хранения сводных данных по всему предприятию в целом. Предполагается, что такое хранилище может содержать сведения, поступающие из самых разных источников данных, а также различные накопительные и сводные данные.
Хранилище оперативных данных (Operational Data Store — ODS) представляет собой репозитарий для текущих и интегрированных оперативных данных, применяемых при анализе. Чаще всего оно структурируется и заполняется данными по такому же принципу≫ как и обычное хранилище данных, но фактически применяется просто как область накопления данных перед их передачей в обычное хранилище. Это что-то среднее между хранилищем и реляционной БД.
Однако лицам, ответственным за принятие корпоративных решений, необходимо иметь мощные инструменты анализа накопленных данных. Основными средствами анализа в последние годы стали инструменты оперативной аналитической обработки (On-Line Analytical Processing — OLAP) и инструменты разработки данных (data mining).
OLAP – технология оперативной аналитической обработки данных, использующая методы и средства для сбора, хранения и анализа многомерных данных в целях поддержки процессов принятия решений. Основное назначение OLAP систем – поддержка аналитичекой деятельности, произвольных запросов пользователей-аналитиков. Целью является помощь в генерации и проверке возникающих гипотез.
Соглашения по преобразованию (приведению) типов данных в языке 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).