Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поддержка GUID в InterBase/FireBird [D7, FireBird 1.5 RC8]


Страницы:   1 2 3

VLAD-MAL ©   (2004-02-09 14:16:00) 

Оч. хочу для первичных ключей юзать GUID. (Ну, типа, меньше гемора с генераторами/триггерами (мелочь, конечно); а самое главное - вопросы с репликацией проще решаются...)
Для реализации фантазии хватает на тестовое поле (32символа) или на составной ключ из 2х BIGINT. Первое - как - то уж больно громоздко по объему, второе - несколько громоздко по реализации.

Кто-нибудь идет в этом направлении, или я один такой единственный и неповторимый (тупой и упрямый)?

Вообще, для IB/FB планируется ли введение такого типа данных (в MS SQL есть!) ?

Подскажите?????


ZrenBy   (2004-02-10 11:34:00) [1]

Тайна GUID :)

http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=22258


roottim   (2004-02-10 11:21:00) [2]


> Digitman © (10.02.04 08:41) [48]

ну если быть математически :) точным вероятность сведется к вероятности появления 2-х сетевых с одинаковыми серийниками.

к чему все это.. смысл [24] то был по высказыванию [6] о том что
> мне как-то удобнее по логике id на клиенте генерить
>>не есть это хорошо, вероятность получения граблями по неуникальности перв.ключа повышается


вероятность получить одинаковый гуид на разных ПК гораздо ниже чем на сервере.. вот и все


Digitman   (2004-02-10 08:41:00) [3]


> генерация гуид на основе сетевой карты дает гарантию не
> получить такой-же на другой машине с сетевой картой...


100%-ю гарантию может дать только господь бог)

в этом же случае речь идет лишь о весьма значительном уменьшении вероятности генерации одного и того же значения на разных машинах


roottim   (2004-02-10 08:20:00) [4]

>Anatoly Podgoretsky © (09.02.04 15:58) [34]
причем тут 2^128? -> данное высказывание касается одной машины... действительно, генерация ключа на одной машине с сетевой картой происходит с н-ой долей вероятности получить такой-же
я же сказал только то что читал об этом..
генерация гуид на основе сетевой карты дает гарантию не получить такой-же на другой машине с сетевой картой...
(то-есть речь идет в контексте 2 ПК с разными сетевыми) по причине уникальности сер.номера сетевой карты...
> Любой человек немного знакомый с математикой понимает, что это не так
ну физмат то я заканчивал...
вы может считайте что генерация пойдет с 0, что позволит дать вашу колизию... ну а я думаю иначе...


y-soft   (2004-02-10 08:19:00) [5]

По поводу использования GUID в IB - классическая статья Дмитрия Кузьменко: http://www.ibase.ru/devinfo/test2.htm


Digitman   (2004-02-09 17:12:00) [6]

по-русски, на огурцах :

я подключился к серверу и говорю, мол, добавь в такую-то таблицу такую-то запись с перв.ключем = 100

сервер мне сообщает в OnReconcileError(), мол, такой перв.ключ записи уже существует

я тут же запрашиваю у сервера "свежий" GEN_ID, повторяю реконсайл, сервер "проглатывает"

замечательно ! у всех связанных таблиц в моей базе я в нужной послед-ти меняю ключ на "свежий"

аналогично - для модифицируемых записей


VLAD-MAL   (2004-02-09 17:05:00) [7]

если локально-уникальное значение добавленной или модифицированной записи противоречит условиям глоб.уникальности
Оно не противоречит, я ж говорю, что ... и т.д.

Ну, ладно, похоже, разговор слепого с глухим.

Спасиба. Удачи.


Digitman   (2004-02-09 16:59:00) [8]


> VLAD-MAL (09.02.04 16:53) [42]


Уважаемый, твоя тетка из Воронежа со своим нотбуком и базой - пуп земли ? Пусть в отрыве от сервера генерит свои локально-уникальные ключи, а при подключении к серверу сервер, если локально-уникальное значение добавленной или модифицированной записи противоречит условиям глоб.уникальности, сообщит тетке заведомо уникальный ключ ! И пусть тетка во всех связанных таблицах, где фигурирует проблемный ключ, заменит его на тот, что запросит у сервера, когда тот в ходе синхронизации записи будет ругаться !


VLAD-MAL   (2004-02-09 16:53:00) [9]

Уважаемый, мне запихнуть запись любой ценой на сервак не главное - мне главное, чтобы id записи, которую сгенерил клиент, ГАРАНТИРОВАННО отличался от id записей, сгенерированных другими "локальными" и другими "надолго удаленными" клиентами.
Пример: тетка из Воронежа добавила новую позицию прайса "Воронежские котлеты", а потом сгенерила счет, позиция которого ссылается на эту позицию счета. В это время другой клиент в "основной" базе сгенерил другую позицию прайса "Саратовские гармошки" с тем же id. Как при переносе счета узнать, что эти позиции счета ссылаются, если их id вполне корректен?


Digitman   (2004-02-09 16:44:00) [10]

при исполнении этого метода в случае искл.ситуаций, связанных. например, с нарушением уникальности ключа записи, ты можешь тут же запросить у сервера уник.значение генератора, заместить у себя в лок.базе некондиционное значение ключа вновь полученным и повторить реконсайл для этой записи


VLAD-MAL   (2004-02-09 16:36:00) [11]

И...?


Digitman   (2004-02-09 16:34:00) [12]

проблема - в неиспользовании (или неэффективном использовании) механизма delta-набора данных, формируемых этим компонентом


VLAD-MAL   (2004-02-09 16:30:00) [13]

Что-то мы о разных вещах говорим...
Ты о кэшировании записи, я - о репликации...

Ну, и какая будет логика работы:
- имеется база данных, ~ 50 таблиц, как ни странно, связанных между собой;
- основная масса клиентов юзает в реал-тайме, по локалке, проблем нет;
- приезжает тетка из Воронежа, скачивает себе на ноут копию базы, и уезжает к себе в деревню... На неделю.
- эта зараза возвращается, в ее базе новые позиции прайса, новые клиенты, появились новые документы на основе новых позиций. Да, некоторые документы - на основании "старых" позиций.
- за время ее отсутствия у нас тоже ко-что изменилось.

Я хочу синхронизировать изменения!
И, кроме множества дополнительных заморочек, я хочу, чтобы у моих удаленных клиентов генерировались уникальные номера документов.

Да, я использую иногда TClientDataSet. И при чем тут моя проблема?


Digitman   (2004-02-09 16:21:00) [14]


> VLAD-MAL (09.02.04 16:02) [36]


у TClientDataSet для этой цели есть замечательный метод ApplyUpdates()

ты вникал в суть и логику его использования/работы ?


VLAD-MAL   (2004-02-09 16:02:00) [15]

Ну, Digitman-чик ( © (09.02.04 15:53) [32]) , ну, подскажи, как?

Может, я совсем заработался, очевидного под носом не вижу?


VLAD-MAL   (2004-02-09 15:59:00) [16]

"Сетевая карта" - это типа карта Канады?


Anatoly Podgoretsky   (2004-02-09 15:58:00) [17]

VLAD-MAL (09.02.04 15:52) [31]
Это было не к тебе, а к самоуверенному замечанию "гарантированно уникален". Любой человек немного знакомый с математикой понимает, что это не так.
А для тебя я сказал, что ты успеешь добежать до канадской границы даже при отсутствии сетевой карты.


VLAD-MAL   (2004-02-09 15:54:00) [18]

Бывает.


Digitman   (2004-02-09 15:53:00) [19]


> Как????


ты TClientDataset используешь ?


VLAD-MAL   (2004-02-09 15:52:00) [20]

Ни как нет, после того как будет выдано 2^128 будет гарантированое повторение.
Ну, к этому времени я успею добежать до канадской границы.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо