powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как выбрать Первичный ключ в общем случае
22 сообщений из 47, страница 2 из 2
Как выбрать Первичный ключ в общем случае
    #34995446
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> это тяжело опровергнуть

Вот и получается, что для гетерогенных систем - либо собственный генератор, либо диапазоны. Гадать, что в очередной раз озарило Билли и каких граблей ждать в каждом конкретном случае... а нафига? Стрессов и без того достаточно.
я на MS SQL использовал их GUID вроде за 4 года пока проблем не было. Видимо за это время озарений не было, тьфу-тьфу... :)
Диапазоны можно, но требуются дополнительные танцы с бубнами.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995457
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> за 4 года пока проблем не было

Стоит поплевать через плечо.

> Диапазоны можно, но требуются дополнительные танцы с бубнами.

Да, работы минут на десять. ;)

Кстати, куча бесплатных вкусняшек. Например, такая: поскольку идентификатор хоста так или иначе присутствует в любом идентификаторе, легко разруливаются права доступа для результирующей базы данных. Или такая: одна база данных может обслуживать несколько виртуальных хостов.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995462
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmне путаю, просто спрашиваю. Вот к примеру возьмем не самый сложный случай, 5 БД, СУБД разные, бизнес-процесс "проходит" через эти БД, взаимодействие в режиме он-лайн и т.п.
Вы забыли самое важное: эти БД под Вашим контролем или нет? Вы можете потребовать, чтобы в них использовался некий общий алгоритм генерации (например, UUID)? Вы уверены, что это требование удастся поддержать в будущем, в частности, при расширении набора БД?

Лично я по опыту работы с DWH вывел следующее: чужие ID не должны проникать за пределы входного шлюза.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995504
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
небольшой фрагмент из системы документооборота (картинка)...
документы "рождаются" на трех хостах (назовем так), хранятся в разных таблицах T1...Tn, регистрируются на 4-м хосте и передаются для дополнительной обработки на 5-й хост, где обрастают дополнительными данными (визами, замечаниями,распоряжениями и т.п.). Далее идет обратная связь. Имея гарантированный GUID, уникальный для каждой таблицы, каждого хоста, не дублирующийся естественно в общем хранилище и в 5-м хосте, получаем простейшую в реализации обратку. Весь довесок к документам просто передается на H1...4 b ,и без дополнительных действий гарантированно привязывается к родителям. Конечно можно решить задачу и составными ключами, не отрицаю, но ... путем дополнительных телодвижений.
Я это к тому, что не вижу проблем в использовании GUID. Может кто подскажет, что считается проблемой, с удовольствием бы подискутировал на эту тему. Только не по поводу банальностей, типа размера ключа, который якобы где-то как-то приводит к тормозам.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995513
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmКонечно можно решить задачу и составными ключами, не отрицаю, но ... путем дополнительных телодвижений.
Не стоит предлагать заведомо плохие варианты так, словно они - единственная альтернатива. Это.. некрасиво. Описанная задача решается стандартнейше -

Код: plaintext
create sequence doc_seq start with <server#> increment by  10 | 100 | 1000  ...

iscrafmЯ это к тому, что не вижу проблем в использовании GUID.
Если о принципиальных проблемах - с этим, например, к guest-у. Лично я никогда над ними не размышлял по простой причине: guid-ы просто менее удобны. В тех системах, с которыми я имел дело, они не дают никаких преимуществ, исключительно - громоздкая и неудобная в обращении хрень.

Когда они дают преимущество - могу назвать пожалуй что единственный случай: неконтролируемое размножение хостов. Скажем, если вы выкладываете дистрибутив, который любой желающий скачает, поставит себе и начнет слать сообщения в общую базу.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995521
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Я это к тому, что не вижу проблем в использовании GUID

Если для пяти хостов с одинаковой (с точностью до билда) СУБД и одинаковым (с точностью до билда) сервером приложений все шоколадно, не факт, что все будет так же шоколадно для пяти тысяч хостов с произвольными серверами приложений и двумя десятками СУБД.

Логических ошибок в приведенной схеме нет. В данном случае особенности реализации некоторых компонент не позволяют рекомендовать такую схему как универсальную. Для однородных сред - сколько угодно.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995534
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerОписанная задача решается стандартнейше -

Код: plaintext
create sequence doc_seq start with <server#> increment by  10 | 100 | 1000  ...

означает ли это... когда я "солью" документы в одну таблицу БД из других БД, то предложенный вариант обеспечит уникальность.. с учетом, что хосты например на Firebird, центральная БД ORACLE, а H5 на картинке - MS SQL? Наверняка за этим стоит еще дополнительный ПК в центральной, дополнительные поля для связи с хостами, которые будут размножаться по мере расширения системы вглубь-вширь... не так?

softwarerЛично я никогда над ними не размышлял по простой причине: guid-ы просто менее удобны. В тех системах, с которыми я имел дело, они не дают никаких преимуществ, исключительно - громоздкая и неудобная в обращении хрень.
хм.. не заметил. Я наоборот не замечал недостатков. Да и громоздкости.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995539
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я объясняю неприязнь ГУИДАМ только одним единственным предубеждением - желанием сэкономить, доставшимся как рудимент от первых трехэтажных ЭВМ - современным программистам. Проблема 2000 не пошла на пользу.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995544
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Если для пяти хостов с одинаковой (с точностью до билда) СУБД и одинаковым (с точностью до билда) сервером приложений все шоколадно, не факт, что все будет так же шоколадно для пяти тысяч хостов с произвольными серверами приложений и двумя десятками СУБД.
СУБД разные... правда алгоритм формирования GUID конечно одинаковый.


guest_20040621В данном случае особенности реализации некоторых компонент не позволяют рекомендовать такую схему как универсальную. Для однородных сред - сколько угодно.
как универсальную - нет конечно. Это пример использования GUID облегчающий реализацию оговоренной функциональности. Но в каждом конкретном случае всегда нужно выбирать способ, как этот случай сделать менее гемморойным. Мне просто непонятны эти битвы между "инкрементальщиками" и "гуидовцами" :)
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995546
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> битвы между "инкрементальщиками" и "гуидовцами"

Если человек понимает, что он делает и почему делает именно так, знает об ограничениях применения - никаких битв. А просто замена числовой последовательности символьной только потому, что это модно - глупость.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995551
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость. А Вас по ночам не мучают кошмары? long исчерпывается и что дальше?
Где-то я читал что для реально работающих приложений этого более чем достаточно, но не уверен.
Не хватает же размерности стирлинговых, доубле или децимал/нумерик для построения банковских систем. (А иногда для начисления зарплаты диретора банка).
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995555
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmозначает ли это... когда я "солью" документы в одну таблицу БД из других БД, то предложенный вариант обеспечит уникальность..
Безусловно.

iscrafmс учетом, что хосты например на Firebird, центральная БД ORACLE, а H5 на картинке - MS SQL?
А в чем проблема? Разве что в MSSQL, наверное, потребуется написать десяток строк кода - не берусь судить.

iscrafmНаверняка за этим стоит еще дополнительный ПК в центральной, дополнительные поля для связи с хостами, которые будут размножаться по мере расширения системы вглубь-вширь... не так?
Валер, мне неинтересно беседовать со странными фантазиями.

iscrafmхм.. не заметил. Я наоборот не замечал недостатков. Да и громоздкости.
Попробуйте, например, сказать человеку по телефону, на какую именно запись стоит обратить внимание :)
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995785
А что, в приведенном примере составной ПК использовать слабо?
Первое поле ID хоста, второе номер документа?
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995921
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю...А что, в приведенном примере составной ПК использовать слабо?
Первое поле ID хоста, второе номер документа?
+1
В таком случае вот эту работу
iscrafmВесь довесок к документам просто передается на H1...4 b ,и без дополнительных действий гарантированно привязывается к родителям.
можно будет выполнить еще более эффективно чем с GUID (не содержащем информацию о хосте). Imho.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995928
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR...более эффективно чем с GUID (не содержащем информацию о хосте)
...более эффективно чем с GUID (не содержащем информацию о хосте и таблице )
Т.е., другими словами, очевидной альтернативой GUIDу всегда будет более "умный" идентификатор (дающий кроме "глобальной" уникальности еще и "адрес")
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995945
YBW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
YBW
Гость
softwarerчужие ID не должны проникать за пределы входного шлюза.

первый постулат DWH :)
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995957
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поддержите акцию По доллару за GUID.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34996109
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Валера, от вас я не ожидал ссылок на надписи на заборе. :(
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34996174
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm поддержите акцию По доллару за GUID.
Остроумно, посмеялся, спасибо :)
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34996205
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Валера, от вас я не ожидал ссылок на надписи на заборе. :(
да ладно. я тоже иногда не прочь поязвить и поиграть в театре абсурда, хотябы зрителем. не со зла конечно, бывает скучно.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34998573
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первичный ключ пишет:

> Собственно юзал бигинт автоинкремент(я как бы не сторонник номер
> паспорта в качестве ПК юзать, поэтому никогда не выделяю потенциальные
> ключи.),

Первичный ключ в общем случае не выбирается. Там всегда частные случаи.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34998592
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer пишет:
> То есть в комбинации пустой головы и кривых рук виноват автоинкремент, я
> все правильно понял?

Там еще и кривые руки майэскуэлевцев, в добавок.
У них они блокируются ... и т.п.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как выбрать Первичный ключ в общем случае
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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