Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Особенности текущих реализаций




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

Наиболее близкими к SystemR являлись две системы фирмы IBM - SQL/DS и DB2. Как кажется (документальных подтверждений этому автор не имеет), обе эти системы прямо использовали реализацию SystemR. Отсюда предельная близость реализованных диалектов SQL к SQLSystemR. Из SQLSystemR были удалены только те части, которые были недостаточно проработаны (например, точки сохранения) или реализация которых вызывала слишком большие технические трудности (например, ограничения целостности и триггеры). Можно назвать этот путь к коммерческой реализации SQL движением сверху вниз. Другой подход применялся в таких системах, как Oracle и Informix. Несмотря на различие в способе разработки этих систем, реализация SQL происходила "снизу вверх". В первых выпущенных на рынок реализациях SQL в этих системах использовалось минимальное и очень ограниченное подмножество SQLSystemR. В частности, в первой известной автору реализации SQL в СУБД Oracle в операторах выборки не допускалось использование вложенных подзапросов.

В текущих версиях Oracle и Informix поддерживаются достаточно мощные диалекты SQL, хотя реализация иногда вызывает сомнения.

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

Microsoft SQL Server — система управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов — Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка.

Архитектура

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

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

Сетевой доступ

Как уже упоминалось, SQL Server поддерживает весьма широкий набор сетевых протоколов. Для каждого из них поддерживается режим прямого доступа с использованием "стандартных" для каждого протокола средств (например, Sockets для TCP/IP или IPS/SPX; Named Pipes для NetBios), что дает возможность обращаться к серверу не только из среды Windows и OS/2, но и с платформ Mac и Unix. Набор компонентов, обеспечивающих доступ к серверу с клиента, называют также сетевой библиотекой (network library).

Основные компоненты

Как принято для серверных приложений Windows NT, ядро SQL Server реализовано в виде набора сервисов, для управления которыми используются административные утилиты.

Компоненты, образующие ядро SQL Server:

· собственно сервер, который может быть запущен как сервис MSSQLServer или как приложение с командной строки (Sqlservr.exe), в обоих случаях можно указать параметры запуска (через registry или в командной строке);

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

· компонент Distributed Transaction Coordinator - сервис MSDTC,

· отвечающий за выполнение распределенных транзакций;

· компонент SQL Mail, обеспечивающий интеграцию SQL Server в почтовую систему организации и позволяющий отправлять запросы и получать результаты их выполнения по почте. Для SQL Mail отдельный сервис отсутствует, так как старт почтового клиента осуществляет SQL Executive;

Создание индекса

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

В среде SQL Server реализовано несколько типов индексов:

кластерные индексы;

некластерные индексы;

уникальные индексы.

Некластерный индекс

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

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

· информацию об идентификационном номере файла, в котором хранится строка;

· идентификационный номер страницы соответствующих данных;

· номер искомой строки на соответствующей странице;

· содержимое столбца.

В большинстве случаев следует ограничиваться 4-5 индексами.

Кластерный индекс

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

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

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

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

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

При создании в таблице первичного ключа (PRIMARY KEY) сервер автоматически создает для него кластерный индекс, если его не существовало ранее или если при определении ключа не был явно указан другой тип индекса.

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

Уникальный индекс

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

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

Средства языка SQL предлагают несколько способов определения индекса:

· автоматическое создание индекса при создании первичного ключа;

· автоматическое создание индекса при определении ограничения целостности UNIQUE;

· создание индекса с помощью команды CREATE INDEX.

КОМАНДА СОЗДАНИЯ ТАБЛИЦЫ

Таблицы создаются командой CREATE TABLE. Эта команда создает пустую таблицу - таблицу без строк. Значения вводятся с помощью DML команды INSERT. Команда CREATE TABLE в основном определяет им таблицы, в виде описания набора имен столбцов указанных в определенном порядке. Она также определяет типы данных и размеры столбцов. Каждая таблица должна иметь по крайней мере один столбец.
Синтаксис команды CREATE TABLE:

CREATE TABLE <TABLE-NAME> (<COLUMN name> <DATA type>[(<SIZE>)], <COLUMN name> <DATA type> [(<SIZE>)]...);

Так как пробелы используются для разделения частей команды SQL, они не могут быть частью имени таблицы (или любого другого объекта, такого как индекс). Подчеркивание (_) - обычно используется для разделения слов в именах таблиц.
Значение аргумента размера зависит от типа данных. Если вы его не указываете, ваша система сама будет назначать значение автоматически. Для числовых значений, это - лучший выход, потому что в этом случае, все ваши пол такого типа получат один и тот же размер что освобождает вас от проблем их общей совместимости. Кроме того, использование аргумента размера с некоторыми числовым на- борами, не совсем простой вопрос. Если вам нужно хранить большие числа, вам несомненно понадобятся гарантии, что пол достаточно велики чтобы вместить их.
Один тип данных для которого вы, в основном, должны назначать размер - CHAR. Аргумент размера - это целое число которое определяет максимальное число символов которое может вместить поле. Фактически, число символов по- л может быть от нуля (если поле - NULL) до этого числа. По умолчанию, аргумент размера = 1, что означает что поле может содержать только одну букву. Это конечно не совсем то что вы хотите.
Таблицы принадлежат пользователю который их создал, и имена всех таблиц принадлежащих данному пользователю должны отличаться друга от друга, как и имена всех столбцов внутри данной таблицы. Отдельные таблицы могут использовать одинаковые имена столбцов, даже если они принадлежат одному и тому же пользователю. Примером этому - столбец city в таблице Заказчиков и в таблице Продавцов. Пользователи не являющиеся владельцами таблиц могут ссылаться к этим таблицам с помощью имени владельца этих таблиц сопровождаемого точкой; например, таблица Employees создана Smith будет называться Smith.Employees когда она упоминается каким-то другим пользователем (мы понимаем что Smith - это Идентификатор Разрешения (ID). (ID) сообщаемый пользователем (ваш разрешенный ID - это ваше им в SQL.)

Создание домена
CREATE DOMAIN <имя домена> [AS] <тип данных> [(<размер>)] [DEFAULT <значение по умолчанию>] [[<имя ограничения>] <проверка ограничения>]
[[NOT] DEFERRABLE]
[INITIALLY IMMEDIATE|DEFERRED]]
[COLLATE <имя сопоставления>]

 

10. За прошедшие десятилетия реляционная модель развивалась в двух направлениях. Первое направление заложил знаменитый экспериментальный проект компании IBM System R. В этом проекте возник язык SQL, изначально основанный на идеях Кодда (который также работал в IBM), но нарушающий некоторые принципиальные предписания реляционной модели. К настоящему времени в действующем стандарте языка SQL, по сути, специфицирована некоторая собственная, законченная модель данных.

Второе направление, начиная с 1990-х гг., возглавляет Кристофер Дейт, к которому позже примкнул Хью Дарвен. Оба этих ученых также работали в компании IBM и до 1990-х гг. внесли большой вклад в развитие языка SQL. Однако в 1990-е гг. Дейт и Дарвен пришли к выводу, что искажения реляционной модели данных, свойственные языку SQL, достигли настолько высокого уровня, что пришло время предложить альтернативу, опирающуюся на неискаженные идеи Эдгара Кодда и обеспечивающую все возможности как SQL, так и объектно-ориентированного подхода к организации баз данных и СУБД.

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

Гибридные СУБД совмещают в себе возможности реляционных и объектно-ориентированных баз данных.

Объектно-ориентированная база данных (ООБД) — база данных, в которой данные моделируются в виде объектов, их атрибутов, методов и классов

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

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

Обязательные характеристики

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

2. Поддержка индивидуальности объектов. Все объекты должны иметь уникальный идентификатор, который не зависит от значений их атрибутов.

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

4. Поддержка типов и классов. Требуется, чтобы в ООБД поддерживалась хотя бы одна концепция различия между типами и классами. (Термин «тип» более соответствует понятию абстрактного типа данных. В языках программирования переменная объявляется с указанием ее типа. Компилятор может использовать эту информацию для проверки выполняемых с переменной операций на совместимость с ее типом, что позволяет гарантировать корректность программного обеспечения. С другой стороны класс является неким шаблоном для создания объектов и предоставляет методы, которые могут применяться к этим объектам. Таким образом, понятие «класс» в большей степени относится ко времени исполнения, чем ко времени компиляции.)

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

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

7. Вычислительная полнота. Язык манипулирования данными должен быть языком программирования общего назначения.

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

Необязательные характеристики:

§ Множественное наследование

§ Проверка типов

§ Распределение

§ Проектные транзакции

Открытые характеристики:

§ Парадигмы программирования (процедурное, декларативное)

§ Система представления

§ Система типов

§ Однородность. Реализация — язык программирования — интерфейс.

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

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...