Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
bilety1-16_rbd.docx
Скачиваний:
9
Добавлен:
19.12.2018
Размер:
802.48 Кб
Скачать

Вопрос 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 не обязат.)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]