Репликация нескольких серверов с определенными требованиями к репликации между серверами - PullRequest
1 голос
/ 26 февраля 2011

Рассмотрим две таблицы A и B, которые выглядят следующим образом (извиняюсь за уродливые ASCII-таблицы):

----------------------------------     ------------------------
|  SNID  |  PNID  | SerialNumber |     |  PNID  |  PartNumber |
|--------|--------|--------------|     |--------|-------------|
|   0    |   0    |   17823      |     |   0    |  9874-4362  |
|--------|--------|--------------|     |--------|-------------|
|   1    |   0    |   17824      |     |   1    |  1053-1409  |
|--------|--------|--------------|     ------------------------
|   2    |   1    |   97245      |
----------------------------------

Я хочу, чтобы это было возможно для серверов на местеα, чтобы иметь возможность иметь определенные права на PNID 0, и серверы в местоположении β, чтобы иметь определенные права доступа на PNID 1, но, поскольку это один и тот же тип данных (только разные владельцы), я не думаю, что данные должнысамо по себе должно быть разделено.

В любом случае я хочу убедиться, что если β хочет получить доступ, назначьте серийный номер для PNID 0, что он должен сначала связаться с α, прежде чем ему будет разрешено это сделать.,Это будет означать, что если сеть между ними выйдет из строя, то α может произвести PNID 0, но не PNID 1, а β может произвести PNID 1, но не PNID 0.Однако, когда эти две сущности вернулись в связь друг с другом, любые серийные номера, созданные α для PNID 0, будут реплицированы в β, а серийные номера из β относительно PNID 1 будут объединены в базу данных α.

В целом, я бы действительно предпочел, чтобы это было установлено с местоположением «посредника», Ω, которое принимало все решения относительно того, смог ли α добавить новый серийный номер без разрешения β.

В настоящее время я использую SQL Server Express (2008 r2) вместе с Visual Basic .NET Express (2010) для реализации сервера, но я открыт для любых других опций, которые могут позволить мне решить проблемы, с которыми я сталкиваюсь в настоящее время.Честно говоря, я не уверен, что то, что я спрашиваю, правдоподобно, но если бы это было так, я бы очень заинтересовался его реализацией.

Почти сразу, первое, что я могу подуматьof добавляет еще один столбец в таблицу B, которая представляет местоположение, но я не думаю, что это «правильный» способ сделать это.Особенно о связи с другими серверами (и, честно говоря, я даже не знаю, смогу ли я сделать это с базой данных, так что , вероятно, должно быть сделанов .NET, я думаю.

1 Ответ

2 голосов
/ 28 февраля 2011

Рассматривали ли вы создание представлений для α, таких как

select * from A where PNID0=0
select * from B where PNID0=0

и создание представлений для β

select * from A where PNID0=1
select * from B where PNID0=1

Затем вы можете предоставить разрешение на эти представления для разных местоположений вместо создания другого Ωместо нахождения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...