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

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
21.05.2006, 10:35
|
|||
|---|---|---|---|
|
|||
Единый справочник в распределенной базе ( ASA8, SQLRemote ) |
|||
|
#18+
Есть распределенная БД : одна консолидированная БД – данные туда добавляются только посредством репликации, и множество ( до 50 ) удаленных БД – данные туда вносятся и через ПО и посредством репликации. Репликация двунаправленная. В базе требуется создать таблицу-справочник, единую для всех баз. Структура таблицы ( упрощенная) : PrimKey – integer Name - char(128) Значение первичного ключа ( PrimKey ) в каждой базе генерируется автоматически и по-определению не может дублироваться в разных базах. Значение поля ( Name ) должно быть уникальным в таблице, но теоретически возможна ситуация когда в разных удаленных базах условно-одновременно добавят одинаковые значения данного поля. Как разрулить данную ситуацию ? Теоретически представляется следующий механизм : Если удаленные базы А. и Б. одновременно добавили записи с одинаковым значением поля Name. Репликация от базы А. в консолидированную базу ( КБД ) пройдет успешно. Но следующая репликация от базы Б. должна порождать ошибку и возвращать в базу Б. реплику, изменяющую первичный ключ у строки добавленной в базу Б. на значение , равное первичному ключу строки с таким же значением поля Name в консолидированной базе данных. Но как этот механизм реализовать ? Постарался в начале описать более общую задачу, возможно, есть другие решения проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.05.2006, 11:01
|
|||
|---|---|---|---|
Единый справочник в распределенной базе ( ASA8, SQLRemote ) |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.05.2006, 13:05
|
|||
|---|---|---|---|
Единый справочник в распределенной базе ( ASA8, SQLRemote ) |
|||
|
#18+
А справочник-то распределенный? (т.е. записи, созданные в базе А должны уходить в базу Б или же они реплицируются только в КБД?) Если справочник распределенный (все "видят" друг друга) то Но следующая репликация от базы Б. должна порождать ошибку и возвращать в базу Б. реплику, изменяющую первичный ключ у строки добавленной в базу Б. на значение , равное первичному ключу строки с таким же значением поля работать не будет (нарушение целостности по Primary key) ... да и вообще - старайтесь не делять updat'ов по Primary key, тем более в распределенной БД. Для решения проблемы можно воспользоваться триггерами - при вставке записи проверяешь ее на дубликат - и далее соответствующие операции P.S. Можно также event'ами воспользоваться - вызывать периодически процедуру слияния задублированных записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=BadEnzo&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 648ms |
| total: | 791ms |

| 0 / 0 |
