этому моменту ещё не завершена, её блокировка уже не будет препятствовать Моделирование - один из наиболее распространенных методов исследования процессов функционирования сложных систем. Известно достаточно большое количество методов построения математических моделей и средств реализации моделирующих алгоритмов. Наиболее распространенными из них являются системы и сети массового обслуживания. Система массового обслуживания - одна из основных моделей, используемых инженерами-системотехника>ми. Как модель СМО рассматривается в теории массового обслуживания (другое название - теория очередей). Теория массового обслуживания связана с разработкой и анализом математических, т.е. абстрактных, моделей, которые описывают процесс обслуживания некоторых объектов, поступающих на вход обслуживающего прибора в виде некоторого потока, и образующего в общем случае очередь на входе обслуживающего прибора. Поскольку рассматриваются абстрактные модели, совершенно не важна природа обслуживаемых объектов и их физические свойства (будь то вызовы, управляющие или информационные кадры в сети связи или посетители магазина, или детали на автоматической линии и т.п.). Существенным являются моменты появления этих объектов и правила, и законы (математические) их обслуживания, так как от этих моментов и законов зависит адекватное отображение эволюции моделируемого объекта во времени. Целью использования СМО как модели является анализ качества функционирования указанных систем-оригиналов. В свою очередь, СеМО используют для определения важнейших системных характеристик информационных систем: производительности; времени доставки пакетов; вероятности потери сообщений и блокировки в узлах; области допустимых значений нагрузки, при которых обеспечивается требуемое качество обслуживания и др. 2) Предложение SELECT языка SQL. Объединение UNION. Квантор существования EXIST и NOT EXIST. SELECT columns FROM tablesWHERE EXISTS (subquery); Выражение считается истинным только тогда, когда результат вычисления subquery является непустым множеством, т.е. когда существует какая-либо запись в таблице, указанной во фразе FROM подзапроса, которая удовлетворяет условию WHERE подзапроса.Например: Определить список имеющихся на складе товаров: SELECT Название FROM Товар WHERE EXISTS (SELECT КодТовара FROM Склад WHERE Товар.КодТовара=Склад.Код>Товара) Ключевые слова EXISTS и NOT EXISTS предназначены для использования только совместно с подзапросами. Результат их обработки представляет собой логическое значение TRUE или FALSE. Для ключевого слова EXISTS результат равен TRUE в том и только в том случае, если в возвращаемой подзапросом результирующей таблице присутствует хотя бы одна строка. Если результирующая таблица подзапроса пуста, результатом обработки операции EXISTS будет значение FALSE. Для ключевого слова NOT EXISTS используются правила обработки, обратные по отношению к ключевому слову EXISTS. Поскольку по ключевым словам EXISTS и NOT EXISTS проверяется лишь наличие строк в результирующей таблице подзапроса, то эта таблица может содержать произвольное количество столбцов. Определить список отсутствующих на складе товаров SELECT Название FROM Товар WHERE NOT EXISTS (SELECT КодТовара FROM Склад WHERE Товар.КодТовара=Склад.Код>Товара) ОБЪЕДИНЕНИЕ ЗАПРОСОВ UNION [SQL Statement 1] UNION [SQL Statement 2] SELECT Date FROM Store_Information UNION SELECT Date FROM Internet_Sales; Получаем: Date Jan-05-1999 Jan-07-1999 Jan-08-1999 Jan-10-1999 Jan-11-1999 Jan-12-1999 SELECT Date FROM Store_Information UNION ALL SELECT Date FROM Internet_Sales
3)Изолированность пользователей, уровни изолированности. Во многопользовательских системах с одной базой данных одновременно могут работать несколько пользователей или прикладных программ. Предельной задачей системы является обеспечение изолированности пользователей, т.е. создание достоверной и надежной иллюзии того, что каждый из пользователей работает с БД в одиночку. В связи со свойством сохранения целостности БД транзакции являются подходящими единицами изолированности пользователей. Действительно, если с каждым сеансом работы с базой данных ассоциируется транзакция, то каждый пользователь начинает работу с согласованным состоянием базы данных, т.е. с таким состоянием, в котором база данных могла бы находиться, даже если бы пользователь работал с ней в одиночку. При соблюдении обязательного требования поддержания целостности базы данных возможны следующие уровни изолированности транзакций: · Первый уровень - отсутствие потерянных изменений. Рассмотрим следующий сценарий совместного выполнения двух транзакций. Транзакция 1 изменяет объект базы данных A. До завершения транзакции 1 транзакция 2 также изменяет объект A. Транзакция 2 завершается оператором ROLLBACK (например, по причине нарушения ограничений целостности). Тогда при повторном чтении объекта A транзакция 1 не видит изменений этого объекта, произведенных ранее. Такая ситуация называется ситуацией потерянных изменений. Естественно, она противоречит требованию изолированности пользователей. Чтобы избежать такой ситуации в транзакции 1 требуется, чтобы до завершения транзакции 1 никакая другая транзакция не могла изменять объект A. Отсутствие потерянных изменений является минимальным требованием к СУБД по части синхронизации параллельно выполняемых транзакций. · Второй уровень - отсутствие чтения "грязных данных". Рассмотрим следующий сценарий совместного выполнения транзакций 1 и 2. Транзакция 1 изменяет объект базы данных A. Параллельно с этим транзакция 2 читает объект A. Поскольку операция изменения еще не завершена, транзакция 2 видит несогласованные "грязные" данные (в частности, операция транзакции 1 может быть отвернута при проверке немедленно проверяемого ограничения целостности). Это тоже не соответствует требованию изолированности пользователей (каждый пользователь начинает свою транзакцию при согласованном состоянии базы данных и в праве ожидать видеть согласованные данные). Чтобы избежать ситуации чтения "грязных" данных, до завершения транзакции 1, изменившей объект A, никакая другая транзакция не должна читать объект A (минимальным требованием является блокировка чтения объекта A до завершения операции его изменения в транзакции 1). · Третий уровень - отсутствие неповторяющихся чтений. Рассмотрим следующий сценарий. Транзакция 1 читает объект базы данных A. До завершения транзакции 1 транзакция 2 изменяет объект A и успешно завершается оператором COMMIT. Транзакция 1 повторно читает объект A и видит его измененное состояние. Чтобы избежать неповторяющихся чтений, до завершения транзакции 1 никакая другая транзакция не должна изменять объект A. В большинстве систем это является максимальным требованием к синхронизации транзакций, хотя, как мы увидим немного позже, отсутствие неповторяющихся чтений еще не гарантирует реальной изолированности пользователей. Заметим, что существует возможность обеспечения разных уровней изолированности для разных транзакций, выполняющихся в одной системе баз данных (в частности, соответствующие операторы предусмотрены в стандарте SQL 2). Как уже отмечали, для поддержания целостности достаточен первый уровень. Существует ряд приложений, для которых первого уровня достаточно (например, прикладные или системные статистические утилиты, для которых некорректность индивидуальных данных несущественна). При этом удается существенно сократить накладные расходы СУБД и повысить общую эффективность. Уровни изоляции в MS SQL Server 2000: По умолчанию, устанавливается изоляция Read Committed, и эта установка действует в рамках сеанса. Основной принцип состоит в том, что пишущая транзакция всегда блокирует читающие транзакции, если они имеют уровни изоляции выше её, исключая Read Uncommited. Когда установлен уровень Read Uncommited, пишущая транзакция не блокирует читающие, а читающие не блокируют запись. Таким образом, Вы имеете возможность составить запрос таким образом, что получите грязные данные, которые ещё не сохранены в базе данных, и этим будет нарушен принцип последовательности. Когда установлен Read Committed, прочитать можно только сохранённые данные. Но как только читающая транзакция завершит процесс чтения данных, даже если сама транзакция к этому моменту ещё не завершена, её блокировка уже не будет препятствовать изменениям в этих данных. При использовании Repeatable Read, когда в одной транзакции читаются порции данных, одни и те же данные будут считаться каждый раз, когда происходит чтение в этой транзакции. Поэтому, даже в моменты, когда чтение данных не выполняется, другие транзакции не смогут изменять данные, но они смогут осуществлять вставки новых данных в таблицу или в диапазоны данных, которые в этот момент не блокированы. Уровень Serializable идёт на шаг дальше по отношению Repeatable Read и защищает все другие блоки данных от вставок. Это называется предотвращением фантомных чтений. Серия сообщений "Базы данных": Часть 1 - Файловые системы. Назначение файловых систем. Часть 2 - Особенности орган хранения данных Часть 3 - Способы организации архивов файлов Часть 4 - СУБД ADABAS/NATURAL. Особенности. Поддерживаемые модели данных. Часть 5 - Журнализация изменений БД. Индивидуальные откаты транзакций. Часть 6 - Коллективный доступ к данным. Проблемы коллективного доступа. Часть 7 - Линейные структуры. Понятие списка. Типы списков («шина», «кольцо»). Часть 8 - Иерархии или деревья. Основные понятия и определения. Бинарные и n-арные деревья, Часть 9 - 6 Понятие сетевой организации данных. Структуры типа «звезда», объединение звёзд, полносвязная сеть, произвольный граф. Часть 10 - Предложение SELECT языка SQL. Выборка с использованием IN, вложенный SELECT. Часть 11 - Предложение UPDATE языка SQL. Обновление единственной записи. Обновление множества записей Часть 12 - Способы классификации СУБД (по поддерживаемым типам структур д-х; по типам хранимой информации; персональные и для коллективного использования; Часть 13 - Предложение SELECT языка SQL. Сортировка (ORDER BY). Группирование данных (GROUP BY, GROUP BY … HAVING). Часть 14 - СУБД, основанные на инвертированных списках (dBase, Clipper, FoxPro, Paradox). Иерархические СУБД. Сетевые Часть 15 - Права доступа к базам данных и таблицам. Предложения GRANT и REVOKE. Метки доступа. Способ организации меток доступа для Часть 16 - Гипертекст. Навигация, как способ доступа к данным. Web-интерфейсы к базам данных. XML и Web-службы (Web-Services). Часть 17 - 2)Предложение SELECT языка SQL. Объединение UNION. Квантор существования EXIST и NOT EXIST. Часть 18 - Триггеры в реляционных базах данных. Часть 19 - Способы визуализации структур данных. ER-диаграммы. Часть 20 - Общие понятия реляционного подхода к организации БД. Основные концепции и термины. Основные реляционные СУБД Часть 21 - Понятие транзакции. Средства реализации транзакций. Предложения COMMIT и ROLLBACK. Часть 22 - Моделирование сложных структур средствами реляционной СУБД. Рекурсивные деревья. Проблема образования петель. Часть 23 - Сжатие (упаковка) данных. Основы фракталов. Фрактальные методы в архивации Часть 24 - Жизненный цикл базы данных. Информационные хранилища – OLAP-технология. Часть 25 - Хранимые процедуры. Языки для написания хранимых процедур. Часть 26 - Моделирование сетевых структур с использованием вспомогательной таблицы. Часть 27 - Основные функции СУБД. Типовая организация СУБД. Жизненный цикл базы данных. Часть 28 - Кластерные и распределенные СУБД. Пример: IBM DB2 Parallel Edition, MS SQL Server и Oracle. Применение триггеров Часть 29 - Иерархическая СУБД IBM IMS и язык DL1. Особенности реализации для работы на кластере (Sysplex). Часть 30 - Технология оперативной обработки транзакций – OLTP. Мониторы транзакций на примере IBM CICS и TPF Часть 31 - Понятие сетевой организации данных. Структуры типа «звезда», Часть 32 - Основные реляционные СУБД: IBM DB2, ORACLE, MS SQL Server, Informix. Сравнение. Часть 33 - Основные положения теории массового обслуживания (теория очередей). Часть 34 - Машины баз данных. Основные архитектуры используемые в машинах баз данных. Часть 35 - Возможности явного блокирования. Предложение LOCK TABLE. Часть 36 - Проблема информационных хранилищ и складов данных. Хранение больших объёмов данных. Управление складами данных. Часть 37 - Сетевые системы (системы, реализующие сетевую модель данных). Часть 38 - 2)Понятие индекса. Предложения языка SQL CREATE INDEX и DROP INDEX. Параметр UNIQUE. Часть 39 - Иерархические СУБД. Часть 40 - Представления. Определение представления. SQL предложения CREATE VIEW и DROP VIEW. Особенности операций Часть 41 - Понятие центра обработки данных (ЦОД). Назначение ЦОД. Структура и основные технические элементы ЦОД. Часть 42 - Предложение SELECT FOR XML. Параметры RAW, AUTO, EXPLICIT. Параметр XMLDATA и его назначение. Часть 43 - Метод вспомогательной таблицы для случая произвольного графа. Отличия от случая моделирования иерархий Часть 44 - Объектно-ориентированная модель и реляционная модель. Сходство и отличия. Часть 45 - Использование «координатного» метода для моделирования иерархий и произвольных графов. Его достоинства и
|