|
|
|
Синхронизация изменений в таблице.Remote Procedure/ASA7
|
|||
|---|---|---|---|
|
#18+
На одном серваке ASA 7 есть 2 базы. в них есть абсолютно одинаковые таблицы. Нужно чтобы при каких либо изменениях в одной таблице ,аналогичные изменения происходили в такойже таблице в другой базе(Репликации не предлагайте) Думаю можно создать триггер(на delete,insert,update) в котором после получения новых параметров они передаются удалённой процедуре(вызывается в триггере) .Процедура выполняетсяв удалённой базе,делая нужные изменения в другой таблице... Сработает такая схема)? Или чего попроще посоветуете?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2008, 18:24 |
|
||
|
Синхронизация изменений в таблице.Remote Procedure/ASA7
|
|||
|---|---|---|---|
|
#18+
Почему это "репликацию не предлагайте"? Она как раз для таких задач и существует. Схема конечно сработает, но возни с ней намного больше чем с нормальной репликацией. Что ты будешь делать если в момент срабатывания триггера на базе А, база Б будет лежать? А если строка была создана на базе А и скопирована на Б, как ты в триггерах на Б это определишь и остановишь ее отправку обратно на А? А еще можно сделать proxy таблицу в одной из баз и получится всего одна единственная таблица. Которую не надо будет синхронизировать вообще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2008, 18:39 |
|
||
|
Синхронизация изменений в таблице.Remote Procedure/ASA7
|
|||
|---|---|---|---|
|
#18+
White OwlА еще можно сделать proxy таблицу в одной из баз и получится всего одна единственная таблица. Которую не надо будет синхронизировать вообще так я и сделал..,но есть одно НО.Эта прокси таблица в базе Б(в которой внешние ключи даже определить нельзя) в одном из приложений участвует в запросе многотабличном причём в этом запросе оптимизатор по ходу требует чтобы она полностью была загружена чтобы выполнился запрос..вообщем и запрос там сложный с 2 внешними объединениями.Поэтому уже работающий вариант с прокси таблицей отпадает,ибо тупит сильно((( отрабатывает секунд 14-20((( White OwlА если строка была создана на базе А и скопирована на Б, как ты в триггерах на Б это определишь и остановишь ее отправку обратно на А? в принципе копирование изменений нужно только из А в Б поэтому на Б тригеров не будет... А репликацию если делать то там по моему интервал отправки реплик 1 мин минимум можно определить,или это не так? А в варианте с триггером быстрее сработает..вот из таких соображений в принципе и пришёл к этому решению... А больше вариантов нету я так понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2008, 09:49 |
|
||
|
Синхронизация изменений в таблице.Remote Procedure/ASA7
|
|||
|---|---|---|---|
|
#18+
автортак я и сделал..,но есть одно НО.Эта прокси таблица в базе Б(в которой внешние ключи даже определить нельзя) в одном из приложений участвует в запросе многотабличном причём в этом запросе оптимизатор по ходу требует чтобы она полностью была загружена чтобы выполнился запрос..вообщем и запрос там сложный с 2 внешними объединениями.Поэтому уже работающий вариант с прокси таблицей отпадает,ибо тупит сильно((( отрабатывает секунд 14-20((( А Вы не задумывались над таким вариантом, чтобы не насильно гнать все записи из A в Б, а перегнать просто недостающие записи в Б из А, произведя проверку во время выполнения запроса ? ;) То есть: 1. В А есть таблица 2. В Б есть прокси таблица на таблицу в А 3. В Б есть таблица, аналогичная А Перед выполнением запроса в Б, теперь достаточно сделать проверку и вставку недостающих записей: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 1. База А не напрягается передачей изменений, они передаются по требованию базы Б 2. База А не рискует откатить транзакцию из за того, что не нашла базу Б 3. База Б держит локальную копию данных и всегда уверена в их актуальности, которая гарантируется перед выполнением запроса 4. Данные в базе Б гарантируют целостность, но не мешают писателям базы А писать новые записи В роли ключа id подходит числовой primary key или timestamp поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2008, 11:25 |
|
||
|
Синхронизация изменений в таблице.Remote Procedure/ASA7
|
|||
|---|---|---|---|
|
#18+
ASCRUSавтортак я и сделал..,но есть одно НО.Эта прокси таблица в базе Б(в которой внешние ключи даже определить нельзя) в одном из приложений участвует в запросе многотабличном причём в этом запросе оптимизатор по ходу требует чтобы она полностью была загружена чтобы выполнился запрос..вообщем и запрос там сложный с 2 внешними объединениями.Поэтому уже работающий вариант с прокси таблицей отпадает,ибо тупит сильно((( отрабатывает секунд 14-20((( А Вы не задумывались над таким вариантом, чтобы не насильно гнать все записи из A в Б, а перегнать просто недостающие записи в Б из А, произведя проверку во время выполнения запроса ? ;) То есть: 1. В А есть таблица 2. В Б есть прокси таблица на таблицу в А 3. В Б есть таблица, аналогичная А Перед выполнением запроса в Б, теперь достаточно сделать проверку и вставку недостающих записей: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 1. База А не напрягается передачей изменений, они передаются по требованию базы Б 2. База А не рискует откатить транзакцию из за того, что не нашла базу Б 3. База Б держит локальную копию данных и всегда уверена в их актуальности, которая гарантируется перед выполнением запроса 4. Данные в базе Б гарантируют целостность, но не мешают писателям базы А писать новые записи В роли ключа id подходит числовой primary key или timestamp поле. Согласен!Вариант хорош.А что же будет с актуальностью в таблице Б если в таблицу А будет произведён не Insert а Delete or Update??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2008, 12:30 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35666526&tid=2011277]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 365ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...