Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Распределенная БД MS SQL 2005  [new]
__Amazing__
Member

Откуда:
Сообщений: 5
Здравствуйте!

Интересно мнение знающих форумчан в следующем вопросе, т.к. сама нахожусь в некотором недоумении.

Дано:
сервер бд - MS SQL server 2005 Express Edition.

Предприятие представляет собой два филиала, т.е. имеется 2 физических сервера, два отдельных домена. Обращение к серверу другого домена по IP. Сейчас, по действующей схеме, на одном из серверов, назовем его А, раскручена бд. На втором - В, ничего нет. Пользователи домена А через клиентское приложение подключаются к серверу бд, находящемуся на этом же сервере, пользователи сервера В делают тоже самое, только коннектятся они по прежнему к серверу А. Т.к. сам экземпляр базы поддерживает протокол TCP/IP и удаленное соединение, то все вроде бы нормально работает.

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

Но, существует проблема: пользователи домена В при каждом включении клиентского приложения или при обновлении результатов, при каждом обращении к БД, выполнении запроса испытывают временнЫе задержки и приложение подтормаживает.

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

Была выбрана одноранговая транзакционная. ПОТОМУ ЧТО: не добавляет явно в таблицу индекс, два сервера работают как издатель/подписчик, нам важно чтобы в единицу времени в разных доменах пользователи могли читать/записывать базу и две эти базы копии друг друга.

Т.е. теперь на каждом сервере есть своя бд, пользователи каждого домена обращаются только к своему серверу, поэтому тормозов с клиентским приложением нет, а сервера бд постоянно синхронизируются друг с другом.

Но и тут возникла непреодолимая проблема: задержка репликации 3 сек и если в эту дельту на обоих серверах добавить строчку, то будет 2 строки вместо одной и происходит рассинхронизация баз, а нам необходимо чтобы в одну ед. времени обе базы в разных доменах были идентичны.

ВОПРОСЫ:
1. Как организовать синхронность двух баз, в разных доменах (пользователи обращаются к базам, делают изменение/добавление/удаление, примерно в одно время)?

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

3. Как можно бороться с коллизиями в схеме одноранговой репликации?
25 янв 14, 10:01    [15466657]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
__Amazing__
Member

Откуда:
Сообщений: 5
Забыла добавить, про репликацию.

Одну и туже строку в одну ед.вр. можно редактировать с разных доменов и если попасть в эти 3 сек , то эта строка в разных доменах будет иметь разное значение.

Про добавление строки: в эти 3 секунды из разных доменов можно добавить строку ( если две строки имеют идентичные значения атрибутов, значит в базе для того пользователя, кто первый нажал кнопку добавить/сохранить произойдет INSERT , а для второго пользователя это уже фактически должен быть UPDATE строки с такими атрибутами.) Сейчас в клиентское приложение зашит механизм, что при нажатии на добавить/сохранить, проверяем: есть ли уже строка с такими же значениями атрибутов, если есть- то мы строку редактируем. Но при это , если попасть в дельту 3 сек, то на запрос: есть ли такая строка, то будет ответ, что нет, хотя строка есть, просто базы не синхронизировались. Вот и получаются две строчки.
25 янв 14, 10:23    [15466689]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Можно поподробнее описать почему строки, заведенные в разных местах будут одинаковы?

1. Два одинаковых товара поступили одновременно на оба склада?
2. Два клиента (полные тезки) пришли в оба офиса в 3-секундную дельту? Хотя тут данные паспорта разные...
3. Фантазия кончилась...
25 янв 14, 13:21    [15467205]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
__Amazing__
Member

Откуда:
Сообщений: 5
SQL2008,

Ситуация с добавлением такова. БД хранит инфу для каждого сотрудника предприятия о том, какую работу или какие пункты плана он сегодня выполнял. Приложение представляет собой систему планирования и отчетности для предприятия. Из клиентского приложения при наличии прав есть возможность отчитаться как за себя, так и за другого сотрудника. Бывают моменты(очень редко, но все же) когда админ должен либо отчитаться за человека, либо что-то поправить в отчете сотрудника. И вот тут существует вероятность того, что пользователь одновременно с админом что-то правят в отчете.

Но добавление строки интересует в меньшей степени, а вот редактирование. Когда редактируют строку плана и в разных доменах она будет иметь разное значение из за дельты.
25 янв 14, 14:01    [15467409]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
aleks2
Guest
__Amazing__
Когда редактируют строку плана и в разных доменах она будет иметь разное значение из за дельты.


Да, дерьмо случается. Только ведь шоб такое стряслось и репликации не надо - достаточно редактированиия одной строки двумя пользователями.
Отсель вывод - боретесь с ветряными мельницами.
Т.е. с неустранимыми явлениями.

Думайте в сторону: разрешения конфликтов или тупо запретите редактирование.
25 янв 14, 14:21    [15467459]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
__Amazing__
Member

Откуда:
Сообщений: 5
Редактирование одной и той же строки из разных доменов является данностью. От этого не уйти и это надо принять как за "Дано" в условии задачи!

Можно ли сконфигурировать распределенную бд на MS SQL server 2005 Express Edition на двух доменах, чтобы на каждом из физич серверов стоял экземпляр сервера бд с идентичными базами?

Есть ли какой-то механизм разрешения коллизий "редактирование-редактирование" и "вставка-вставка" в MS SQL server 2005 для одноранговой репликации?
25 янв 14, 15:00    [15467562]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
aleks2
Guest
__Amazing__
Есть ли какой-то механизм разрешения коллизий "редактирование-редактирование" и "вставка-вставка" в MS SQL server 2005 для одноранговой репликации?


Документацию читать не пробовали?
Помогает.
25 янв 14, 15:05    [15467573]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
_Некто_
Guest
__Amazing__
Здравствуйте!

сервер бд - MS SQL server 2005 Express Edition.



данная редакция не может быть издателем. Для одноранговой репликации как минимум Enterprise нужен, если не изменяет память,
для обычной транзакционной можно обойтись меньшей редакцией.
25 янв 14, 15:40    [15467651]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
__Amazing__
...админ должен либо отчитаться за человека, либо что-то поправить в отчете сотрудника.

+ субъективный высер
Простите за занудство, но ситуация когда админ или разработчик лезет в данные, а пользователь в код, является явным признаком бардака в организации бизнеспроцесса.
Можете мне говорить что угодно, но существуют четко разграниченные зоны ответственности.
Когда они размыты это означает что ответственности нет!
Пользователь поправил строчку в коде - "Мне так удобнее вводить данные", программист проапдейтил записи в таблице - "Начальник бэкофиса попросил, иначе им пришлось бы все руками перебивать".
А потом трудно найти крайних. Когда виноватых нет - виноваты все.
25 янв 14, 15:53    [15467685]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
__Amazing__
Member

Откуда:
Сообщений: 5
aleks2
Документацию читать не пробовали?
Помогает.


Читала. Не помогло. Автоматическое разрешение конфликтов для этой версии не реализовано. Про то как это сделать программно - нет даже намека. Поэтому и обратилась на форум, может знающие люди подкинут идеи или подскажут что не прочитала/на что следовало обратить внимание.

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


SQL2008 , писав про то , что редактирует админ, я в большей степени имела ввиду, что права у пользователя повыше и он может редактировать строчку. Потом ситуация может быть следующая, что есть строка в базе, один из ее атрибутов- число типа int и при каком-то действии пользователя это число становится +1. Действие- скачать файл. Пользователь скачал файл- счетчик +1. Если файл одновременно скачивался пользователями с разных доменов и это попало в дельту, то вместо +2 может оказаться только +1. И таких мелких проблем с редактированием много, я не могу все описать, нюансов много.

Всем спасибо. Тема закрыта. Разберемся сами.
25 янв 14, 17:36    [15468033]     Ответить | Цитировать Сообщить модератору
 Re: Распределенная БД MS SQL 2005  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
__Amazing__
Действие- скачать файл. Пользователь скачал файл- счетчик +1. Если файл одновременно скачивался пользователями с разных доменов и это попало в дельту, то вместо +2 может оказаться только +1.

Я бы ввел признак с какого домена скачивается, а выводил бы сумму скачиваний по всем доменам.
И не нужно заморачиваться с синхронизацией.
Впрочем, действительно могут быть нюансы.
Желаю вам удачи в вашем непростом деле!
25 янв 14, 18:51    [15468269]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить