powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разводка ключевых полей между удаленными базами (очень интересная тема)
15 сообщений из 15, страница 1 из 1
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009539
AlexUnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу Вашего совета относительно следующего случая.
Имеется несколько баз SQL Server с одинаковой структурой. Связи между ними, к сожалению, никакой нет. Но зато есть необходимость объединения накопленных данных в одной базе. Все бы ничего, если бы не ключевые поля. Ведь при объединении возникнет вероятность совпадения ключевых полей некоторых документов из раличных баз.
Конечно, можно ввести составной ключ, который бы исключал всякую возможность совпадения ключей, либо задать правила формирования ключей для каждой из удаленных баз данных. Но может быть я что-то упустил из своих выкладок и существует более красивое и менее рискованное решение?
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009540
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему проще всего и понятнее всего констрейнты навесить на ключи удаленных таблиц, что то типа constraint CKC_PK_Field check (PK_Field between A and B)
А и В получишь разделив диапазон значений int на количество баз.
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009541
Alexander Chepack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А о каких ключах речь?
О суррогатных (ну типа identity) или естественных?

Хотя - на 100% работает конечно только составной ключ, включающий в себя поле со ссылкой на сервер.
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009542
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Genady прав. Именно такой способ используется при репликации, когда сводятся данные с многих серверов - разделение диапазонов ключевых полей. Есть еще вариант (я, кстати, предпочитаю его) - вместо int'ового поля identity использовать guid.
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009543
Alexander Chepack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну а в случае суррогатных ключей - все просто - uniqueidentifiers для того и были придуманы.
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009545
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
Вариант 1. Использовать Idetity либо с не пересекающимися диапазонами, либо с пересекающимися, но с большим шагом и разным смещением стартового значения относительно нуля.
Вариант 2. Использовать Uniqueidentifier. Этот вариант имеет минусы - невозможность вычисления MIN и MAX по идентификаторам, сравнения их на > и <, веьма большой размер поля (16 байт), неудобство визуального восприятия. Но и огромные плюсы - возможность их использования как RowGuid-поля при MERGE-репликации (если предполагается использовать этот вид репликации, то все равно мастер репликации автоматом добавит RowGuid-поле типа Uniqueidentifier), стопроцентная уникальность на разных серверах.
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009554
AlexUnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, коллеги. Сразу видно, что данный вопрос в свое время затронул каждого из вас. Ну вот дошла очередь и до меня... Мне уже не раз предоставлялась возможность оценить крайне полезное сочетание: выделенная линия в Инете + эта классная конференция Вы помогли мне избежать многих глупостей.
Для себя я решил воспользоваться советом Alexander Chepack и ввести идентификатор сервера. Хорошо, когда ключ несет в себе какую-то смысловую нагрузку, а не является просто нагромождением цифр В большинстве случаев я использую составные ключи. На данный момент они будут включать в себя:
1) поле со сквозным накоплением значений в пределах организации и сервера,
2) поле идентификатора организации,
3) поле идентификатора сервера.
Быть может, это не разрешит всех моих проблем. Если это так, пожалуйста, подскажите!
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009560
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Хорошо, когда ключ несет в себе какую-то смысловую нагрузку, а не является просто нагромождением цифр
Хорошо то оно может и хорошо, но вот только, по моему чаще плохо

Впрочем, я здесь высказывался на эту тему, если интересно ищите ветку с обсуждением статьи "Естественные ключи против суррогатных"

P.S. Название статьи возможно неточно, а точное искать лень
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009562
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
Согласен с Genady. И еще. Рассмотренный тобой вид конфликта репликации далеко не единственный. Подумай хорошенько. Если одни и те же данные могут модифицироваться на разных серверах, составной ключ тебя не спасет. Ведь модифицироваться могут и записи, которые были созданы на другом сервере. А еще могут быть модифицированы одни и те же данные одновременно на нескольких разных серверах. Это весьма обширная задача, решая которую я пришел к весьма непростому решению. Не знаю только, нужно ли оно тебе. Может, для твоего случая каждый модифицирует только свои данные.
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009564
AlexUnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Genady
Данную статью, а также весьма эмоциональное ее обсуждение на этой конференции, я читал можно сказать "в режиме реального времени" Моя задача включает только те условия, которые я перечислил и, по-моему, в рамках вышеописанной конструкции составного ключа она решается. Если нет, подскажите, почему? Перелопачивать же все свои базы на предмет замены ключевых полей мне бы очень не хотелось..
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009568
AlexUnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Garya
Дело говорите. Если не трудно, можно поподробнее? Не обязательно прямо сейчас. Сегодня я отчаливаю из нашей столицы-матушки, но к понедельнику думаю вернуться
Тема модификации записей и их приема-передачи также очень волнует меня. То решение, которое пока реализовано у нас, берет на свои широкие плечи Access2000 Сами можете судить о гибкости, тормознутости, надежности и удобстве такого решения. В недалеком будущем я буду вводить другое решение для проверки его на эффективность. В нем я использую поле идентификатора измененной записи, т.е. данное поле накапливает в себе значения после каждого изменения записи. В общей базе поля просто сравниваюся. Ситуация "одни и те же данные изменяются одновременно на нескольких разных серверах" исключена. Но сделать решение на вырост, если это мне по зубам, все равно интересно. Жду Вашего ответа.
PS. Мой адрес: alexandr_k@baucraft.ru
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009595
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
Ответил на мыло.
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009629
AlexUnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Garya
Спасибо за ответ. Принцип мне понятен. Похожую схему я реализовывал на одном авиационном заводе. Там на различных участках учета очень любили плодить информацию, переделывать строки дебета и кредита при уже рассчитанном сальдо, при этом часто забывали пересчитать его заново, иногда исправляли и само сальдо, что очень украшало оборотно-сальдовую ведомость Почти полгода у меня ушло на то, чтобы врубиться в местную форму учета(все это время генеральный конструктор АСУ принуждал меня к изучению Кобола и обслуживанию большой ЭВМ - и это в конце 90-х!), но самое трудное было еще впереди Именно там я впервые задумался о том, что физически удаленных записей быть не должно, каждая запись должна иметь дату ее создания и идентификатор создателя, по истечение определенного времени записи на сервере вообще не должны давать себя корректировать без особого разрешения и т.д.
Представляете, все это делалось средствами Access97 в ЛВС на коаксиальном кабеле и работает до сих пор спустя полгода после моего ухода! Сразу скажу, что для этого завода даже Access был большим прогрессом, а также такой нервной перегрузкой для большого начальства, что в конце концов мне пришлось подать заявление об уходе..
Если Вы не против, я воспользуюсь некоторыми Вашими выкладками.. Был бы очень рад увидеть Ваши новые статьи.
Успехов. Александр.
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009646
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
Если бы я был против, я не стал бы выкладывать свои соображения на всеобщее обозрение... Конечно, я не против.
...
Рейтинг: 0 / 0
Разводка ключевых полей между удаленными базами (очень интересная тема)
    #32009660
AlexUnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Garya

Спасибо.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разводка ключевых полей между удаленными базами (очень интересная тема)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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