Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
Прошу Вашего совета относительно следующего случая. Имеется несколько баз SQL Server с одинаковой структурой. Связи между ними, к сожалению, никакой нет. Но зато есть необходимость объединения накопленных данных в одной базе. Все бы ничего, если бы не ключевые поля. Ведь при объединении возникнет вероятность совпадения ключевых полей некоторых документов из раличных баз. Конечно, можно ввести составной ключ, который бы исключал всякую возможность совпадения ключей, либо задать правила формирования ключей для каждой из удаленных баз данных. Но может быть я что-то упустил из своих выкладок и существует более красивое и менее рискованное решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 11:38 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
По моему проще всего и понятнее всего констрейнты навесить на ключи удаленных таблиц, что то типа constraint CKC_PK_Field check (PK_Field between A and B) А и В получишь разделив диапазон значений int на количество баз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 11:56 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
А о каких ключах речь? О суррогатных (ну типа identity) или естественных? Хотя - на 100% работает конечно только составной ключ, включающий в себя поле со ссылкой на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 12:01 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
Genady прав. Именно такой способ используется при репликации, когда сводятся данные с многих серверов - разделение диапазонов ключевых полей. Есть еще вариант (я, кстати, предпочитаю его) - вместо int'ового поля identity использовать guid. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 12:02 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
Ну а в случае суррогатных ключей - все просто - uniqueidentifiers для того и были придуманы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 12:03 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
Вариант 1. Использовать Idetity либо с не пересекающимися диапазонами, либо с пересекающимися, но с большим шагом и разным смещением стартового значения относительно нуля. Вариант 2. Использовать Uniqueidentifier. Этот вариант имеет минусы - невозможность вычисления MIN и MAX по идентификаторам, сравнения их на > и <, веьма большой размер поля (16 байт), неудобство визуального восприятия. Но и огромные плюсы - возможность их использования как RowGuid-поля при MERGE-репликации (если предполагается использовать этот вид репликации, то все равно мастер репликации автоматом добавит RowGuid-поле типа Uniqueidentifier), стопроцентная уникальность на разных серверах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 12:09 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
Спасибо, коллеги. Сразу видно, что данный вопрос в свое время затронул каждого из вас. Ну вот дошла очередь и до меня... Мне уже не раз предоставлялась возможность оценить крайне полезное сочетание: выделенная линия в Инете + эта классная конференция Вы помогли мне избежать многих глупостей. Для себя я решил воспользоваться советом Alexander Chepack и ввести идентификатор сервера. Хорошо, когда ключ несет в себе какую-то смысловую нагрузку, а не является просто нагромождением цифр В большинстве случаев я использую составные ключи. На данный момент они будут включать в себя: 1) поле со сквозным накоплением значений в пределах организации и сервера, 2) поле идентификатора организации, 3) поле идентификатора сервера. Быть может, это не разрешит всех моих проблем. Если это так, пожалуйста, подскажите! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 12:48 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
>Хорошо, когда ключ несет в себе какую-то смысловую нагрузку, а не является просто нагромождением цифр Хорошо то оно может и хорошо, но вот только, по моему чаще плохо Впрочем, я здесь высказывался на эту тему, если интересно ищите ветку с обсуждением статьи "Естественные ключи против суррогатных" P.S. Название статьи возможно неточно, а точное искать лень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 13:03 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
Согласен с Genady. И еще. Рассмотренный тобой вид конфликта репликации далеко не единственный. Подумай хорошенько. Если одни и те же данные могут модифицироваться на разных серверах, составной ключ тебя не спасет. Ведь модифицироваться могут и записи, которые были созданы на другом сервере. А еще могут быть модифицированы одни и те же данные одновременно на нескольких разных серверах. Это весьма обширная задача, решая которую я пришел к весьма непростому решению. Не знаю только, нужно ли оно тебе. Может, для твоего случая каждый модифицирует только свои данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 13:13 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
2 Genady Данную статью, а также весьма эмоциональное ее обсуждение на этой конференции, я читал можно сказать "в режиме реального времени" Моя задача включает только те условия, которые я перечислил и, по-моему, в рамках вышеописанной конструкции составного ключа она решается. Если нет, подскажите, почему? Перелопачивать же все свои базы на предмет замены ключевых полей мне бы очень не хотелось.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 13:16 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
2 Garya Дело говорите. Если не трудно, можно поподробнее? Не обязательно прямо сейчас. Сегодня я отчаливаю из нашей столицы-матушки, но к понедельнику думаю вернуться Тема модификации записей и их приема-передачи также очень волнует меня. То решение, которое пока реализовано у нас, берет на свои широкие плечи Access2000 Сами можете судить о гибкости, тормознутости, надежности и удобстве такого решения. В недалеком будущем я буду вводить другое решение для проверки его на эффективность. В нем я использую поле идентификатора измененной записи, т.е. данное поле накапливает в себе значения после каждого изменения записи. В общей базе поля просто сравниваюся. Ситуация "одни и те же данные изменяются одновременно на нескольких разных серверах" исключена. Но сделать решение на вырост, если это мне по зубам, все равно интересно. Жду Вашего ответа. PS. Мой адрес: alexandr_k@baucraft.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 13:34 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
Ответил на мыло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 17:26 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
2 Garya Спасибо за ответ. Принцип мне понятен. Похожую схему я реализовывал на одном авиационном заводе. Там на различных участках учета очень любили плодить информацию, переделывать строки дебета и кредита при уже рассчитанном сальдо, при этом часто забывали пересчитать его заново, иногда исправляли и само сальдо, что очень украшало оборотно-сальдовую ведомость Почти полгода у меня ушло на то, чтобы врубиться в местную форму учета(все это время генеральный конструктор АСУ принуждал меня к изучению Кобола и обслуживанию большой ЭВМ - и это в конце 90-х!), но самое трудное было еще впереди Именно там я впервые задумался о том, что физически удаленных записей быть не должно, каждая запись должна иметь дату ее создания и идентификатор создателя, по истечение определенного времени записи на сервере вообще не должны давать себя корректировать без особого разрешения и т.д. Представляете, все это делалось средствами Access97 в ЛВС на коаксиальном кабеле и работает до сих пор спустя полгода после моего ухода! Сразу скажу, что для этого завода даже Access был большим прогрессом, а также такой нервной перегрузкой для большого начальства, что в конце концов мне пришлось подать заявление об уходе.. Если Вы не против, я воспользуюсь некоторыми Вашими выкладками.. Был бы очень рад увидеть Ваши новые статьи. Успехов. Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2001, 05:46 |
|
||
|
Разводка ключевых полей между удаленными базами (очень интересная тема)
|
|||
|---|---|---|---|
|
#18+
Если бы я был против, я не стал бы выкладывать свои соображения на всеобщее обозрение... Конечно, я не против. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2001, 08:07 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32009541&tid=1826178]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 259ms |
| total: | 409ms |

| 0 / 0 |
