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 есть!) ?

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


Anatoly Podgoretsky   (2004-02-09 15:49:00) [21]

roottim (09.02.04 15:36) [24]
Ни как нет, после того как будет выдано 2^128 будет гарантированое повторение. Гарантированная уникальность требует неограниченной длины последовательности. Это простая математическая теория.


Digitman   (2004-02-09 15:47:00) [22]

тем более что запаса сквозного диапазона при использовании QWORD-счетчика - выше крыши ! век его не исчерпаешь ни при каких , даже самых "замороченных" репликациях


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

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

Как????
Скажи, я тебя пивом поить буду до конца недели!

У меня же клиенты с длительным отключением!


Digitman   (2004-02-09 15:43:00) [24]


> и не знаете, зачем диапазоны нужны


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


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

2 roottim (09.02.04 15:36) [24]

Да.


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

О, DigitMan, как Вы мне помогли (CHARACTER SET OCTETS...) , и не знаете, зачем диапазоны нужны...
Ну, это один из вариантов схемы репликации - когда каждому юзеру, владеющему экземпляром/фрагментом задается диапазон, начиная с которого у него генерится значение ключа (искуственного, автоинкрементного). GUID здесь не причем.

Спасибо!


roottim   (2004-02-09 15:36:00) [27]

> [6]... что т я всегда думал, что гуид сформированный на разных ПК с сетевыми картами гарантированно уникален по соображению уникальности серйного номера сетевой карты..
по крайней мере они об этом говорят


Digitman   (2004-02-09 15:35:00) [28]


> VLAD-MAL (09.02.04 15:31) [20]


так и я о том же) ... мне только непонятно, на кой шут какие-то там диапазоны нужны ?


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

2 Anatoly Podgoretsky © (09.02.04 15:32) [21]

Да-да, спасибо, эти подробности мне известны...


Anatoly Podgoretsky   (2004-02-09 15:32:00) [30]

VLAD-MAL (09.02.04 15:25) [18]
Нужен прихнак операции - добавление/изменение, но врядли ты когда либо увидишь совпадение, тем более, что из твоих слов выходит, что сеть есть.


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

Да я не об этом, я об Вашем предложении использовании Field Type Int64 + generator"s.


Digitman   (2004-02-09 15:28:00) [32]


> как распределять диапазоны значений для первичных


а зачем это вообще нужно ?


> GUID придумали ж, что же не юзать


любопытно, как это сочетается с "распределять диапазоны значений"

какой GUID тебе система выдала по твоему запросу, такой и запишешь в первичный ключ .. или ты каким-то образом собираешься распределять GUIDы по диапазонам ?


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

Вроде как о клиент-сервере идет речь

Клинет - сервер, но с дли-и-инными отключениями (сейчас - до недели доходит) не которых клиентов. Поэтому им копию базы бросаем. Потом - обратно.

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


Anatoly Podgoretsky   (2004-02-09 15:19:00) [34]

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


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

да фиг тебя знает - зачем)
1. Ну, DigitMan, вопрос срывается в сторону "а нафиг это надо..."
Ну, в лом мне заниматься такими вещами, как распределять диапазоны значений для первичных ключей между филиалами клиентов и их ноутбуками клиентов "на выезде". GUID придумали ж, что же не юзать?

2. FIB+ кто-нибудь юзал в пакете с "CHARACTER SET OCTETS COLLATE OCTETS" ?


Digitman   (2004-02-09 15:10:00) [36]


> Смешно даже, ради чего же я GUID завожу?


да фиг тебя знает - зачем)

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


> Тогда бы меня генераторы вполне бы устроили


вот уж не знаю, почему они тебя не устраивают
меня так вполне они устраивают


> неуникальность перв. ключа - это как?


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


И что, сервак такие вещи потерпит?


нет, конечно ...


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

Спасибище, монстры SQL и Delphi!


asp   (2004-02-09 15:07:00) [38]

Не против :)


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

2 asp © (09.02.04 15:00) [11]

Понял, я думал - Вы по поводу длины

... VARCHAR(16) CHARACTER SET OCTETS
COLLATE OCTETS

vs

... CHARACTER(32)

То есть Вы не против варианта:

... CHARACTER (16) CHARACTER SET OCTETS
COLLATE OCTETS

???

А FIB+/IBX/BDE - компоненты позволяют в .AsString все подряд записывать?


asp   (2004-02-09 15:00:00) [40]

VARCHAR - строка переменной длины. Это, разумеется, в большинстве случаев удобнее и храниться символов столько, сколько заполнено. Но СУБД при чтении "вынуждена оценивать" длину строки.
В случае CHARACTER СУБД читает количество символов определенных при объявлении столбца таблицы.
Поскольку GUID всегда одинаковой длины - логичнее объявить CHARACTER().


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

Наверх

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