
- •Вопрос 1. Принципы индексации данных, рекомендации по выбору индексов, операторы языка sql для создания и удаления.
- •Вопрос 2. Организация и использование кластерных индексов.
- •Insert into Student (Фамилия, Имя, Отчество, №зачетки) values (‘Борисова’,’Наталья’,’Петровна’,37)
- •Вопрос 3. Организация и использование некластерных индексов
- •Вопрос 4. Планы выполнения запросов.
- •1 Operator under root – кол-во операторов дереве плана
- •1 Operator: under root – кол-во операторов дереве плана
- •6 Operator(s) under root – кол-во операторов дереве плана
- •Вопрос 6. Оптимизация запросов.
- •Вопрос 7. Абстрактные планы запросов.
- •1. Указание способа доступа
- •2. Указание порядка и способа соединения
- •3. Указание на использ-е рабочих таблиц
- •Вопрос 5. Статистика в базах данных.
- •Вопрос 8. Транзакция в бд. Операторы языка sql для управлении транзакциями.
- •Вопрос 9. Проблемы многопользовательского доступа к данным, их решение с помощью блокировок
- •1) Потеря рез-та обновления:
- •2) Зависимость от незафикс. Рез-тов:
- •3) Несовместный анализ:
- •1) Потеря рез-та обновл.:
- •2) Зависимость от незафикс. Рез-тов:
- •3) Несовместный анализ:
- •Вопрос 10.Уровни изоляции транзакции
- •Вопрос 11. Уровни схемы, и виды блокировок.
- •Вопрос 12. Конфигурирование блокировок, отчёты о блокировках
- •13. Принципы построения распределённых баз данных
- •Вопрос 14. Организация репликации с помощью среды sqlRemote
- •Вопрос 15. Схемы репликации в среде sqlRemote
- •Вопрос 16. Организация репликации c помощью ms sql Server
- •12.Активация публикации:
- •13.Созданиеподписки(наиздат. Впублик. Бд):
- •14. Запуск агентов реплик.(перед запуском след. Заполнить табл. Бд):
Вопрос 15. Схемы репликации в среде sqlRemote
Дополним БД таблицами.
create table discipline
(code int primary key,
name cahr(50) not null)
go
create table speciality
(code int primary key,
name char(50) not null)
go
create table study_plan
(code int primary key,
disc_code char(5) not null,
speciality char(7) not null references speciality on update cascade on delete restrict,
semester tinyint not null,
discipline int not null reference discipline on update cascade on delete restrict,
control car(2) not null,
unique(disc_code, speciality, semestr))
go
alter table group add speciality char(7) references speciality on update cascade on delete restrict
go
alter table group add stud_amt tinyint
go
alter table student add av_grade real
go
create table grade
(student_id not null references student(id) on update cascade on delete restrict,
code_plan int not null references study_plan(code) on update cascade on delete restrict
grade tinyint,
test bit,
data date,
primary key(student_id, code_plan))
go
При выборе схемы репликации в SQLRemote можно использовать возможности:
1.Публикация таблиц целиком
create publication publ (table faculty)
2.Публикация отдельных столбцов (вертикальная фрагментация)
create publication publ (table student(id, FIO, group))
3.Публикация отдельных строк (горизонтальная фрагментация)
create publication publ (table faculty, table group where course in(1,2), table student (id, FIO, group) where group in(select number from group where course in (1,2)))
go
4.Пусть на Гастелло БД различных факультетов ведутся раздельно в каждом деканате, соответственно, используется where. Потребуется создание 1,2,3 публикаций. Выражение подписки задаёт фильтр для отбора записей
create publication gastello (table group where course in (1,2) subscribe by (select faculty.number from faculty, group where student.group = group.number and group.faculty = faculty.number and course in (1,2)))
Кол-во подписок необходимо создать по числу факультетов:
create subscription to gastello 1234(‘4’) for node_user
go
Публикация может удаляться с помощью drop
drop publication gastello 1234
go
Публикация может изменяться с помощью alter publication
alter publication add table discipline
Схема репликации должна быть продуманной, т.к. иначе могут возникнуть ошибки целостности :
1.Если в УБД таблица содержит <столбцов чем в КБД, то отсутствующие столбцы не допускают null значений и не имеют значений по умолчанию, тогда вставка в УБД с последней репликацией в КББ приведёт к ошибке.
2.Аналогичная ситуация может возникнуть из-за внешних ключей, до alter gastelloтаблица группы имела поле специальность, но не имела ограничения внешнего ключа.
Вопрос 16. Организация репликации c помощью ms sql Server
Осн. понятия.
Издатель(publisher) – сервер и БД на нем, кот. передает д-е.
Публикация(publication) – набор объектов БД, предназнач. для репликации, м. состоять из неск. статей.
Статья (article) – объект БД, включ. в публикацию (таблица, ХП, viewetc.).
Подписчик(subscriber)– сервер и БД на нем, кот.получает реплицируемые д-е.
Подписка (subscription) указывает данные публикаций, которые долж. получить подписчики (бывет принудительная(push, инициируется издателем) и по запросу(pull, инициир. подписч.)).
Распространитель (distributor) – сервер и БД на нем, выступ.в роли посредника между издателем и подписчиком, хранит метаданные, сост. репликации, очереди и др.
Виды репликации:
1) реплик. транзакций;
2) реплик. слиянием;
3) реплик. момент. снимка.
Для реплик.транзакций свойственно пост. соед. серверов, быстрая передача д-х больших объемов, м. исп-ся БД, отличная от MSSQLServer. Для реплик.слиянием св-но большое кол-во полключ., отсутств. постоянное соед. серверов, сущ-ет возм. конфликтов и их разрешения. Реплик.момент. снимка исп-ся для первонач. синхр. д-х перед тем, как начать реплик слиянием или реплик. транз. Организоватьрепликац. можноспом. 1)мастеровSQLServerStudio; 2)SQLD(R)MO (Distributed (Replication)ManagementObject – библиотека компонент); 3)набора СХП.
Рассм. вар-т 3). Подготовка репликации:
1.Создание БД:
use master go create database main go create database node go
2.Созданиетаблиц в БД:
use main go create table…
3.Создание распространителя:
use master go
exec sp_adddistributor ‘<имя_сервера>’go
sp_helpdistributorgo (еслииздательявл. отд. сервером, то данные действия вып-ся и на нем)
4.Создание БД распр-теля:
use master go
exec sp_adddistributiondb ‘<имя_БД>’ go
sp_helpdistributiondb ‘<имя_БД>’ go
(если БД сущ-ет, то в ней созд. служ. табл. для реплик.)
5.Настр-ка издат. для распр-ния(вып-ся на сервере-дистр-ре):
sp_adddistpublisher @publisher=’AVB’, @distribution_db = ‘distr’, @working_directory=’C:\mydb’goexecsp_helpdistpublishergo
6.Настр-ка пар-ров реплик.(на изд. или подписчике):
exec sp_replicateondboption @dbname=’main’,
@optname=’publish’
go
@value=true.
@dbname – БД для репликации; @optname: mergepublish (репл. слиянием) и publish (для ост.случаев); @value: true (вкл. св-во) или false–выкл.
7.Созд. момент.снимка (на издат. в публикац. БД):
use main go
exec sp_addpublication @publication=’<имя_публикации>’, @repl_freq=’continious’, @allow_sync_tran=’true’ go
(для вывода инф. о публик. исп. sp_helppublication)
8.Созд. агента момент. снимка (на издат. в публик. БД):
use main go exec sp_addpublication_snapshot @publication=’<имя_публик.>’, @frequency_type=1 go (1-однокр.,4-ежедн.,8-еженед., ит. д.).
Если не 1, то @frequency_intervalallow задать др. пар-ры(день нед., день месяца).
9.Созд. статей (на издат. в публик. БД):
use main go sp_addarticle @publication=’<имя_публик.>’, @article=’<имя_статьи>’,@source_table=’<имя_таблицы>’,@status=1(статьяактивна)go
(аналогично для др. таблиц БД)
10.Настройка фрагментации (на издат. в публик. БД):
Горизонт.фрагм. табл.:
exec sp_articlefilter, @publication=’<имя_публикации>’,@article=<’имя_статьи’>,@filter_name=<’имя_ХП_для_фильтр._д-х’>, @filter_clause=’<условие_отбора>’ go.
Созд. представл. для фильтрации д-х:
exec sp_articleview @publication=’<имя_публикации>’, @article=’<имя_статьи>’, @view_name=’<имя_предст.>’, @filter_clause=’<усл._отбора>’ go
exec helparticle @publication=’<имя_публ.>’, @article=’<имя_статьи>’ go
Для добавл. столбца в статью:
@operation=’add’
exec helparticlecolumn @publication=’<имя_публ.>’, @article=’<имя_статьи>’ go
11.Задание подписки (на издат. в публ.БД): sp_addsubscriber ‘<имя_подписчика>’go (в MSSQL5 не обязат.)