Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ИОСУ Ч.1 _2016.docx
Скачиваний:
2
Добавлен:
31.01.2024
Размер:
2.97 Mб
Скачать

6. Организация доступа прикладной программы 178

к серверу базы данных 178

6.1 Общие сведения 178

6.2 Использование специализированных библиотек и встраиваемого SQL 180

6.3 CLI – интерфейс уровня вызовов 182

6.4 ODBC – открытый интерфейс к БД на платформе MS Windows 183

6.5 JDBC - интерфейс к базам данных на платформе Java 183

6.6 Прикладные интерфейсы OLE DB и ADO 185

Литература 187

1. Введение. Представление данных в памяти компьютера

1.1 Предмет дисциплины и ее задачи

Предметом изучения дисциплины «Информационное обеспечение систем управления» (ИОСУ) являются модели представления данных и, созданные на их основе, системы управления базами данных (СУБД).

Цель изучения данного курса – получение и систематизация знаний об основных идеях и методах создания реляционных и постреляционных СУБД

Основными задачами являются: приобретение студентом знаний о способах хранения данных в памяти компьютера и методах доступа к ним, о методах проектирования реляционных моделей данных, об использовании CASE-технологий при разработке приложений; приобретение навыков самостоятельной работы при создании концептуальных и логических моделей данных, при разработке физических моделей и управлению базой данных (БД) в среде СУБД Microsoft Access, а также изучение структурированного языка запросов (SQL), процедурного языка программирования PL/SQL и СУБД Oracle.

Дисциплина ИОСУ связана с курсом «Основы алгоритмизации и программирования» и предполагает наличие у студентов опыта программирования на объектно-ориентированных языках программирования третьего поколения (С++, Visual C, ASP.net, Java и др.)

В результате освоения курса «Информационное обеспечение систем управления» инженер по специальности «Информационные технологии и управление в технических системах» должен знать:

- структуру представления данных в памяти ЭВМ, методы доступа к данным и методы обеспечения целостности данных;

- состав и классификацию информационных систем, информационного обеспечения, моделей БД, СУБД и современные тенденции их развития;

- теорию реляционных БД, современные методы создания их проектирования;

- принципы построения и реализации операторов SQL, их стандартный синтаксис;

- инструменты и средства разработки клиентских приложений, использующих реляционные БД;

- современное состояние систем управления производственной информацией.

уметь:

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

- создавать диаграммы потоков данных и диаграммы «сущность-связь»;

- создавать реляционные модели БД;

приобрести навыки:

- создания физических моделей реляционных БД в конкретной среде разработки;

- работы с информационным обеспечением систем управления под управлением СУБД Microsoft Ассеss и Oracle.

1.2 Основные понятия

Информация (от лат. informatio − осведомление, разъяснение, изложение) − в широком смысле абстрактное понятие, имеющее множество значений, в зависимости от контекста. В узком смысле слова − это сведения (сообщения, данные) независимо от формы их представления. В настоящее время не существует единого определения термина информация. С точки зрения различных областей знания, данное понятие описывается своим специфическим набором признаков.

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

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

Основные виды информации по форме представления и способам кодирования и хранения − это графическая или изобразительная; звуковая; текстовая; числовая; видеоинформация.

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

Информационное обеспечение в широком смысле имеет три значения:

1) обеспечение фактическими данными управленческих структур;

2) использование информационных данных для автоматизированных систем управления (АСУ);

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

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

Вторым важным направлением ИО является формирование информационных данных для автоматизированных систем управления. Вводимая в БД АСУ информация является необходимым элементом работы всей системы, без которой невозможно ее математическое, техническое, организационно-правовое функционирование. Информация, вводимая в систему, ее предмашинная обработка − основа современных автоматизированных информационных систем (АИС).

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

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

ИО информационных систем (ИС) является средством для решения следующих задач:

  • однозначного и экономичного представления информации в системе (на основе кодирования объектов);

  • организации процедур анализа и обработки информации с учетом характера связей между объектами (на основе классификации объектов);

  • организации взаимодействия пользователей с системой (на основе экранных форм ввода-вывода данных);

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

ИО ИС включает два комплекса: внемашинное информационное обеспечение (классификаторы технико-экономической информации, документы, методические инструктивные материалы) и внутримашинное информационное обеспечение (макеты/экранные формы для ввода первичных данных в ЭВМ или вывода результатной информации, структуры информационной базы: входных, выходных файлов, базы данных).

К ИО предъявляются следующие общие требования:

  • ИО должно быть достаточным для поддержания всех автоматизируемых функций объекта;

  • для кодирования информации должны использоваться принятые у заказчика классификаторы;

  • для кодирования входной и выходной информации, которая используется на высшем уровне управления, должны быть использованы классификаторы этого уровня;

  • должна быть обеспечена совместимость с ИО систем, взаимодействующих с разрабатываемой системой;

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

  • структура документов и экранных форм должна соответствовать характеристикам терминалов на рабочих местах конечных пользователей;

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

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

Основными источниками информации для ИО служат:

  • информационно-справочная информация;

  • отчетные формы документов;

  • информация вышестоящих органов;

  • бухгалтерская информация.

Сбор первичных данных может осуществляться централизовано в виде печатных или электронных документов, которые вводят и сохраняют на автоматизированном рабочем месте (АРМ) ИС, а также может осуществляться на местах возникновения с последующей передачей по каналам связи в центральное хранилище.

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

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

Другими словами ИС требует создания в памяти ЭВМ динамически обновляемой модели внешнего мира с использованием единого хранилища – базы данных.

Общую структуру ИС можно рассматривать как совокупность подсистем независимо от сферы применения. В этом случае говорят о структурном признаке классификации, а подсистемы называют обеспечивающими. Таким образом, структура любой ИС может быть представлена совокупностью обеспечивающих подсистем (рис. 1).

Рис. 1 Структура ИС

ИС можно классифицировать по целому ряду различных признаков [1]. В основу рассматриваемой классификации положены наиболее существенные признаки, определяющие функциональные возможности и особенности построения современных ИС (рис. 2).

Рис. 2. Классификация информационных систем

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

По степени автоматизации информационных процессов ИС делятся на ручные, автоматические и автоматизированные.

Ручные ИС характеризуются отсутствием технических средств переработки информации и выполнением всех рутинных операций человеком.

В автоматических ИС все операции по обработке информации выполняются без участия человека.

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

В зависимости от характера обработки данных ИС делятся на информационно-поисковые и информационно-решающие.

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

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

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

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

В зависимости от сферы применения различают:

  • ИС организационного управления, которые предназначены для автоматизации функций управленческого персонала, как промышленных предприятий, так и непромышленных объектов (гостиниц, банков, магазинов и др.).

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

  • ИС управления технологическими процессами (АСУ ТП) − служат для автоматизации функций производственного персонала по контролю и управлению производственными операциями. В таких системах обычно предусматривается наличие развитых средств измерения параметров ТП (температуры, давления, химического состава и т.п.), процедур контроля допустимости значений параметров и регулирования ТП.

  • ИС автоматизированного проектирования (САПР) − предназначены для автоматизации функций инженеров-проектировщиков, конструкторов, архитекторов, дизайнеров при создании новой техники или технологии. Основными функциями подобных систем являются: инженерные расчеты, создание графической документации (чертежей, схем, планов), создание проектной документации, моделирование проектируемых объектов.

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

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

База данных − это организованная в соответствии с определёнными правилами и поддерживаемая в памяти компьютера совокупность данных, характеризующая актуальное состояние некоторой предметной области и используемая для удовлетворения информационных потребностей пользователей [2].

База данных – это совместно используемый набор логически связанных данных (и описание этих данных), предназначенный для удовлетворения информационных потребностей организации [3].

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

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

  • БД хранится и обрабатывается в вычислительной системе. Таким образом, любые некомпьютерные хранилища информации (архивы, библиотеки, картотеки и т. п.) БД не являются.

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

  • БД всегда включает метаданные, описывающие логическую структуру самой БД в формальном виде (в соответствии с некоторой моделью).

Существует огромное количество разновидностей БД, отличающихся по различным критериям. Например, в [2] определяются свыше 50 видов БД.

Рассмотрим самые важные для изучаемого курса признаки классификации.

В зависимости от модели данных различают следующие БД и СУБД:

  • иерархические;

  • сетевые;

  • реляционные;

  • объектно-реляционные;

  • объектно-ориентированные (объектные);

  • NoSQL БД «ключ-значение»;

  • NoSQL документо-ориентированные БД;

  • NoSQL колоночные БД;

  • NoSQL графовые БД.

Иногда иерархические и сетевые модели данных называют дореляционными, а объектно-реляционные и объектно-ориентированные – постреляционными.

Существует классификация БД по технологии хранения данных в памяти компьютера:

  • БД во вторичной памяти (традиционные);

  • БД в оперативной памяти (in-memory databases);

  • БД в третичной памяти (tertiary databases).

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

По степени распределённости хранимых данных различают: централизованные (сосредоточенные) и распределённые БД.

По характеру содержимого БД бывают: географические, исторические, научные, мультимедийные и т.д.

Важно различать понятия БД и система управления базами данных (СУБД).

СУБД – это специализированная программа (комплекс программ), предназначенная для организации и ведения БД.

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

1. управление данными во внешней памяти;

2. управление буферами оперативной памяти;

3. управление транзакциями;

4. журнализация;

5. поддержка языков БД.

Перечисленные функции являются базовыми для любой СУБД, рассмотрим их более подробно.

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

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

Отметим, что существует отдельное направление в развитии СУБД, которое ориентировано на постоянное присутствие в оперативной памяти всей БД. Оно основано на условии, что объем оперативной памяти компьютеров настолько велик, что позволяет не беспокоиться о буферизации.

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

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

С управлением транзакциями в многопользовательском режиме работы связаны понятия сериализации транзакций и сериального плана выполнения смеси транзакций.

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

В реляционных базах данных общепринятыми являются требования ACID. Акроним ACID – это стандартный набор свойств, которые гарантируют надежность транзакции, где аtomicity - атомарность, consistency - консистентность, isolation - изолированность, durability – надежность/стойкость.

Требования ACID были в основном сформулированы в конце 70-х годов Джимом Греем. Джим Грей известный ученый в области теории вычислительных систем, работал в Bell Labs, в IBM, где внёс большой вклад в разработку системы управления базами данных IBM System R, в Tandem Computers, а также в Digital Equipment Corporation (DEC). С 1995 и до своего исчезновения в 2007 году Грей работал в исследовательском центре Microsoft в Сан-Франциско.

Atomicity ‒ это атомарность, которая гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной. Поскольку на практике невозможно одновременно и атомарно выполнить всю последовательность операций внутри транзакции, вводится понятие «отката» (rollback): если транзакцию не удаётся полностью завершить, результаты всех её до сих пор произведённых действий будут отменены и система вернётся во «внешне исходное» состояние ‒ со стороны будет казаться, что транзакции и не было.

Consistency ‒ согласованность. Транзакция, достигающая своего нормального завершения (EOT — end of transaction, завершение транзакции) и, тем самым, фиксирующая свои результаты, сохраняет согласованность базы данных. Другими словами, каждая успешная транзакция по определению фиксирует только допустимые результаты. Это условие является необходимым для поддержки четвёртого свойства.

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

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

Isolation ‒ изолированность. Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат. Изолированность ‒ требование дорогое, поэтому в реальных БД существуют режимы, не полностью изолирующие транзакцию (уровни изолированности Repeatable Read и ниже).

Durability ‒ долговечность (надежность). Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу. Другими словами, если пользователь получил подтверждение от системы, что транзакция выполнена, он может быть уверен, что сделанные им изменения не будут отменены из-за какого-либо сбоя.

В базах данных, следующих принципу ACID, данные остаются целостными и консистентными, несмотря на любые ошибки.

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

Примерами программных сбоев могут быть: аварийное завершение работы СУБД (по причине ошибки в программе или в результате некоторого аппаратного сбоя) или аварийное завершение пользовательской программы, в результате чего некоторая транзакция остается незавершенной.

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

Журнал – это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью (иногда существуют две копии журнала, располагаемые на разных физических дисках), в которую поступают записи обо всех изменениях основной части БД. Во всех случаях придерживается стратегия "упреждающей" записи в журнал (протокол Write Ahead Log – WAL). Эта стратегия заключается в том, что запись об изменении любого объекта БД должна попасть во внешнюю память журнала раньше, чем сам измененный объект попадет во внешнюю память основной части БД. Таким образом, если в СУБД корректно соблюдается протокол WAL, то с помощью журнала можно решить все проблемы восстановления БД практически после любого сбоя.

Поддержка языков БД. Для работы с БД используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков, таких как язык определения схемы данных (DDL  – Data Definition Language) и язык манипулирования данными (DML – Data Manipulation Language).

В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и заканчивая обеспечением базового пользовательского интерфейса. Стандартным языком реляционных СУБД является язык SQL (Structured Query Language). SQL сочетает средства DDL и DML, т.е. позволяет определять схему реляционной БД и манипулировать данными. Язык SQL содержит также операторы для определения ограничений целостности БД, позволяет создавать представления, фактически являющиеся хранимыми в БД запросами, индексы, домены, синонимы, последовательности и другие, хранимые в схеме пользователя, объекты. Кроме этого, позволяет решать вопросы авторизации доступа к объектам БД и выделения полномочий (привилегий) на работу с ними, управляет работой транзакций – эти специальные средства иногда определяют как третью составную часть SQL (в дополнение к DDL и DML) и называют языком управления данными (DCL - Data Control Language)[4].

Соседние файлы в предмете Информационное обеспечение систем управления