Конференция "Базы" » MySQL 5.0 - "клон" Interbase ?
 
  • Ega23 © (25.06.08 09:50) [20]

    > И ПРАВИЛЬНО делает


    Оракл - ацтой, ini-файлы рулят!
  • Правильный-Вася (25.06.08 11:00) [21]

    > Оракл - ацтой, ini-файлы рулят!

    оракл - это система уравления ини-файлами, только они зашифрованы
    а ты не знал?
    ;)

    > >Генераторы же прибавляют и убавляют что угодно, тем самым
    > много более полезны.если не сложно, приведите пример выгоды
    > от такого поведения?

    да хотя бы то, что можно самому варьировать шаг генератора в любом месте, а не только при создании (хочу, добавлю 10, хочу - единицу), как в оракле
    генераторы можноприменить ведь не только для создания искусственных первичных ключей
  • Anatoly Podgoretsky © (25.06.08 11:04) [22]
    > MsGuns  (25.06.2008 9:49:19)  [19]

    Неплохо бы уточнить, что такое Сиквенс, а то слухи ходят разные, мол это какая то сверхособенная сущность.
  • Кщд (25.06.08 14:28) [23]
    >Правильный-Вася   (25.06.08 11:00) [21]
    произвольный шаг - через небольшую самописную ф-цию:
    gen_id(p_sequence_name => 'sequence_name', p_step => :step)

    не то?
  • Правильный-Вася (25.06.08 16:40) [24]

    > произвольный шаг - через небольшую самописную ф-цию:

    а в обратную сторону?
  • PEAKTOP © (25.06.08 18:53) [25]
    > SEQUENCE только и умеет что "1" прибавлять.
    > Генераторы же прибавляют и убавляют что угодно, тем самым много более полезны.
    > Имхо, оставят :)

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

    > а в обратную сторону?

    В ЖарПтице это не более чем, как замена одного служебного слова другим, GEN_ID никуда не денется. Удобства, конечно прибавилось: можно прямо в Insert делать автоинкремент без триггера
    INSERT INTO MY_TABLE(ID, NAME)VALUES(NEXT VALUE FOR <SEQUENCE_NAME>, 'VALUE');

    , но "внутрях" сервера ничего не поменялось. Также прирост значения SEQUENCE в Firebird в функции GEN_ID может быть отрицательным. Хочешь "расти" на вставке не на единицу, - пожалуйста, хочешь расти "в обратную сторону" - кто не дает ?

    > Неплохо бы уточнить, что такое Сиквенс, а то слухи ходят разные, мол это какая то сверхособенная сущность.

    Ничего нового. Просто в разных SQL серверах стали появляться транзитивно-независимые переменные (например, в MySQL они называются VARIABLES), которые используют в качестве генераторов уникальных значений по образу и подобию того, как в InterBase с давних времен использовали GENERATOR. Чтоб не путаться и иметь кросс-серверные скрипты создания метаданных БД договорились, что отныне они будут именоваться SEQUENCE у всех.
  • Anatoly Podgoretsky © (25.06.08 20:19) [26]
    > PEAKTOP  (25.06.2008 18:53:25)  [25]

    Вот взял все и приземлил, некоторые Ораклисты утверждают, что SEQUENCE в Оракл не имеет аналогов, IB/FB/MsSQL это всего лишь бледные поделки.
  • Loginov Dmitry © (25.06.08 22:23) [27]
    > Удобства, конечно прибавилось: можно прямо в Insert делать
    > автоинкремент без триггера INSERT INTO MY_TABLE(ID, NAME)
    > VALUES(NEXT VALUE FOR <SEQUENCE_NAME>, 'VALUE');


    А чем это отличается от возможности
    INSERT INTO MY_TABLE(ID, NAME)VALUES(GEN_ID(<SEQUENCE_NAME>, 1), 'VALUE');


    которая есть с давних времен?
  • Игорь Шевченко © (25.06.08 22:50) [28]

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


    В оракле много чего есть - он большой и толстый

    > можно прямо в Insert делать автоинкремент без триггера INSERT
    > INTO MY_TABLE(ID, NAME)VALUES(NEXT VALUE FOR <SEQUENCE_NAME>,
    >  'VALUE');


    ну да, ну да.

     INSERT INTO foo(id,name) VALUES ((SELECT foo_seq.NEXTVAL FROM dual),
       'NAME');
  • Кщд (26.06.08 06:00) [29]
    >Правильный-Вася   (25.06.08 16:40) [24]
    >а в обратную сторону?
    собственно, этим и интересовался: в чем практическая необходимость декремента?
  • Кщд (26.06.08 06:08) [30]
    Игорь Шевченко ©   (25.06.08 22:50) [28]

    >INSERT INTO foo(id,name) VALUES ((SELECT foo_seq.NEXTVAL FROM dual),'NAME');
    теперь можно и без select from dual
  • Sergey13 © (26.06.08 08:51) [31]
    > [24] Правильный-Вася   (25.06.08 16:40)
    > а в обратную сторону?

    Вроде как в оракловой секвенции есть параметр increment by, который может быть и отрицательным.
  • Правильный-Вася (26.06.08 11:06) [32]

    > есть параметр increment by, который может быть и отрицательным

    может
    но нельзя одновременно сиквенс то вперед, то назад дергать

    > в чем практическая необходимость декремента?

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

    а уж в однопользовательских системах это вообще простор для фантазии
  • MsGuns © (26.06.08 11:37) [33]
    >а уж в однопользовательских системах это вообще простор для фантазии

    Ну почему же в однопользовательских ?
    У меня генераторы используются для нумерации документов в системе. Для каждого типа документов - свой генератор, сбрасываемый 1-го января если нужно.
  • Sergey13 © (26.06.08 11:57) [34]
    > [32] Правильный-Вася   (26.06.08 11:06)
    > но нельзя одновременно сиквенс то вперед, то назад дергать

    Ну и слава богу! 8-)
    Они не для того и придуманы.
  • Правильный-Вася (26.06.08 12:06) [35]

    > Они не для того и придуманы.

    узко смотришь
    это всего лишь глобальная переменная базы
    а как ее использовать, дело разработчика
    если он видит в ней смысл только для автоинкремента, его право
    но не стоит ограничивать других
  • Sergey13 © (26.06.08 13:11) [36]
    > [35] Правильный-Вася   (26.06.08 12:06)
    > узко смотришь

    Так китаец я. 8-)

    > это всего лишь глобальная переменная базы
    Это просто разный подход производителя к проблеме. Некторыми вещами производитель позволяет играться, другими нет. У оракла помнится около 200 настроечных параметров, у жарптицы меньше десятка вроде. У жарптицы возможны несколько одновременных транзакций в одной сессии у оракла 1. Плохо ли хорошо ли - не знаю, но вот от ораклистов как то меньше поступает вопросов на тему "я вставил запись - где она". Оракл не дает так лихо рулить сиквенсами, поэтому наверное у его пользователей поменьше и конфликтов при вставке. Хотя мне сложно придумать применение для игр с генератором при многопользовательской работе.
  • PEAKTOP © (26.06.08 14:49) [37]
    > Хотя мне сложно придумать применение для игр с генератором
    > при многопользовательской работе.


    Да ну есть такие области применения. Например, когда учетная система - Распределенная СУБД, и ежедневно филиальные базы приносят на флешках на центральный офис и скидывают в общую папку. Кто их потом подгрузит в центральную базу - леший ведает. Вот и надо обеспечить НЕвозможность одновременной подгрузки одного и того же филиала с разных компов. Тут на помощь транзитивно-независимые переменные и приходят.
  • Anatoly Podgoretsky © (26.06.08 14:52) [38]
    > Правильный-Вася  (26.06.2008 11:06:32)  [32]

    Генераторы придуманы не для создания каких либо ключей и единственно только для генерации значений, вне транзакции, они вообще к полям отношения не имеют, а то что в ИБ/ФБ их используют для иммитации автоинкриметных полей так это из-за недостатков ИБ/ФБ.
  • Правильный-Вася (26.06.08 15:26) [39]

    > в ИБ/ФБ их используют для иммитации автоинкриметных полей
    > так это из-за недостатков ИБ/ФБ.

    это как раз достоинство, а не недостаток
    автоинкрементные поля - зло, их невозможно использовать нормально
 
Конференция "Базы" » MySQL 5.0 - "клон" Interbase ?
Есть новые Нет новых   [134434   +28][b:0][p:0.001]