• Авторизация


Моделирование сложных структур средствами реляционной СУБД. Рекурсивные деревья. Проблема образования петель. 09-06-2010 11:27 к комментариям - к полной версии - понравилось!


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

Рекурсивные деревья. Наиболее общим случаем является дерево с неограниченным уровнем вложенности и неограниченным количеством потомков. Для хранения такого рода иерархии необходимо добавить в описание сущности дополнительное поле – ссылку на первичный ключ предка. (Т.е. в нашей таблице будет три столбца: ID – первичный ключ, Data – собственно данные(содержательная часть узлов дерева), Parent – ссылка на предка.) Такой способ организации иерархии является самым распространенным и универсальным. Однако ему присущи следующие недостатки: -необходимость рекурсивных запросов для получения полного пути от произвольного элемента до корня дерева; -cложность вычисления уровня вложенности произвольного элемента; -cложность получения всех (в том числе и не прямых) потомков данного узла. В данной структуре присутствует опасный недостаток – отсутствие контроля правильности ссылки на родителя. Если ссылки на родителя не верна может получиться петля, которая породит бесконечный цикл.

ПРЕИМУЩЕСТВА И НЕДОСТАТКИ РЕКУРСИВНОГО МЕТОДА

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

2)Курсоры. DECLARE CURSOR, DROP CURSOR. Операции, требующие использования курсоров.

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

Курсор в SQL – это область в памяти базы данных, которая предназначена для хранения последнего оператора SQL. Если текущий оператор – запрос к базе данных, в памяти сохраняется и строка данных запроса, называемая текущим значением, или текущей строкой курсора. Указанная область в памяти поименована и доступна для прикладных программ.

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

В соответствии со стандартом SQL при работе с курсорами можно выделить следующие основные действия: создание или объявление курсора; открытие курсора, т.е. наполнение его данными, которые сохраняются в многоуровневой памяти; выборка из курсора и изменение с его помощью строк данных; закрытие курсора, после чего он становится недоступным для пользовательских программ; освобождение курсора, т.е. удаление курсора как объекта, поскольку его закрытие необязательно освобождает ассоциированную с ним память. В разных реализациях определение курсора может иметь некоторые отличия. Так, например, иногда разработчик должен явным образом освободить выделяемую для курсора память. После освобождения курсора ассоциированная с ним память также освобождается. При этом становится возможным повторное использование его имени. В других реализациях при закрытии курсора освобождение памяти происходит неявным образом. Сразу после восстановления она становится доступной для других операций: открытие другого курсора и т.д. В некоторых случаях применение курсора неизбежно. Однако по возможности этого следует избегать и работать со стандартными командами обработки данных: SELECT, UPDATE, INSERT, DELETE. Помимо того, что курсоры не позволяют проводить операции изменения над всем объемом данных, скорость выполнения операций обработки данных посредством курсора заметно ниже, чем у стандартных средств SQL. Курсор перебирает строки. Курсор необходим для того, чтобы можно было работать с данными одной строки. Создание курсора (ORACLE).

DECLARE CURSOR c_american_pie AS SELECT Film_Title FROM Film_Table WHERE Film_Title like "American Pie%"; OPEN c_american_pie; LOOP  

FETCH c_american_pie INTO v_film_title; EXIT WHEN c_american_pie%NOT_FOUND;

END LOOP; CLOSE c_american_pie;

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

3)IBM eServer iSeries (AS/400) и OS/400 – пример архитектуры для создания высоконадёжных систем средней и малой ёмкости. Особенности организации управления памятью.

OS/400 — операционная система компании IBM. Была выпущена в 1988. C 2004 г. называется i5/OS. Представляет собой многопользовательскую операционную систему с вытесняющей многозадачностью. Характерными особенностями OS/400 являются: объектно-ориентированная архитектура, разрядность 64 бит; одноуровневая память (Single Level Storage); интегрированная СУБД DB2/400 (используется в качестве файловой системы). тесная интеграция с аппаратным обеспечением, не позволяющая устанавливать эту ОС на серверы иных производителей;

По мере того, как возникают все более сложные задачи, ИТ-профессионалам приходится обращаться к новым технологиям, чтобы обеспечить конкурентоспособность своих компаний. Для обеспечения гибкости и оперативности, эффективности и экономичности работы малых и крупных фирм в сферах традиционного и электронного бизнеса современные серверы должны обладать разнообразными возможностями, и прежде всего вычислительной мощностью, позволяющей обрабатывать огромные потоки транзакций. Эти компьютеры должны быстро реагировать на изменение внешних условий и допускать быстрое расширение с учетом новых требований. Значительные преимущества в этом случае обеспечивает тесная интеграция оборудования, операционной системы, базы данных, устройств ввода-вывода, промежуточного ПО и инструментальных средств. Основная концепция AS / 400 -- большое семейство мощных мини-компьютеров с единой архитектурой аппаратных и программных средств. Эти компьютеры представляют собой полностью законченные системы. Это означает, что все функции и возможности, обычно используемые в бизнесе, полностью интегрированы в операционную систему IBM Operating System/ 400 ( OS / 400 ). Аппаратная часть системы состоит из независимых блоков, которые взаимодействуют между собой посредством одной или нескольких системных шин. Весь ввод-вывод реализуется с помощью периферийных процессоров и не зависит от центрального процессора (полный аналог каналов ввода-вывода на мэйнфреймах).

Системы, построенные в такой архитектуре, по производительности обычно заметно превосходят компьютеры с общей шиной, в которых практически всеми действиями управляет центральный процессор. Так, в AS / 400 пропускная способность внутренних коммуникационных каналов по существу не ограничена. Перечисленные особенности архитектуры обеспечивают AS / 400 гибкость и позволяют адаптировать состав системы к условиям эксплуатации.

Концепция AS / 400 основана на нескольких фундаментальных принципах, таких как многоуровневая архитектура, объектная реализация, одноуровневая память и т. д. Необычность системы AS / 400 как машины состоит и в программном, и в аппаратном обеспечении. Команды, представляемые машинному интерфейсу, сперва подвергаются трансляции и только потом передаются аппаратным средствам. Эту трансляцию осуществляет так называемый лицензионный внутренний код (Licensed Internal Code, LIC). Другими словами, когда программа выдает машинному интерфейсу команды для выполнения, она "думает", что этот интерфейс и есть само системное оборудование. Характеристики аппаратных средств меняются с развитием технологии, однако с точки зрения пользователя машинный интерфейс остается прежним. От необходимости изменений его избавляет именно лицензионный внутренний код. В рамках платформы AS / 400 посредством копирования можно переносить программы, написанные и отлаженные на младшей модели, на все прочие компьютеры, вплоть до самого мощного. При этом перенесенная программа будет использовать все преимущества старшей модели, что достигается за счет компиляции исходных текстов не в конкретные команды процессора, а в команды независимого машинного интерфейса (Technology Independent Machine Interface, TIMI).

Все содержимое системы представлено в виде объектов. Тип и функциональность объекта определяются при его создании. Таким образом, объект сочетает в себе данные и допустимые методы его использования. Благодаря этому система может очень эффективно манипулировать объектами, определяя способ их использования в зависимости от типа объекта. Контроль допустимости действий над объектами осуществляется аппаратно. Эти особенности повышают общую целостность системы и ее данных. Вся память AS / 400 (как основная, так и дисковая) имеет единое адресное пространство. Единый, независимый от конкретного устройства механизм адресации позволяет не беспокоиться о месте расположения программы или о выделении и освобождении памяти для нее. Адресное пространство серверов AS / 400 огромно они могут адресовать весь диапазон, поддерживаемый 64-разрядной архитектурой.

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

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

Особенности архитектуры. Серверы iSeries и AS / 400 разработаны для выполнения бизнес-приложений. Одна из важнейших особенностей таких приложений - высокая интенсивность операций ввода-вывода, а не собственно вычислительных операций. Микропроцессоры, которые обслуживают специфическое устройство ввода-вывода, размещены на платах ввода-вывода, располагающихся в гнездах на системных шинах. Одна из таких плат может быть интегрированным сервером хSeries (сервер на базе Intel-архитектуры) для систем iSeries. Фактически это отдельный ПК на вставной плате, который позволяет серверу Windows NT работать на системе iSeries.

В настоящее время единая конфигурация большой системы на основе iSeries может содержать более 200 процессоров. Комплекс основного процессора системы (который объединяет до 24 отдельных процессоров) может получать запрос на считывании или запись данных в любое устройство ввода-вывода. Этот запрос делегируется специализированному микропроцессору, обслуживающему данное устройств ввода-вывода. Тем временем главный системный процессор продолжает выполнять другую прикладную программу.

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

"Горячее" подключение Возможность "горячего" подключения PCI-устройств была реализована во всех моделях iSeries серии 8xx и в некоторых моделях серии 270 с выходом в свет версии OS / 400 V4R5. Эта версия обеспечивает управление питанием для индивидуальных гнезд расширения, при этом PCI процессоры ввода-вывода или адаптеры ввода-вывода (IOA, Input Output Adapter) можно добавлять, удалять или заменять без изменения статуса активности системы. В большинстве случаев можно изменить конфигурацию адаптера ввода-вывода, оставив другие такие адаптеры в рабочем состоянии.

Логические разделы

Виртуальная консолидация нескольких машин на одном сервере может существенно повысить эффективность использования ресурсов при параллельных вычислениях, например, при выполнении бизнес-приложения одновременно с разработкой или тестированием новой системы или при обслуживании нескольких клиентов и т. п. Выделение логических разделов (LPAR, Logical PARtitioning) расширяет роль сервера iSeries как объединяющей системы.

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

 

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Моделирование сложных структур средствами реляционной СУБД. Рекурсивные деревья. Проблема образования петель. | TheLenka - Дневник Рыжей Девчонки | Лента друзей TheLenka / Полная версия Добавить в друзья Страницы: раньше»