Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT / 25 сообщений из 32, страница 1 из 2
05.01.2012, 22:56
    #37603579
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
Если нужен автоинкремент по одной таблице то что лучше использовать SEQUENCE, IDENTITY , SERIAL или AUTOINCREMENT?
Допустим я использовал для:
1. MSSQL - IDENTITY
2. MYSQL - AUTOINCREMENT
3. ORACLE - SEQUENCE + trigger
4. FIREBIRD - SEQUENCE + trigger
5. POSTGRESQL - SEQUENCE + trigger (но он же поддерживает и SERIAL)
Кстати, в чем различие IDENTITY, SERIAL и AUTOINCREMENT?

Чем от них отличается SEQUENCE понятно - это сквозная нумерация по 1 и более таблиц, но чем он лучше остальных способов не понятно и не очень красиво выглядит триггер с ним на каждую таблицу.
...
Рейтинг: 0 / 0
05.01.2012, 23:03
    #37603587
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SEQUENCE vs IDENTITY4. FIREBIRD - SEQUENCE + trigger

Не нравится писать собственные триггера - используй AUTOINCREMENT, сервер нужный триггер
сам создаст.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.01.2012, 23:14
    #37603599
SEQUENCE MS SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
авторДопустим я

1. MSSQL - SEQUENCE + DEFAULT CONSTRAINT

авторпо одной таблице ... на каждую таблицу

Вы, уж, определитесь в постановке задачи...
...
Рейтинг: 0 / 0
05.01.2012, 23:30
    #37603625
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SEQUENCE MS SQLавторДопустим я

1. MSSQL - SEQUENCE + DEFAULT CONSTRAINT

авторпо одной таблице ... на каждую таблицу

Вы, уж, определитесь в постановке задачи...
http://msdn.microsoft.com/en-us/library/ff878091(v=SQL.110).aspx
SEQUENCE появиться только в SQL Server 2012. И что значит DEFAULT CONSTRAINT? В SQL Server 2012 можно будет SEQUENCE писать в DEFAULT и он сам будет автоинкремениться при инсертах?
К слову в Oracle, Firebird и PostgreSQL так сделать нельзя, нужен обязательно триггер.

Постановки задачи как таковой нет - есть необходимость разобраться в каком случае что лучше?
...
Рейтинг: 0 / 0
05.01.2012, 23:36
    #37603628
Warstone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SEQUENCE vs IDENTITY5. POSTGRESQL - SEQUENCE + trigger (но он же поддерживает и SERIAL)SERIAL + DEFAULT в INSERT'е. Это не создает триггера.
...
Рейтинг: 0 / 0
05.01.2012, 23:37
    #37603631
Ы
Ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
К слову в Oracle, Firebird и PostgreSQL так сделать нельзя, нужен обязательно триггер.
В PostgreSQL триггер не нужен: там есть псевдотип serial, который сам (почти) все делает. При создании колонки, напр., id serial будет создана последовательность, из которой автоматически будут браться значения. Технически это будет id default nextval('sequence_name').
...
Рейтинг: 0 / 0
05.01.2012, 23:38
    #37603634
SEQUENCE MS SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SEQUENCE vs IDENTITYВ SQL Server 2012 можно будет SEQUENCE писать в DEFAULT и он сам будет автоинкремениться при инсертах?

http://msdn.microsoft.com/en-us/library/ff878370(v=sql.110).aspx Example D

SEQUENCE vs IDENTITYПостановки задачи как таковой нет

Когда будет - приходите...
...
Рейтинг: 0 / 0
05.01.2012, 23:43
    #37603639
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SEQUENCE vs IDENTITYно чем он лучше остальных способов не понятноТем что это механизм генерации уникальных id не привязанный к таблицам и полям.
SEQUENCE vs IDENTITY не очень красиво выглядит триггер с ним на каждую таблицу. А явно в инсерте sequence.nexval прописать религия не позволяет?
...
Рейтинг: 0 / 0
05.01.2012, 23:48
    #37603640
SEQUENCE MS SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SERG1257А явно в инсерте sequence.nexval прописать религия не позволяет?

Когда программисту надоедает работать руками - он начинает работать головой. ((с) Не моё)
...
Рейтинг: 0 / 0
06.01.2012, 11:07
    #37603869
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SEQUENCE vs IDENTITYЧем от них отличается SEQUENCE понятно - это сквозная нумерация по 1 и более таблиц, но чем он лучше остальных способов не понятно
Возможность "оторвать" значение от таблицы даёт свободу манёвра, позволяющую легче реализовывать некоторую функциональность. Типовые варианты использования:

Создание/редактирование на клиенте мастер-детальных данных без длинных транзакций

Сквозная нумерация однородных сущностей, распределённых по нескольким таблицам

Генерация номеров документов

Извращения типа "обойти номера записей, вставленных руками"

SEQUENCE vs IDENTITY и не очень красиво выглядит триггер с ним на каждую таблицу.
Это да. Какого хрена ещё во времена какого-нибудь Oracle 7 не сделали DEFAULT SEQ_NAME.NEXTVAL, я не понимаю и вряд ли пойму.
...
Рейтинг: 0 / 0
06.01.2012, 11:10
    #37603871
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SERG1257А явно в инсерте sequence.nexval прописать религия не позволяет?
У такого решения есть изрядные недостатки с точки зрения качества кода.
...
Рейтинг: 0 / 0
10.01.2012, 15:16
    #37607711
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
> У такого решения есть изрядные недостатки с точки зрения качества кода.

а переключение контекста в триггере это хорошее качество кода? Каков по Вашему мнению тогда лучший способ вызова nextval в Oracle?
...
Рейтинг: 0 / 0
10.01.2012, 16:41
    #37607890
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
Shtockа переключение контекста в триггере это хорошее качество кода?
Переключение контекста - это вопрос производительности. К качеству кода (в том смысле, в котором обычно понимается это слово) это отношения не имеет.

ShtockКаков по Вашему мнению тогда лучший способ вызова nextval в Oracle?
Зависит от контекста. В разных ситуациях я их использовал пожалуй что все которые могу придумать, и каждый из них обладает недостатками, позволяющими легко построить контрпример "когда этот способ явно не лучший".
...
Рейтинг: 0 / 0
10.01.2012, 17:02
    #37607922
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
Я, например, очень полюбил nextval прямо в select, когда использую insert all. Там без него плохо....
...
Рейтинг: 0 / 0
10.01.2012, 17:06
    #37607925
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
ShtockЯ, например, очень полюбил nextval прямо в select, когда использую insert all. Там без него плохо....
Для вставки из запросов в таблицы связанные по FK?
...
Рейтинг: 0 / 0
10.01.2012, 17:06
    #37607926
Yo.!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
softwarerЗависит от контекста. В разных ситуациях я их использовал пожалуй что все которые могу придумать, и каждый из них обладает недостатками, позволяющими легко построить контрпример "когда этот способ явно не лучший".
здесь играем, здесь не играем, а тут мы рыбу заворачивали (с)
и это в контексте качества кода !?
...
Рейтинг: 0 / 0
10.01.2012, 17:17
    #37607950
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
Yo.!, не приходило ли Вам когда-нибудь в голову, что, например, ETL-загрузка данных, OLTP с процедурной оболочкой над таблицами и, например, толстенный клиент вообще без логики на сервере - это немного разные контексты (не говоря уже о том, что часто разные проекты и разные заказчики), и применять в них один универсально плохой метод будет только... ну в общем кое-кто и будет.
...
Рейтинг: 0 / 0
10.01.2012, 22:53
    #37608357
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
>связанные по FK - аха, именно для их. Для моих задач обычное дело когда одним инсертом данные уходят в 3-6 таблиц.
...
Рейтинг: 0 / 0
11.01.2012, 03:57
    #37608589
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
softwarerи применять в них один универсально плохой метод будет только... ну в общем кое-кто и будет.

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

я понимаю, что это все разные методы использования генераторов. Но не понимаю, зачем разработчику потребовалось городить такую кашу.
...
Рейтинг: 0 / 0
11.01.2012, 11:06
    #37608810
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
kdvя понимаю, что это все разные методы использования генераторов. Но не понимаю, зачем разработчику потребовалось городить такую кашу.
Не понимаете - значит, вполне вероятно, зря городил. С другой стороны, например, в первый раз я отступил от принятой в конторе практики генерации id в триггерах, когда требовалось массово грузить в приложение некие данные со стороны, и отказ от этих триггеров увеличил скорость загрузки в пять-десять раз. Полагаете, был неправ?
...
Рейтинг: 0 / 0
19.01.2012, 21:24
    #37623223
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
В Informix используется Serial, можно еще Sequence, но когда есть Serial зачем использовать что то еще (если нужны последовательные значения)? Не надо городить триггеры, все просто - объявил поле Serial и получай готовые значения.
...
Рейтинг: 0 / 0
19.01.2012, 22:04
    #37623256
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
Andron , вполне логично. А насколько скорость serial отличается от аналогичной через SEQUENCE + trigger или SEQUENCE в INSERT-запросе?

softwarerkdvя понимаю, что это все разные методы использования генераторов. Но не понимаю, зачем разработчику потребовалось городить такую кашу.
Не понимаете - значит, вполне вероятно, зря городил. С другой стороны, например, в первый раз я отступил от принятой в конторе практики генерации id в триггерах, когда требовалось массово грузить в приложение некие данные со стороны, и отказ от этих триггеров увеличил скорость загрузки в пять-десять раз. Полагаете, был неправ?
1. Отключили триггеры и импользовали SEQUENCE в инсертах?
2. Или вообще отказались от SEQUENCE?
...
Рейтинг: 0 / 0
20.01.2012, 14:20
    #37624094
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SEQUENCE vs IDENTITY1. Отключили триггеры и импользовали SEQUENCE в инсертах?
2. Или вообще отказались от SEQUENCE?
Отключил триггеры, сделал сиквенсам increment by 1000 и формировал данные для direct load-а.
...
Рейтинг: 0 / 0
20.01.2012, 14:44
    #37624187
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
softwarerSEQUENCE vs IDENTITY1. Отключили триггеры и импользовали SEQUENCE в инсертах?
2. Или вообще отказались от SEQUENCE?
Отключил триггеры, сделал сиквенсам increment by 1000 и формировал данные для direct load-а.
Т.е. в интервалах по 1000 нумеровали уже сами?
А установить кэш не пробовали ALTER SEQUENCE seq CACHE 2000; или вообще нумеровать самому без сиквенсов через оконные функции?
...
Рейтинг: 0 / 0
20.01.2012, 14:50
    #37624200
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
SEQUENCE vs IDENTITYТ.е. в интервалах по 1000 нумеровали уже сами?
Да.

SEQUENCE vs IDENTITYА установить кэш не пробовали
А смысл? Кэш регулирует быстродействие сервера, а целью в данном случае было избежать огромного количества тупых синхронных запросов к серверу "за айдишниками".

SEQUENCE vs IDENTITYили вообще нумеровать самому
А нафига такое счастье?
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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