Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Генерация ID для примари кея / 23 сообщений из 23, страница 1 из 1
05.01.2006, 12:48
    #33469008
Костя П.О.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Всем привет!

А кто как генерит сабж?
...
Рейтинг: 0 / 0
05.01.2006, 13:06
    #33469041
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
id char(36) deafult uuidtostr(newid())
...
Рейтинг: 0 / 0
05.01.2006, 13:25
    #33469076
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
id integer not null default autoincrement
____________________________________
- Гарфилд, мышь!
- Спасибо, я сыт!
...
Рейтинг: 0 / 0
05.01.2006, 14:36
    #33469199
Костя П.О.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
uuidtostr() это что за зверь? чёт не могу найти, DynaText говорит что незнает такого....
...
Рейтинг: 0 / 0
05.01.2006, 14:51
    #33469228
Костя П.О.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Кстати справедливости ради стоит сказать что сабж касается ASE
...
Рейтинг: 0 / 0
05.01.2006, 15:29
    #33469270
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Костя П.О. пишет:
> Кстати справедливости ради стоит сказать что сабж касается ASE

с этого и надо было начинать, а не заставлять добрых людей зря
напрягаться. Лень прочитать заголовок первого топика? Или однако чукча
писатель, а не читатель? Читай документацию на предмет identity.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
05.01.2006, 16:16
    #33469319
Костя П.О.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Александр ГoлдунЧитай документацию на предмет identity.

мне не суть интересна теория. хотя без неё никуда! интересуют как практические примеры так и теория. кого-то устраивает хаотичный ключ базирующийся на genid, кто-то инкрементирует. в моём комплексе используется составной ключ.
типа:
- 6 символов время
- 2 сивола код комплекса
- 4 символа счётчик
...
Рейтинг: 0 / 0
05.01.2006, 19:45
    #33469590
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Костя П.О. Александр ГoлдунЧитай документацию на предмет identity.

мне не суть интересна теория. хотя без неё никуда! интересуют как практические примеры так и теория. кого-то устраивает хаотичный ключ базирующийся на genid, кто-то инкрементирует. в моём комплексе используется составной ключ.
типа:
- 6 символов время
- 2 сивола код комплекса
- 4 символа счётчик
И зачем такой большой составной ключ, если IDENTITY делает ровно столько, сколько нужно ? И при чем тут теория, когда любой сервер имеет четко описанный функционал, который и нужно стремиться использовать в практике, а как раз не придумывать теории ?
...
Рейтинг: 0 / 0
06.01.2006, 11:24
    #33469999
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
IDENTITY.
...
Рейтинг: 0 / 0
10.01.2006, 17:58
    #33474938
Костя П.О.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
ASCRUSИ зачем такой большой составной ключ, если IDENTITY делает ровно столько, сколько нужно?
ну... я всей картины не знаю, но уверен что более менее правильно понимаю суть такого подхода. Так как имеется N комплексов все они возможно связываются в некой единой точке. Код комплекса позволяет определить к какому комплексу относится событие, идентити наврядли это предоставит. а время и счётчик это уже вытекающее.
зы если я правильно конечно понимаю суть....
...
Рейтинг: 0 / 0
10.01.2006, 18:15
    #33474973
Костя П.О.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
ASCRUSИ зачем такой большой составной ключ, если IDENTITY делает ровно столько, сколько нужно?

Также есть ещё один момент. Допустим по факту инсерта мне необходим примарикей для каких-то действий. Как я его получу если будет допустим автоинкремент? селест макс? по идее это криво. Предполагаю что с идентити ситуация таже.
...
Рейтинг: 0 / 0
10.01.2006, 18:17
    #33474975
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Костя П.О. пишет:

> Также есть ещё один момент. Допустим по факту инсерта мне необходим
> примарикей для каких-то действий. Как я его получу если будет допустим
> автоинкремент? селест макс?

Ни в коем случае! См. в хелпах про переменную @@identity
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
10.01.2006, 18:25
    #33474990
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Костя П.О. ASCRUSИ зачем такой большой составной ключ, если IDENTITY делает ровно столько, сколько нужно?

Также есть ещё один момент. Допустим по факту инсерта мне необходим примарикей для каких-то действий. Как я его получу если будет допустим автоинкремент? селест макс? по идее это криво. Предполагаю что с идентити ситуация таже.
Лучше не предполагать, а все таки читать документацию и впервую очередь искать уже готовое решение. Избежите множества ошибок, которые потом могут выйти боком
...
Рейтинг: 0 / 0
11.01.2006, 12:45
    #33476264
Костя П.О.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Александр ГoлдунНи в коем случае! См. в хелпах про переменную @@identity
Posted via ActualForum NNTP Server 1.3
сенкс! такс, пошёл штудировать буки :)

ASCRUSЛучше не предполагать, а все таки читать документацию и впервую очередь искать уже готовое решение. Избежите множества ошибок, которые потом могут выйти боком
Эх, кто б спорил:) Просто есть куча существующих комплексов(с генерацией примарикея как описано выше) мной на данный момент разрабатывается новый. Вот и сижу и думаю, быть как все:) или выделеться и сделать "правильно"
...
Рейтинг: 0 / 0
11.01.2006, 22:53
    #33477695
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Костя П.О.используется составной ключ.
типа:
- 6 символов время
- 2 сивола код комплекса
- 4 символа счётчик
Если БД распределенная, а потом реплицируется в одну центральную, то, IMHO, самое нормальное решение. А по поводу где брать Костя П.О.4 символа счётчик - тынць

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
12.01.2006, 11:27
    #33478321
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Поделюсь извращениями по поводу генирации ключей для ASE.
таблица:
Код: plaintext
1.
2.
3.
4.
create table opa_clef(
   cle_table   t_a_sysname  not null,
   cle_id   t_n_id  not null,
   constraint pk_opa_clef primary key clustered ( cle_table )
)
и процедура которая делает
Код: plaintext
update cle_id=cle_id+ 1  where cle_table=@cle_table
НО
Эта процедура вызывалась через Remote Server у которого Server class = sql_server и для ASE версии ниже 12 этот вызов был безтранзакционным что НЕ приводило к блокировкам при наплыве записей в разные таблицы.
И все было безоблачным пока не поставили версию 12. И тут начался геморой.
Чтоб не рушить систему (а она большая), изменили примари кей:
Код: plaintext
constraint pk_opa_clef primary key clustered ( cle_table, cle_id )
и вместо update написали insert select max ... at isolation level 0
блокировок нет, но шибка дублирования ключа есть. поэтому делаем несколько раз до успешного выполнения комманды.

Вот как бывает когда не пользуются стандартом!
...
Рейтинг: 0 / 0
12.01.2006, 11:46
    #33478420
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
ASE 12.5.3
Номер версии очень важен.
1) IDENTITY
Только обязательно задать опцию with identity_gap = 1 или что-то около того взависимости от частоты добавления. А то он вам такого нагенерит.
2) Способ описанный Dmitry. Имеет недостаток увелечения конкуренции между процессами.
3) newid(). Тип поля varbinary(16) или char(32)
...
Рейтинг: 0 / 0
12.01.2006, 14:26
    #33479101
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Поправочка для случая 3) тип varbinary(16) кажется не катит. Только char(32)
...
Рейтинг: 0 / 0
13.01.2006, 03:24
    #33480291
sn1251
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Dmitry....
Эта процедура вызывалась через Remote Server у которого Server class = sql_server и для ASE версии ниже 12 этот вызов был безтранзакционным что НЕ приводило к блокировкам при наплыве записей в разные таблицы.
И все было безоблачным пока не поставили версию 12. И тут начался геморой.
...
Даже с set transactional_rpc off (или для всего сервера enable xact coordination=0) блокировало?
...
Рейтинг: 0 / 0
13.01.2006, 10:29
    #33480608
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
sn1251Даже с set transactional_rpc off (или для всего сервера enable xact coordination=0) блокировало?

Уже не помню точно. Но кажется мы перепробовали все. и даже в сайбейс писали. нам ответили что нельзя безтранзакционно вызвать проц, кроме как на серверах какого-то там класса которые не сайбейс. возможно это был глюк 12.5.0.3 но он был на продакшин базах - решать надо быо быстро.
...
Рейтинг: 0 / 0
13.01.2006, 17:27
    #33482157
Mike Evteev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
А зачем нужна была внетранзакционность?
Я наоборот сделал все под отдельной транзакуцией. Как настоящая IDENTITY - кликает в любом случае. Правда количество операций у меня мизерное, так что производительности это не помеха.
...
Рейтинг: 0 / 0
16.01.2006, 11:15
    #33484370
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
Mike EvteevА зачем нужна была внетранзакционность?

в одной транзакции обрабатывается около 30 таблиц... и одновременных конектов около 50, и все эти ID-шки лежат в одной таблице: взаимных блокировок не избежать.

По поводу Identity: если вставить запись в таблицу с идентити и откатить транзакцию то значение идентити не откатится. так что я-бы сказал что генерация идентити нетранзакционная операция.
...
Рейтинг: 0 / 0
16.01.2006, 18:56
    #33485818
Mike Evteev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация ID для примари кея
автор
По поводу Identity: если вставить запись в таблицу с идентити и откатить транзакцию то значение идентити не откатится. так что я-бы сказал что генерация идентити нетранзакционная операция.


Дак я же об этом и говорю... Поскольку подручными средствами вне транзакции выполнить нельзя, то все вынес в отдельную транзакцию, которая всегда коммитится.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Генерация ID для примари кея / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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