Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

билет 4

.pdf
Скачиваний:
6
Добавлен:
12.04.2015
Размер:
855.59 Кб
Скачать

памятью, разделение БД по файлам и устройствам, методов доступа к данным), создание индексов и т.д.

Интеграция баз данных

Слияние нескольких баз данных в проект базы данных в Visual Studio 2010

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

Импорт объектов из нескольких баз данных

Перед импортом объектов из нескольких баз данных следует рассмотреть следующие дополнительные вопросы.

Файл и файловые группы

По умолчанию импортируются все файлы и файловые группы, определенные для каждой базы данных в проекте базы данных.Если эти файлы импортировать не нужно, следует указать, что при импорте остальных объектов их необходимо пропустить.Например, можно импортировать файлы и файловые группы только из первой базы данных, из которой импортируются объекты.

Конфликты имен

При импорте объекта базы данных с таким же именем, как у объекта, который уже импортирован, существующий объект перезаписывается.Для сохранения обоих объектов перед импортом второго объекта следует переименовать хотя бы один из них.

Полнотекстовые каталоги

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

Общие задачи

Дополнительные сведения о проектах базы данных. Здесь можно узнать об основных концепциях управления изменениями схемы с помощью проектов базы данных.

Создание проекта базы данных и импорт объектов и параметров из первой базы данных. Разработчик может создать проект, настроить его параметры и импортировать схему с помощью мастера.Кроме того, если требуется импортировать объекты позже или если отсутствует разрешение на доступ к первой базе данных, из которой будут импортированы объекты, можно создать пустой проект.

Слияние других баз данных в проекте. Схему последующей базы данных-источника можно сравнить со схемой проекта базы данных.Для всех объектов, которые импортировать не нужно, и уже импортированных объектов следует указать, что при импорте остальных объектов их необходимо пропускать, а не удалять или обновлять.Для объектов, которые подлежат импорту, следует указать, что они должны обновляться.Этот процесс нужно повторить для каждой базы данных, подлежащей слиянию в проекте.

Обновление планов создания данных. Если с одной или несколькими базами данных, подлежащими слиянию, связаны планы создания данных, эти планы можно добавить в проект.После добавления каждый план нужно открыть для синхронизации с обновленной схемой базы данных.Можно также создать план создания данных для комбинированной базы данных.

Обновление модульных тестов базы данных. При наличии существующих модульных тестов для подлежащей слиянию базы данных следует обновить конфигурацию этих тестов для обеспечения правильности используемой строки подключения.Можно также обновить схему базы данных и план создания данных для конфигурации.

Размещение схемы базы данных в системе управления версиями.После импорта всех объектов и параметров и обновления плана создания данных можно добавить решение в систему управления версиями, чтобы оно стало доступным для участников группы.

В самом общем виде под интеграцией баз данных (БД) понимается их соединение путем единого представления, включая возможности извлечения информации по запросу пользователя. Интеграция означает поддержку данных из неоднородных источников, позволяя решить множество проблем: различия в моделях данных,

структурную и семантическую неоднородность, различия в методах доступа и пр. При распространении методов интеграции на сферу науки наиболее удачным оказался выбор тематики свойства вещества в качестве предметной области. С одной стороны, создание фондов численных данных по свойствам веществ и материалов издавна является одним из ключевых результатов естественнонаучных исследований, что определяет спрос на соответствующие технологии. С другой стороны, по самому генезису эти данные наилучшим образом соответствуют типовым концепциям БД, что делает проблему их интеграции относительно прозрачной. Ключевым является принятое допущение о достаточном уровне интеграции. Например, простейшее решение – консолидация ресурсов на уровне интерфейса без логической или семантической связи, наиболее дешевый и доступный в реализации способ их интеграции. Близок к этому способу и другой – интеграция на уровне внешних ссылок, когда в БД вводятся дополнительные поля, хранящие гиперссылки на другие БД. Оба способа, облегчая работу в неоднородной среде, исключают построение структурированных запросов, или применение аналитических приложений. Для этих целей требуется более глубокий уровень интеграции, включающий согласование структуры и семантики БД, при общей информационной модели и словаре основных понятий.

В качестве интегрирующей модели данных уже давно используется стандарт XML. В отличие от HTML, он создан для описания, а не отображения данных, адекватно передавая их структуру и семантику. После преобразования неоднородных данных в формат XML-документа, последний становится доступным для различных типов программных средств. Во множестве дисциплин появились собственные версии XML со своими словарями, средствами поддержки в виде настраиваемых браузеров и программ, реализующих графические представления, вычислительные сервисы и проч [1]. Созданы десятки таких версий, из которых, по крайней мере, две (ThermoML иMatML) оказались достаточно успешны при распространении и обмене данными по свойствам в термодинамике и материаловедении. В определенной степени этот успех связан с тем, что ключевые данные в обеих областях имеют относительно простую структуру: объекту с характерным для него именем (или набором имен) приписывается некоторый набор свойств в виде констант или одномерных таблиц.

Несмотря на возможности XML как стандарта при обмене научными данными, эта технология далека от того уровня интеграции, который был «задуман» в

концепции Semantic WEB [7]. Задача Semantic WEB – внедрить в интернет-страницы описания, которые понятны компьютерам, что в перспективе и обеспечит самый глубокий уровень семантической интеграции. Концепция базировалась на технологиях, которые позволяли раздельно представлять синтаксис и семантику документа. На момент публикации были созданы язык XML и система описания ресурсов (Resource Description Framework, RDF). Язык XML позволяет создавать свои собственные тэги, снабжающие документы произвольной структурой. Ее синтаксис выражается посредством RDF, который кодирует структуру с помощью множества триплетов, каждый из которых формализует утверждение о том, что нечто имеет определённое отношение с некоторым определённым значением. Подлинным ядром Semantic Web является онтология - система понятий предметной области, которая представлена как набор сущностей, соединенных различными отношениями. Именно онтология представляет знания в виде формальной структуры, доступной для компьютерной обработки. С помощью OWL

(Web Ontology Language) эксперты предметной области могут создавать, модифицировать и соединять различные онтологии. При этом язык OWL строится на основании RDF, который сам по себе строится на синтаксисе XML. RDF и OWL дают возможность создавать классы, свойства и отдельные экземпляры. Таким образом,

технология Semantic Web обеспечивает интеграцию ресурсов в виде онтологии предметной области, задача которой описать концепции и соотношения среди концепций.

Распределённые базы данных (РБД) — совокупность логически взаимосвязанных баз данных, распределённых в компьютерной сети.

РБД состоит из набора узлов, связанных коммуникационной сетью, в которой:

каждый узел — это полноценная СУБД сама по себе; узлы взаимодействуют между собой таким образом, что пользователь любого из

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

Каждый узел сам по себе является системой базы данных. Любой пользователь может выполнить операции над данными на своём локальном узле точно так же, как если бы этот узел вовсе не входил в распределённую систему. Распределённую систему баз данных можно рассматривать как партнёрство между отдельными локальными СУБД на отдельных локальных узлах.

Фундаментальный принцип создания распределённых баз данных («правило 0»): Для пользователя распределённая система должна выглядеть так же, как нераспределённая система.

Фундаментальный принцип имеет следствием определённые дополнительные правила или цели. Таких целей всего двенадцать:

Локальная независимость. Узлы в распределённой системе должны быть независимы, или автономны. Локальная независимость означает, что все операции на узле контролируются этим узлом.

Отсутствие опоры на центральный узел. Локальная независимость предполагает, что все узлы в распределённой системе должны рассматриваться как равные. Поэтому не должно быть никаких обращений к «центральному» или «главному» узлу с целью получения некоторого централизованного сервиса.

Непрерывное функционирование. Распределённые системы должны предоставлять более высокую степень надёжности и доступности.

Независимость от расположения. Пользователи не должны знать, где именно данные хранятся физически и должны поступать так, как если бы все данные хранились на их собственном локальном узле.

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

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

Обработка распределённых запросов. Суть в том, что для запроса может потребоваться обращение к нескольким узлам. В такой системе может быть много возможных способов пересылки данных, позволяющих выполнить рассматриваемый запрос.

Управление распределёнными транзакциями. Существует 2 главных аспекта управления транзакциями: управление восстановлением и управление параллельностью обработки. Что касается управления восстановлением, то чтобы обеспечить атомарность транзакции в распределённой среде, система должна гарантировать, что все множество относящихся к данной транзакции агентов (агент — процесс, который выполняется для данной

транзакции на отдельном узле) или зафиксировало свои результаты, или выполнило откат. Что касается управления параллельностью, то оно в большинстве распределённых систем базируется на механизме блокирования, точно так, как и в нераспределённых системах.

Аппаратная независимость. Желательно иметь возможность запускать одну и ту же СУБД на различных аппаратных платформах и, более того, добиться, чтобы различные машины участвовали в работе распределённой системы как равноправные партнёры.

Независимость от операционной системы. Возможность функционирования СУБД под различными операционными системами.

Независимость от сети. Возможность поддерживать много принципиально различных узлов, отличающихся оборудованием и операционными системами, а также ряд типов различных коммуникационных сетей.Независимость от типа СУБД. Необходимо, чтобы экземпляры СУБД на различных узлах все вместе поддерживали один и тот же интерфейс, и совсем необязательно, чтобы это были копии одной и той же версии СУБД.

Типы распределённых баз данных

Распределённые базы данных Мультибазы данных с глобальной схемой. Система мультибаз данных — это

распределённая система, которая служит внешним интерфейсом для доступа ко множеству локальных СУБД или структурируется, как глобальный уровень над локальными СУБД.

Федеративные базы данных. В отличие от мультибаз не располагают глобальной схемой, к которой обращаются все приложения. Вместо этого поддерживается локальная схема импорта-экспорта данных. На каждом узле поддерживается частичная глобальная схема, описывающая информацию тех удалённых источников, данные с которых необходимы для функционирования. Мультибазы с общим языком доступа — распределённые среды управления с технологией «клиент-сервер»

Вопрос 3

Абстрактные методы. Методы класса.

(или чистый виртуальный метод (pure virtual method - часто неверно переводится как чисто виртуальный метод)) — в объектно-ориентированном программировании, метод класса, реализация для которого отсутствует. Класс, содержащий абстрактные методы, также принято называть абстрактным(там же и пример). Абстрактные методы зачастую путают с виртуальными. Абстрактный метод подлежит определению в классах-наследниках, поэтому его можно отнести к виртуальным, но не каждый виртуальный метод является абстрактным.

Назначение

Абстрактный метод ничего не делает, но определяет параметры и возвращаемое значение. Назначение абстрактных методов:

описание абстракции, которая не в более конкретизированном виде не может быть реализована;

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

Примеры

С#

abstract type method_name(params);//определение в родительском классе

override method_name(params){...};//определение в дочернем классе

C++

virtual void Abstr ( void ) = 0; // Чистая (пустая) виртуальная функция.

Delphi

procedure AbstractProcedure; abstract;

Метод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту.

Как и процедура в процедурном программировании, метод состоит из некоторого количества операторов для выполнения какого-то действия, имеет набор входных аргументов и возвращаемое значение.

Различают простые методы и статические методы (методы класса):

простые методы имеют доступ к данным объекта (конкретного экземпляра данного класса),

статические методы не имеют доступа к данным объекта и для их использования не нужно создавать экземпляры (данного класса).

Методы/данные класса и объекта класса

Свойство: ОО языки обычно разрешают заводить методы и данные, относящиеся к классу целиком, а не к отдельным объектам. Метод класса обычно может быть вызван как для объекта класса, так и применён к классу в целом. Данные класса не повторяются для каждого объекта, а разделяются между всеми объектами данного типа.

C++: В C++ методы и данные класса отмечаются ключевым словом static. Данные класса должны быть проинициализированы специальным объявлением, ещё одной уступкой отсутствию модулей.

OP: В OP допустимы только методы класса, которые отмечаются словом class. Данные класса можно заменить, так сказать, приватными глобальными переменными в секции исполнения юнита, описывающего класс.

Java: Java использует то же слово, что и C++, static. Статические методы используются очень часто (и даже слишком) из-за отсутствия глобальных функций. Статические данные можно инициализировать прямо в объявлении класса.

C#: Также, как и в C++ и Java, используется ключевое слово static. Кроме того, можно отметить как статический целый класс, что запрещает создание его объектов и определение нестатических членов.

Статические члены классов и статические методы в С#

Статическим методом называется метод с модификатором static. Разница между обычным методом класса и таким состоит в том, что метод с static модификатором может быть вызван без создания какого-либо объекта класса.

Отличия static - методов от обычных:

1.Методы с модификатором static не имеют ссылки this.

2.Метод с модификатором static, может непосредственно( без указания имени объекта ) вызывать только другой статический метод.

3.Метод с модификатором static имеет только прямой доступ к static - данным.

Служебное слово static позволяет создавать статические члены и статические методы класса. Статические члены являются общими для всех экземпляров класса. Статические

методы предназначены для обращения к статическим членам класса.

Действие, которое можно выполнить над данными, определяет метод. Он представляет собой подпрограмму. Различают методы класса иметоды объекта. Последние могут применяться к любому объекту класса. Методы класса, называемые также статическими методами, не зависят от отдельного экземпляра, они применяются к целому классу как к отдельному объекту.

Для создания объектов применяются специальные статические методы,

называемые конструкторами.

Для корректного удаления объектов используются специальные методы,

называемые деструкторами.

Общее понятие исключительной ситуации

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

Целочисленное деление на ноль. Результата у операции быть не может, поэтому ни дальнейшие вычисления, ни попытка использования результата деления не приведут к решению задачи.

Ошибка при попытке считать данные с внешнего устройства. Если данные не удаётся ввести, любые дальнейшие запланированные операции с ними бессмысленны. Исчерпание доступной памяти. Если в какой-то момент система оказывается не в состоянии выделить достаточный для прикладной программы объём оперативной памяти, программа не сможет работать нормально.

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

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

Этот механизм успешно работает даже тогда, когда исключительную ситуацию генерирует вызываемая подпрограмма, а обрабатывает вызывающая. В итоге удается отделить смысловую часть алгоритмов от обработчиков ошибок; программа становится более простой, понятной и отказоустойчивой.

Пример. Для практической реализации механизма обработки исключительных ситуаций в Object Pascal введены специальные языковые конструкции try…except…end, try…finally…end и оператор raise.

Виды исключительных ситуаций

Исключительные ситуации, возникающие при работе программы, можно разделить на два основных типа: синхронные и асинхронные, принципы реакции на которые существенно различаются.

Синхронные исключения могут возникнуть только в определённых, заранее известных точках программы. Так, ошибка чтения файла или коммуникационного канала, нехватка памяти — типичные синхронные исключения, так как возникают они только в операции чтения из файла или из канала или в операции выделения памяти соответственно.

Асинхронные исключения могут возникать в любой момент времени и не зависят от того, какую конкретно инструкцию программы выполняет система. Типичные примеры таких исключений: аварийный отказ питания или поступление новых данных.

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

(англ. exception handling) — механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы и приводят к невозможности (бессмысленности) дальнейшей отработки программой её базового алгоритма. В русском языке также применяется более короткая форма термина: «обработка исключений».

Синтаксис обработки исключительных ситуаций

Теперь, когда мы рассмотрели, что такое исключительные ситуации, давайте дадим ясную картину, как они применяются. Новое ключевое слово, добавленное в язык Object Pascal - try. Оно используется для обозначения первой части защищенного участка кода. Существует два типа защищенных участков:

try..except try..finally

Первый тип используется для обработки исключительных ситуаций. Его синтаксис:

try

Statement 1;

Statement 2;

...

except

on Exception1 do Statement; on Exception2 do Statement;

...

else

Statements; {default exception-handler} end;

Для уверенности в том, что ресурсы, занятые вашим приложением, освободятся в любом случае, Вы можете использовать конструкцию второго типа. Код, расположенный в части finally, выполняется в любом случае, даже если возникает исключительная ситуация. Соответствующий синтаксис:

try Statement1; Statement2;

...

finally

Statements; { These statements always execute } end;

Примеры обработки исключительных ситуаций

Ниже приведены процедуры A,B и C, обсуждавшиеся ранее, воплощенные в новом синтаксисе Object Pascal:

type

ESampleError = class(Exception); var

ErrorCondition: Boolean; procedure C;

begin writeln('Enter C');

if (ErrorCondition) then begin

writeln('Raising exception in C'); raise ESampleError.Create('Error!');

end; writeln('Exit C');

end; procedure B; begin

writeln('enter B'); C;

writeln('exit B'); end;

procedure A; begin

writeln('Enter A'); try

writeln('Enter A''s try block'); B;

writeln('After B call'); except

on ESampleError do

writeln('Inside A''s ESampleError handler'); on ESomethingElse do

writeln('Inside A''s ESomethingElse handler'); end;

writeln('Exit A'); end;

begin

writeln('begin main'); ErrorCondition := True; A;

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