powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Репликации с SUBSCRIBE BY
5 сообщений из 5, страница 1 из 1
Репликации с SUBSCRIBE BY
    #33500317
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужен совет.
Условия: ASA 7.0.4
Есть таблица Orders
В ней поле Офис.
Есть несколько удаленных баз, репликации SQL remote, FTP.
Нужно чтобы в одну удаленную базу посылались записи с Офис равно 1 или 2
в другую Офис равно 3 или 4, третью Офис равно 1 или 4 и т.п.

1. Можно на каждого создать свою публикацию и в каждой в таблице Orders указать условия по WHERE
2. А можно создать одну публикацию с SUBSCRIBE BY Офис
и ......
Нельзя ли указать в
CREATE SUBSCRIPTION
... TO publication-name [ ( subscription-value ) ]
... FOR subscriber-id
несколько значений subscription-value(н-р, через запятую).
Если нельзя, то я так понимаю, придется создать несколько подписок для одного удаленного пользователь на одну и ту же публикуцию c разным subscription-value?

И вообще, что лучше с точки зрения производительности для сервера?
...
Рейтинг: 0 / 0
Репликации с SUBSCRIBE BY
    #33500373
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо CREATE SUBSCRIPTION трогать. Нужно просто сделать табличку "PubRules":
Код: plaintext
1.
2.
3.
4.
CREATE TABLE PubRules (
  Office int NOT NULL,
  PubKey char( 128 ) NOT NULL,
  PRIMARY KEY (Office, PubKey)
);
Заполняем ее, какие офисы на какую подписки висят (многие ко многим). На публицируемую таблицу вписываем в выражение подписки:
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PUBLICATION Pub1 (
  TABLE Table1 ( Office, field1, field2, ... ) SUBSCRIBE BY (
    SELECT PubKey 
    FROM PubRules pr 
    WHERE pr.Office = Table1.Office
  )
);
То есть на SUBSCRIBE BY можно указать не поле, а выражение, которые в т.ч. может быть и выражением (SELECT ...). В данном примере таблица PubRules позволяет описать не только обьединение записей нескольких офисов для пересылки на одну удаленную БД, но и наоборот - можно на несколько удаленных БД указать записи одного офиса, так как выражение может возвращать более одного ключа подписки.
...
Рейтинг: 0 / 0
Репликации с SUBSCRIBE BY
    #33500562
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Снимаю шляпу ASCRUS!
Идея действительно классная! Как я сам не дотумкал?
И настраивать репликации удобно будет: кому, что, куда.
Правда переделать и доделать немного все придется.
У меня сейчас все на WHERE сделано, без SUBSCRIBE BY.

И все же можно ведь создать несколько подписок для одного удаленного
пользователя на одну и ту же публикацию с разными subscription-value?
По крайней мере в Central получилось сделать такое.
Ведь все должно в таком случае тоже нормально получиться. Просто сам не пробовал гонять данные, лишних экспериментов не хочется ставить.
Конечно такое решение не очень красиво будет выглядеть, по сравнению с предложенным.
Просто есть желание уменьшить число публикаций на сервере, у меня сейчас на каждого своя.
А вообще надо предложенную идею делать.
Я бы еще добавил в таблицу PubRules поле TableName
и тогда на нужной таблице делать так
CREATE PUBLICATION Pub1 (
TABLE Table1 ( Office, field1, field2, ... ) SUBSCRIBE BY (
SELECT PubKey
FROM PubRules pr
WHERE pr.Office = Table1.Office and pr.TableName='Table1'
)
чтобы был универсальный подход для всех таблиц где поле Office есть
...
Рейтинг: 0 / 0
Репликации с SUBSCRIBE BY
    #33500627
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я знаю, на одного подписчика можно указать только один ключ подписки. Ну а насчет расширения таблицы - идея простая и ясная благодаря возможностям репликации ASA, дальше можно накручивать как более удобно и выгодно :)

P.S. Правда в данном случае особой выгоды в добавлении поля имени таблицы не вижу, это нужно только разве что будет, если для каждой таблицы свое движение информации по удаленным узлам было по офисам, что в принципе не имеет смысла, так как тогда нарушится ссылочная целостность при репликациях.
...
Рейтинг: 0 / 0
Репликации с SUBSCRIBE BY
    #33500649
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз спасибо!
Но я повторюсь, что у меня получилось в Centrale
Одного подписчика подписать 2 раза на одну публикацию, но с разными значениями ключа подписки. Единственно, не пробовал, данные не гонял, времени пока нет, на рабочей базе не хочется эксперименты ставить. Но вообще, по идее все должно сработать. Но вообще и пробовать не буду, такой подход громоздкий и неудобный.
Лучше через PubRules.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Репликации с SUBSCRIBE BY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]