SQL Server Integration Services

реклама
Получение реляционной схемы из ER-схемы
•
•
•
•
•
Шаг 1. Каждая простая сущность превращается в таблицу. Простая сущность сущность, не являющаяся подтипом и не имеющая подтипов. Имя сущности
становится именем таблицы.
Шаг 2. Каждый атрибут становится возможным столбцом с тем же именем;
может выбираться более точный формат. Столбцы, соответствующие
необязательным атрибутам, могут содержать неопределенные значения;
столбцы, соответствующие обязательным атрибутам, - не могут.
Шаг 3. Компоненты уникального идентификатора сущности превращаются в
первичный ключ таблицы. Если имеется несколько возможных уникальных
идентификатора, выбирается наиболее используемый. Если в состав
уникального идентификатора входят связи, к числу столбцов первичного
ключа добавляется копия уникального идентификатора сущности,
находящейся на дальнем конце связи (этот процесс может продолжаться
рекурсивно). Для именования этих столбцов используются имена концов
связей и/или имена сущностей.
Шаг 4. Связи многие-к-одному (и один-к-одному) становятся внешними
ключами. Т.е. делается копия уникального идентификатора с конца связи
"один", и соответствующие столбцы составляют внешний ключ.
Необязательные связи соответствуют столбцам, допускающим
неопределенные значения; обязательные связи - столбцам, не допускающим
неопределенные значения.
Шаг 5. Индексы создаются для первичного ключа (уникальный индекс),
внешних ключей и тех атрибутов, на которых предполагается в основном
базировать запросы.
•
•
•
•
•
Шаг 6. Если в концептуальной схеме присутствовали подтипы, то возможны два способа:
все подтипы в одной таблице (а)
для каждого подтипа - отдельная таблица (б)
При применении способа (а) таблица создается для наиболее внешнего супертипа, а для
подтипов могут создаваться представления. В таблицу добавляется по крайней мере один
столбец, содержащий код ТИПА; он становится частью первичного ключа.
При использовании метода (б) для каждого подтипа первого уровня (для более нижних представления) супертип воссоздается с помощью представления UNION (из всех таблиц
подтипов выбираются общие столбцы - столбцы супертипа).
Всеводнойтаблице
Таблица- наподтип
П
реимущ
ест
ва
Всехранитсявместе
Болееясныправилаподтипов
Легкий доступ к супертипу и
П
рограммыработаю
ттолькос
подтипам
нуж
нымитаблицами
Требуетсяменьш
етаблиц
Н
едост
ат
ки
Слиш
комобщ
еереш
ение
Требуется дополнительная логика
Слиш
коммноготаблиц
работы с разными наборами столбцов и
Смущ
аю
щ
ие
столбцы
в
разнымиограничениями
представленииU
NIO
N
П
отенциальное узкое место(в связис
П
отенциальная
потеря
блокировками)
производительности при работе
Столбцы подтипов долж
ны быть
через U
N
IO
N
необязательными
Н
ад супертипом невозможны
В некоторых СУБД для хранения
модификации
неопределенных
значений
требуется
дополнительнаяпамять
•
•
•
•
Шаг 7. Имеется два способа работы при наличии исключающих связей:
общий домен (а)
явные внешние ключи (б)
Если остающиеся внешние ключи все в одном домене, т.е. имеют общий формат
(способ (а)), то создаются два столбца: идентификатор связи и идентификатор
сущности. Столбец идентификатора связи используется для различения связей,
покрываемых дугой исключения. Столбец идентификатора сущности используется
для хранения значений уникального идентификатора сущности на дальнем конце
соответствующей связи.
• Если результирующие внешние ключи не относятся к одному домену, то для каждой
связи, покрываемой дугой исключения, создаются явные столбцы внешних ключей;
все эти столбцы могут содержать неопределенные значения.
Общийдомен
Явныевнешниеключи
Преимущества
Нужнотолькодвастолбца
Условиясоединения- явные
Недостатки
Оба дополнительных атрибута должны
Слишкоммногостолбцов
использоватьсявсоединениях
Концептуальные и физические ER-модели
На данной диаграмме каждая сущность представляет собой таблицу базы
данных, каждый атрибут становится колонкой соответствующей таблицы.
Обращаем внимание на то, что во многих таблицах, например,
"CUST_DETAIL" и "PROD_IN_SKLAD", соответствующих сущностям "Запись
списка накладной" и "Товар на складе", появились новые атрибуты, которых
не было в концептуальной модели - это ключевые атрибуты родительских
таблиц, мигрировавших в дочерние таблицы для того, чтобы обеспечить
связь между таблицами посредством внешних ключей.
Легко заметить, что полученные таблицы сразу находятся в 3НФ.
Microsoft SQL Server
— система управления реляционными базами данных (СУБД),
разработанная корпорацией Microsoft. Основной используемый язык
запросов — Transact-SQL, создан совместно Microsoft и Sybase. TransactSQL является реализацией стандарта ANSI/ISO по структурированному
языку запросов (SQL) с расширениями. Используется для небольших и
средних по размеру баз данных, и в последние 5 лет — для крупных баз
данных масштаба предприятия, конкурирует с другими СУБД в этом
сегменте рынка.
Релизы
*1992 — SQL Server 4.2
*1993 — SQL Server 4.21 под Windows NT
*1995 — SQL Server 6.0, кодовое название "SQL95 "
*1996 — SQL Server 6.5, к.н. "Hydra "
*1999 — SQL Server 7.0, к.н. "Sphinx "
*1999 — SQL Server 7.0 OLAP, к.н. "Plato "
*2000 — SQL Server 2000 32-bit, к.н. "Shiloh " (версия 8.0)
*2003 — SQL Server 2000 64-bit, к.н. "Liberty "
*2005 — SQL Server 2005, к.н "Yukon " (версия 9.0)
*2008 — SQL Server 2008, к.н. "Katmai " (версия 10.0)
Версии SQL Server 2005
* Enterprise Edition
* Standard Edition
* Workgroup Edition
* Developer Edition
* Express Edition
* Mobile Edition
* Desktop Ediion
Физическая архитектура базы данных
Экземпляр Microsoft SQL Server включает в себя системные базы данных (master, model,
msdb, tempdb), содержащие служебную информацию, и пользовательские базы данных.
Каждая база данных размещается в отдельных файлах – минимум двух: один для самой
базы данных – файл данных (mdf-файл), и один для журнала транзакций (ldf-файл).
Первый файл данных (mdf-файл) является основным и кроме самих данных содержит
системную информацию, второй и все последующие файлы данных являются вторичными
(ndf-файлами) и содержат непосредственно сами данные.
Основной единицей хранения данных является страница. SQL Server выполняет чтение
и запись данных постранично. Вся база данных логически подразделена на страницы,
нумеруемые начиная с 0. Размер страницы составляет 8 Кбайт (128 страниц на один
мегабайт)
Для более эффективного управления страницами они объединяются в экстенты – по 8
страниц в экстенте. Экстенты могут быть двух типов:
•
mixed – страницы, входящие в такой экстент могут принадлежать разным объектам;
uniform- экстент содержит станицы, принадлежащие одному объекту
Системная информация о странице хранится в заголовке, под который
отводится первые 96 байт. Эта информация содержит номер страницы, тип
страницы, количество свободного пространства, и ID объекта, владеющего
страницей. В конце каждой страницы располагается таблица смещения
строк.
SQL Server использует в файлах данных следующие типы страниц:
•
Data- страница содержит строки всех данных за исключением данных типа text, ntext,
image, nvarchar(max), varchar(max), varbinary(max) и xml-данных;
•
Index
- страница содержит информацию о индексах;.
•
Text/Image
страница для хранения:
следующих типов LOB-объектов:
o text, ntext, image, nvarchar(max), varchar(max), varbinary(max) и xml-данных;
столбцов переменной длины, чей размер строки превышает 8 KB:
o varchar, nvarchar, varbinary и sql_variant
•
Global Allocation Map - страница данного типа содержит информацию об
используемости экстентов (на одной странице хранятся данные об используемости 64000
экстентов);
•
Shared Global Allocation Map
- страница данного типа содержит информацию об
используемости экстентов типа Mixed;
•
Page Free Space
- страница содержит информацию о количестве свободного
пространства на странице;
•
Index Allocation Map - страница содержит данные, какие экстенты имеют страницы,
принадлежащие одному объекту-владельцу;
•
Bulk Changed Map
- страница содержит информацию об экстентах, измененных
посредством набора операций, выполненных после последней операции копирования базы
данных (BACKUP LOG);
•
Differential Changed Map
- страница содержит информацию об экстентах,
измененных с момента последней операции копирования базы данных (BACKUP DATABASE).
Таблицы и индексы хранятся как наборы страниц. Таблица может быть
подразделена на одно или несколько разбиений (partitions), содержащих строки.
Разбиение таблицы определяет пользователь при ее создании.
Таблицы SQL Server 2005 используют для организации их страниц данных
в разбиении один из следующих двух методов:
•
Кластерные таблицы (для которых создан кластерный индекс,
требующий физического перестроения данных в соответствии со структурой
индекса);
•
Кучи (Heaps) – таблицы, не имеющие кластерного индекса.
Индексы в SQL Server организованы в виде В-деревьев. Каждая страница в
индексном В-дереве называется индексным узлом (index node). В вершине Вдерева расположен корневой узел (root node). В нижней части дерева
располагаются индексные узлы, называемые листья (leaf nodes). Между вершиной
дерева и листьями располагаются промежуточные уровни (intermediate levels).
Каждая строка индекса содержит ключевое значение и указатель или на страницу
промежуточного уровня в В-дереве, или на данные, расположенные в нижнем
уровне дерева (leaf level).
Доступ к таблицам, не имеющим кластерных индексов, выполняется
посредством последовательного просмотра IAM-страниц с целью нахождения
экстентов, содержащих станицы, относящиеся к данной куче.
Следующий рисунок иллюстрирует процесс извлечения строк данных таблицы
машиной баз данных Database Engine.
Некластерные индексы имеют структуру В-дерева подобно кластерным индексам, за
исключением следующих различий:
•
строки данных таблицы являются не упорядоченными и хранятся в порядке, основанном
на их некластерном ключе;
•
leaf- уровень некластерного индекса состоит из индексных страниц, а не страниц
данных.
Каждая строка индекса в некластерном индексе содержит некластерное ключевое
значение и локатор строки (row locator). Если таблица не содержит кластерного индекса,
то локатор строки является указателем строки, в противном случае – ключом кластерного
индекса для данной строки. Указатель строки (ROWID) содержит ID-файла, номер
страницы, номер строки на странице
Компоненты SQL Server 2005
Analysis
Services
Full-Text Search
Replicati
on
SQL Server
Integration
Services
Relational
Database
Engine
.NET
CLR
Native HTTP
Support
Notification
Services
Reporting
Services
Service Broker
Relational Database Engine – это ядро SQL Server, использующее .NET.
Analysis Services – службы для анализа данных, поддерживают OLAP.
SQL Server Integration Services (SSIS) – средства для создания решений импорта и экспорта данных и
выполнения трансформирования данных при передаче.
Notifiations Services – службы оповещения.
Reporting Services – службы для создания и публикации отчетов.
Service Broker – механизм, основанный на очереди, для связывания различных служб приложений.
Native HTTP Support – встроенная поддержка HTTP. Позволяет отвечать на запросы HTTP без IIS.
SQL Server Agent – автоматизирует обслуживание БД и управляет задачами, событиями и оповещениями.
Replication – ряд средств для копирования и распространения данных и объектов БД из одной БД в
другую и синхронизации между БД для поддержания соответствия.
Full-Text Search – средство эффективного поиска в БД.
Microsoft SQL Server 2005. Объекты базы данных
Логически данные в базе данных хранятся в виде объектов базы данных. Объекты
данных хранятся в схеме базы данных. SQL Server предоставляет следующие
объекты данных:
• таблицы;
• представления;
• синонимы;
• индексы;
• хранимые процедуры;
• триггеры;
• пользовательские типы данных;
• функции пользователя;
• ключи, обеспечивающие ссылочную целостность;
• ограничения целостности;
• умолчания
• правила (используются для обратной совместимости)
К объектам базы данных также относятся схемы, пользователи и роли.
В SQL Server введены новые объекты, используемые Service Broker:
• типы сообщений (структура сообщения, отправляемого от одного сервиса
другому),
• контракты (соглашения между двумя сервисами),
• очереди (сообщения, направленные сервису),
• сервисы (наборы задач, где каждая задача представляется контрактом),
сервисные программы.
Новые инструменты для администраторов и разработчиков БД
SQL Server Management Studio, позволяет управлять серверами БД, Analysis Services и серверами Reporting
Services.
SQL Server 2005 предоставляет 4 средства для разработки:
•
SQL Server Management Studio;
•
Business Intelligence Development Studio;
•
sqlcmd;
•
Дизайнеры Visual Studio.
SQL Server Management Studio в разработке может использоваться для графического создания БД или для
создания, выполнения и сохранения скриптов.
Business Intelligence Development Studio используется для создания решений Analysis Services.
Sqlcmd – новая утилита командной строки для замены isql и osql, предоставляет дополнительную
функциональность.
SQL Server 2005 расширяет среду Visual Studio для облегчения конструирования отчетов.
Безопасность SQL Server 2005
Основные принципы безопасности остались теми же. Имеются пользователи, принципалы
(principals), защищаемые объекты (securables) и разрешения или полномочия (permissions),
описывающие права принципалов на проведение тех или иных действий над защищаемыми
объектами.
Безопасность реализована на трех уровнях: операционной системы Windows, SQL Server и базы
данных (database). Разделение принципалов и защищаемых объектов по трем уровням
безопасности показано на рисунке.
Разрешения (GRANT, REVOKE, DENY) и основные действия над объектами также показаны на
рисунке
Средства разработки SQL Server 2005
Для разработчиков БД расширен Transact SQL, встроена поддержка XML, появились
службы обмена сообщениями, оповещений и отчетов, встроена поддержка HTTP,
проведена интеграция с Common Language Runtime (CLR), созданы так называемые
объекты управления SQL (SQL Management Objects – SMO), имеется возможность
обработки структурированных исключений.
В Transact SQL введены новые типы данных, структурированная обработка
исключений, общие табличные выражения и функции ранжирования.
Можно использовать тип данных xml для хранения в БД данных в формате XML и
обработки этих данных как XML (X-Query).
CLR интегрирована в ядро SQL Server, что позволяет создавать хранимые
процедуры, функции, триггеры и типы данных, написанные на языках .NET.
Объекты SMO предоставляют управляемый программный интерфейс для
написания скриптов административных задач. Это позволяет разработчикам
создавать административные решения, используя основанные на COM и .NET
языки программирования.
Архитектура MySQL
Движок БД - что это такое?
•
Если немного упростить понятия, то база данных — это обертка вокруг движка хранения данных. Она
занимается приемом запросов и управлением ими, кэшированием и прочими обслуживающими
функциями, обеспечивая работу с низкоуровневым API движка. Последний, в свою очередь,
собственно и хранит данные (на диске или в памяти), работает с операционной системой и
обеспечивает выдачу нужных выборок по запросу от сервера. Если раньше СУБД (связка "сервер +
движок") была монолитная, то теперь во всех системах используется структура с плагинами. Движок в
такой организации является просто модулем, а сам сервер не зависит от системы хранения данных. В
последних редакциях классического MySQL также используется плагинная архитектура. Поэтому
встроенный движок InnoDB (правда, обычно устаревшей версии) можно легко заменить на модуль
другого проекта, который часто будет лучше. В альтернативных MySQL разработках, в том числе
MariaDB или Drizzle, все движки изначально выполнены как плагины. Попробуем кратко пробежаться
по современным движкам хранения данных в MySQL-совместимых СУБД.
•
InnoDB - основной движок для MySQL, который с версии 5.5 наконец-то сделали дефолтным.
Поддерживает транзакции, репликацию, построчную блокировку. Достаточно устойчив к сбоям.
•
MyISAM - очень проблемный движок, плохо переносящий крах сервера. Не поддерживает транзакции,
но зато может похвастаться полнотекстовыми индексами и быстротой работы. Долгое время был
стандартным для всех версий MySQL, а потому до сих пор является самым популярным.
•
Aria - (ранее называлась Maria Engine или просто Maria) замена для MyISAM с поддержкой транзакций
и улучшенной работой с памятью. Движок гарантирует целостность данных и при этом не уступает в
скорости MyISAM.
•
CVS - специализированный движок на случай, когда требуется хранить и обрабатывать большие
массивы строковых данных, разделяемых запятой.
•
Federated/FederatedX - этот движок специализируется на прозрачном разнесении данных по
нескольким серверам (физическим) на уровне таблицы.
•
PBXT - призванный заменить InnoDB новый движок, в котором реализованы полная поддержка
транзакций, многоверсионность, автоматическая обработка дедлоков. Движок оптимизирован для
большого количества одновременных транзакций.
•
•
•
•
•
•
•
•
•
Blackhole - служебный движок, представляющий собой, по сути, /dev/null для
СУБД и фактически не производящий никаких записей на диск. Используется
для репликации.
Archive - движок, который максимально быстро работает на запись.
Используется в тех случаях, когда необходимо хостить большие массивы
данных. Для эффективности хранения используется сжатие, что приводит к
медлительности во время выборок. Движок хорошо подходит для
долговременного хранения логов и другой служебной информации.
XtraDB - расширенная и исправленная в некоторых проблемных местах InnoDB
от компании Percona.
MERGE - схожий с Federated движок для разнесения данных в одной таблице
на несколько разных.
MEMORY - движок, использующийся для хранения данных не на диске, а в
памяти. Информация из базы доступна только во время работы сервера, но это
дает колоссальный прирост в производительности.
BlitzDB - еще одна замена для MyISAM с хорошей производительностью за счет
встроенного построчного кэширования и автоматического восстановления
после сбоев. Движок не поддерживает транзакции.
NDB - движок для кластера, обладающий, впрочем, кучей проблем и
удручающе плохой производительностью.
Falcon - легендарный движок от компании MySQL AB, разрабатываемый еще со
времен Sun, когда было принято решение заменить оракловский InnoDB.
SphinxSE - полнотекстовый движок от создателя поискового сервера Sphinx.
Лучший вариант для полнотекстового поиска и индексации по правилам
русского языка. Легко оперирует терабайтами данных, обеспечивая при этом
все возможности современной БД.
• Первым проектом молодой компании
Oracle была разработка по заказу
разведчиков учетной системы,
за которую на конкурсе другие компании
запрашивали под $2 000 000, а молодой
Ларри Элисон заносчиво указал сумму
всего в
$300 000. Стоит ли говорить, что проект был
провален, зато компания получила
стартовый капитал и начала свое
восхождение.
Скачать