powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Паралеллльный инсерт
50 сообщений из 50, показаны все 2 страниц
Паралеллльный инсерт
    #39549377
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня уважаемые!

Вот такая ситуация

есть примерная такая табличка

Код: plsql
1.
create table tbl(ID NUMBER, str VARCHAR2(100);



id - Primary key
есть уникальный индекс по str

Есть процесс работающий по такому принципу
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
BEGIN
    BEGIN
        SELECT id
          INTO v
          FROM tbl
         WHERE str = some_value;
    EXCEPTION
        WHEN ndf THEN
            v   := NULL;
    END;
    IF v IS NULL THEN
        INSERT INTO tbl (str)
             VALUES (some_value)
          RETURNING id
               INTO v;
    END IF;
END;


Когда начало работать несколько параллельных процессов появились ошибки дубликатов при инсерте, т.к. между чтением и инсертом другой процесс успевал вставить запись.
Переделал код так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
BEGIN
    BEGIN
        SELECT id
          INTO v
          FROM tbl
         WHERE str = some_value;
    EXCEPTION
        WHEN ndf THEN
            v   := NULL;
    END;
    IF v IS NULL THEN
        BEGIN
            INSERT INTO tbl (str)
                 VALUES (some_value)
              RETURNING id
                   INTO v;
        EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN
                SELECT id
                  INTO v
                  FROM tbl
                 WHERE str = some_value;
        END;
    END IF;
END;


Но все равно выглядит некрасиво. Если соседний процесс, вставивший запись, откатит транзакцию получим исключение NO_DATA_FOUND.

А есть ли более красивые стандартные решения такой проблемы?
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549386
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самонаполняющийся справочник следует наполнять в автономке.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549395
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

Ну, это не справочник и его в автономку нельзя никак.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549399
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelleнельзя никак.Тебе, конечно же, виднее.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549401
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleЕсли соседний процесс, вставивший запись, откатит транзакцию, то зададимся вопросом, что же тебе вернул тогда запрос в обработчике DUP_VAL_ON_INDEX ?
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549416
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

В данном случае я упростил пример до того, что он стал выглядеть как справочник, но на самом деле это не так.

env,

ID генерится в триггере из сиквенса. После отката это будет несуществующий id
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549417
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleЕсли соседний процесс, вставивший запись, откатит транзакцию получим исключение NO_DATA_FOUND.

вот ето непонятно

......
stax
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549419
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleВ данном случае я упростил пример до того, что он стал выглядеть как справочник, но на самом деле это не так.Migelleавтономку нельзя никак.Это называется сериализация в конкуренции за ресурс.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549442
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то подобное решали путем предварительного заполнения базы пустыми значениями, с генерацией необходимых ID.
Так что текущая работа делалась не инсертом а апдейтом.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549453
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StaxMigelleЕсли соседний процесс, вставивший запись, откатит транзакцию получим исключение NO_DATA_FOUND.

вот ето непонятно
stax

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	Процесс 1		Процесс 2	
Время		Результат		Результат
-----------------------------------------------
t1	Select	NO_DATA_FOUND 		
t2				Select	NO_DATA_FOUND 
t3	Insert	Ok		
t4				insert	DUP_VAL_ON_INDEX
t5	Rollback			
t6				Select	NO_DATA_FOUND 

Процесс 2 получает NO_DATA_FOUND

ElicЭто называется сериализация в конкуренции за ресурс.

Хорошо. А есть какие нибудь другие варианты решения?
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549458
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelleдругие варианты решения?Приведённый упрощённый пример тебе уже решили.
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549463
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle,

t4 ждет
DUP_VAL_ON_INDEX не будет
соответственно не будет t6

.....
stax
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549473
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Staxt4 ждет
DUP_VAL_ON_INDEX не будет
соответственно не будет t6
stax
Хм... Точно!
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549485
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicПриведённый упрощённый пример тебе уже решили
Я же сказал, что это не справочник и автономные транзакции не подходят. Это заголовок журнала, который не имеет права существовать без подчиненных записей.

Неужели если бы я добавил в пример десяток-другой полей как-то повлияло бы на логику работы?
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549487
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleЭто заголовок журнала, который не имеет права существовать без подчиненных записей.Ну и зачем параллельно создавать один и тот-же "заголовок"? Чтобы всем стоять в очереди?
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549568
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicНу и зачем параллельно создавать один и тот-же "заголовок"? Чтобы всем стоять в очереди? Потому что к заголовку параллельно добавляются подчиненные записи множеством процессов. Первый процесс создает заголовок, остальные пользуются им.

Это не справочник и автономная транзакция не подходит.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549606
Если мастер-запись добавлять после дочерних, в конце основных манипуляций, то время конкуренции за мастера сократится и можно повысить troughput. Вставку мастера, если нет делитов, можно сделать как insert-select-where-not-exists и игнорировать dup_val_on_index.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39549635
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
де ФеррабляЕсли мастер-запись добавлять после дочерних, в конце основных манипуляций, то время конкуренции за мастера сократится и можно повысить troughput. Вставку мастера, если нет делитов, можно сделать как insert-select-where-not-exists и игнорировать dup_val_on_index.
1) шоб делать детей надо знать ид отца
2) insert-select-where-not-exists не поможет, будут дубли да и загадочный RETURNING id под вопросом

.....
stax
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550250
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleЭто заголовок журнала, который не имеет права существовать без подчиненных записей.

Ну так вставь фиктивную дочку а после, отдельным процессом, удали, если нужно.
Где вы такое находите....
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550259
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxде ФеррабляЕсли мастер-запись добавлять после дочерних, в конце основных манипуляций, то время конкуренции за мастера сократится и можно повысить troughput. Вставку мастера, если нет делитов, можно сделать как insert-select-where-not-exists и игнорировать dup_val_on_index.
1) шоб делать детей надо знать ид отца
Шоб делать детей - отца знать не надо, надо знать на кого записать приплод :)
А это вопрос техники генерации идентификаторов и не более того.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550355
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousШоб делать детей - отца знать не надо, надо знать на кого записать приплод :)
А это вопрос техники генерации идентификаторов и не более того.

сдесь и обсуждается техника генерации идентификаторов и не более того

.....
stax
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550378
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxсдесь и обсуждается техника генерации идентификаторов и не более того
Тогда непонятно в чем проблема сгенерироать ID, накидать чилдов а затем финальным аккордом обозначить парента.
Если сомнения касаются FK, то обратите внимание на ник того, кто это предложил - должно стать яснее :)
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550421
d.nemolchev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle,
Если ID в таблице не отрицательны, то можно так решить:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Begin
  Insert Into Tbl
    (Id, Str)
  Values
    (-trunc(Dbms_Random.Value(1, 1e9)), Some_Value)
  Returning Id Into v;
  Update Tbl t Set t.Id = Seq.Nextval Where t.Id = v Returning t.Id Into v;
Exception
  When Dup_Val_On_Index Then
    Null;
End;
/



Ваш триггер, генерирующий ID, должен поддерживать возможность пользовательской вставки ID:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
Create Or Replace Trigger Tbl_Bir_Trg
  Before Insert On Tbl
  For Each Row
  When (New.Id Is Null) /*важно!*/
Begin
  :New.Id := Seq.Nextval;
End;


или на худой случай вот так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
Create Or Replace Trigger Tbl_Bir_Trg
  Before Insert On Tbl
  For Each Row
Begin
  If :New.Id Is Null Then /*важно!*/
    :New.Id := Seq.Nextval;
  End If;



Хотя я, лично я, строго против таких триггеров и настоятельно рекомендую использовать явную генерацию ID в коде приложения. Триггеров при реализации штатного функционала вообще желательно по возможности избегать.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550433
d.nemolchev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшие пояснения к предыдущему сообщению:
Insert пытается вставить значение в уникальный индекс.
При этом ID генерируется случайное, вне диапазона рабочих значений.
Диапазон генерируемых значений ID выбран в 1 млрд для уменьшения вероятности блокировок сеансов разных пользователей, одновременно пробующих выполнить вставку значений (разных) в уникальный индекс.
Если вставляемое значение уже есть в таблице, то улетаем в exception DUP_VAL_ON_INDEX.
В противном случае никто более в другой сессии не сможет вставить такое же значение, какое вставили мы - они будут ждать завершения нашей транзакции в силу наличия уникального индекса на таблице.
В случае успешной вставки строки заменяем случайный ID на штатный из последовательности и на этом всё.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550440
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d.nemolchev,

у Migelle ситуация не с ID, а с str
20935441

....
stax
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550447
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d.nemolchevВ случае успешной вставки строки заменяем случайный ID на штатный из последовательности и на этом всё.
...когда коту делать нечего, он рэндом ID генерирует...
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550456
d.nemolchev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxd.nemolchev,

у Migelle ситуация не с ID, а с str
20935441

....
stax
А я про что?
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550459
d.nemolchev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous...когда коту делать нечего, он рэндом ID генерирует...Простите, я не увидел в данной ветке вашего варианта решения проблемы, означенной топикстартером.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550460
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d.nemolchevПростите, я не увидел в данной ветке вашего варианта решения проблемы, означенной топикстартером.Цирк: моська и слон.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550469
d.nemolchev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Понял, отлетаю. )
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550485
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d.nemolchevStaxd.nemolchev,

у Migelle ситуация не с ID, а с str
20935441

....
stax
А я про что?
Вы про id, а Мигель о str

у него есть конкретное значение str, он сначала ищет ...

....
stax
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550489
d.nemolchev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Внимательно проанализируйте мой код и сравните его действия с потребностями топикстартера.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550513
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelleк заголовку параллельно добавляются подчиненные записи множеством процессов. Первый процесс создает заголовок, остальные пользуются им.
Судя по переписке, логика межпроцессного взаимодействия предполагает, что some_value суть уникальный идентификатор заголовка.
Какую пользу приносит в этой ситуации суррогат?
Похоже, что никакой.
Тогда в случае, когда новые ID появляются относительно нечасто:
1. Постройте по str или по самодельной ~детерминированной функции от него обычный индекс и объявите PK с отложенной проверкой (deferrable initially deferred), что уже предлагалось в топике.
2. Все процессы самостоятельно считают идентификатор на базе some_value согласно алгоритму п.1 и тупо накидывают дочерние записи.
3. Если при фиксации транзакции ловите exception FK - просто вставляете парента с перехватом и игнором нарушения PK.
4. Профит.

Если новые ключи генерируется постоянно - то то же самое, но deferred не делаем и вставку-игнор лепим первым шагом.

В некоторых случаях можно синхронизировать процессы посредством dbms_lock, но не уверен, что это имеет смысл в контексте задачи.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550519
andrey_anonymous,

Да ты просто гений проектирования пользовательских интерфейсов!
Пользук такой набирает, набирает пачку данных, старается, бедолага, а ты ему потом в самый финальный момент - бах! и ексцепшеном по лицу.
Офигеть.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550703
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d.nemolchevStax,

Внимательно проанализируйте мой код и сравните его действия с потребностями топикстартера.
и где в Вашем коде поиск id (вернуть в переменной v) если str = some_value в табличке уже существует?

ps
у Migelle с генерацией id нет проблем (мож у него 12 + автономер)

....
stax
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550726
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d.nemolchevВнимательно проанализируйте мой код и сравните его действия с потребностями топикстартера.
Migelleесть уникальный индекс по str
И чем тут твой код помог?
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550728
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d.nemolchev,

d.nemolchevПростите, я не увидел в данной ветке вашего варианта решения проблемы, означенной топикстартером.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550918
d.nemolchev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Stax]d.nemolchevи где в Вашем коде поиск id (вернуть в переменной v) если str = some_value в табличке уже существует?

А, да.
Сосредоточившись на избегании дубликатов при вставке новых, упустил.
Там, где обрабатываем DUP_VAL_ON_INDEX надо конечно же не
Код: plsql
1.
Null;


а
Код: plsql
1.
Select t.Id Into v From Tbl t Where t.Str = Some_Value;


Но проблема-то топикстартера не в поиске и возврате ID, а совершенно в другом:
MigelleКогда начало работать несколько параллельных процессов появились ошибки дубликатов при инсерте, т.к. между чтением и инсертом другой процесс успевал вставить запись.
Переделал код
/*скипнуто*/
Но все равно выглядит некрасиво. Если соседний процесс, вставивший запись, откатит транзакцию получим исключение NO_DATA_FOUND.

А есть ли более красивые стандартные решения такой проблемы?
Или участники дискуссии в пылу обсуждения забыли какова его цель?
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39550941
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot d.nemolchev]Staxпропущено...

А, да.
Сосредоточившись на избегании дубликатов при вставке новых, упустил.
Там, где обрабатываем DUP_VAL_ON_INDEX надо конечно же не
Код: plsql
1.
Null;


а
Код: plsql
1.
Select t.Id Into v From Tbl t Where t.Str = Some_Value;


Но проблема-то топикстартера не в поиске и возврате ID, а совершенно в другом:
пропущено...

Или участники дискуссии в пылу обсуждения забыли какова его цель ?

Дубликатов не id, а str

зачем заморочки з рандомным id я не понимаю

.....
stax
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551058
d.nemolchev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StaxДубликатов не id, а str
Да.
И у меня код тоже нацелен на избежание дубликатов str, а не id.
Staxзачем заморочки з рандомным id я не понимаю
Чтобы сессии разных пользователей, работающих одновременно с этой процедурой "найти, если нету - вставить", не блокировали друг друга.
Ведь на ID висит primary key, не так ли?
Или вы планируете вместо рандомного ID, значения которого лежат вне рабочего диапазона используемых в таблице ID, использовать значения, получаемые из соответствующего сиквенса, накручивая его при этом вхолостую при каждом факте проверки (а проверок таких может быть очень-очень много в день)?
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551063
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет деферраблюandrey_anonymous,
Да ты просто гений проектирования пользовательских интерфейсов!


1. при чем тут вообще пользовательский интерфейс?
Пользовательский подразумевает поиск родительской записи и окошко для ее создания.
У ТС интерфейс технологический.

2. для людей без соображения воображения:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
create table dropme_parent(strid varchar2(100) primary key, somedata varchar2(2000));

create table dropme_detail(
    strid_fk varchar2(100) 
      references dropme_parent(strid) 
      deferrable initially deferred
  , detaildata varchar2(2000)
);

declare 
  no_parent exception;
    pragma exception_init(no_parent, -2091);
  l_uid dropme_parent.strid%type := 'Обеспечим уникальность';
begin
  -- накидаем чилдов:
  for i in 1..10 loop 
    insert into dropme_detail(strid_fk,detaildata ) values ( l_uid, 'detail #'||i);
  end loop;
  commit; -- если заголовок присутствует, то ничего больше делать не требуется
exception
  when no_parent then
    -- Создадим заголовок
    begin
      insert into dropme_parent (strid, somedata) values(l_uid, 'Autogenerated '||to_char(sysdate,'yyyymmddhh24miss'));
      commit;
    exception 
      when dup_val_on_index -- конкурент успел раньше, просто фиксируем транзакцию
        then commit;
    end;
end;
/

...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551099
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d.nemolchevStaxДубликатов не id, а str
Да.
И у меня код тоже нацелен на избежание дубликатов str, а не id.
Staxзачем заморочки з рандомным id я не понимаю
Чтобы сессии разных пользователей, работающих одновременно с этой процедурой "найти, если нету - вставить", не блокировали друг друга.
Ведь на ID висит primary key, не так ли?
Или вы планируете вместо рандомного ID, значения которого лежат вне рабочего диапазона используемых в таблице ID, использовать значения, получаемые из соответствующего сиквенса, накручивая его при этом вхолостую при каждом факте проверки (а проверок таких может быть очень-очень много в день)?

не понимаю
зачем нужен Dbms_Random и тут же Update Tbl t Set t.Id = Seq.Nextval?

что накручивть и главное зачем?

но то и не важно,
автор наверное уже все свои проблемы решил

......
stax
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551148
andrey_anonymous,

Коммит в серверной процедуре?
Еще прекраснее.
Вы ни разу в прикладе не получали "наполовину закоммиченный" бизнес-процесс?
Скажите в какой конторе вы работаете - я буду ее обходить десятой дорогой.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551155
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет деферраблюКоммит в серверной процедуре?
Где мсье видит процедуру?
Прошу не приписывать мне собственных измышлизмов.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551184
andrey_anonymous,

Ах, ну да.
Анонимный блок, скорее всего являющийся частью другого, очень длинного, бизнес-процесса, и даже может быть не одного, а нескольких.
Это в корне меняет дело, черт побери!
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551197
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет деферраблюАнонимный блок, скорее всего являющийся частью другого, очень длинного, бизнес-процесса, и даже может быть не одного, а нескольких.
Или, как, собственно, было задумано, являющийся просто демонстрацией подхода, указанного на предыдущей странице топика.
В общем и целом не советовал бы копипастить чужой код в свои проекты без осмысления и приложения к собственной задаче - тогда, возможно, не придется встречать "наполовину закоммиченные бизнес-процессы".

Итого:
1. мсье для начала неверно определил технологическую задачу как "пользовательский интерфейс", чем продемонстрировал ограниченность собственного кругозора.

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

3. заявил серьезный опыт в области получения
автор"наполовину закоммиченный" бизнес-процесс

Ну и кто ты после этого?
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551221
andrey_anonymous1. мсье для начала неверно определил технологическую задачу как "пользовательский интерфейс", чем продемонстрировал ограниченность собственного кругозора.

А данные в БД, по-вашему, появляются откуда?
andrey_anonymous2. потом измыслил
авторКоммит в серверной процедуре
чем продемонстрировал неумение управлять транзакцией иначе, чем в хранимом коде.
Кто-то это продемонстрировал?
Ну-ка поподробнее.
andrey_anonymous3. заявил серьезный опыт в области получения
автор"наполовину закоммиченный" бизнес-процесс

Получения?
А может вычищения подобной срани после вам подобных умников, ее в коды приложения пихающих?

Ну и кто ты после этого?
))))))
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551233
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет деферраблюА данные в БД, по-вашему, появляются откуда?
В порядке ликбеза:
Данные появляются в БД по-разному.
Причем серьезные объемы - обычно минуя UI.
Грузятся из файлов, приходят по интеграционной шине, затаскиваются DI-системами, собираются с датчиков, генерируются на основе уже имеющихся данных.
Я понимаю, мсье ничего кроме UI не видел(а), а мир из подразделения мелкого саппорта видится как "навоз и дерьмо" (с).
Но все-таки попробуйте немножко вынырнуть из недр недосистемы, за которой подчищаете - это сильно ограничивает Ваш профессиональный опыт. И перестаньте уже разбрызгивать собственные... ммм... печали на окружающих - это не принесет ни признания, ни уважения.

И ещё. Продолжать обсуждение Ваших фобий и болезненных фантазий мне не очень не интересно.
Будет что-то по делу - велкам.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551238
andrey_anonymousПричем серьезные объемы - обычно минуя UI.
Грузятся из файлов, приходят по интеграционной шине, затаскиваются DI-системами, собираются с датчиков, генерируются на основе уже имеющихся данных.

А, ну если ты намерен бросать эксцепшен в лицо не одного индивидуального юзера, введшего через UI одну пачку связанных данных, а сразу выкидывать серьезный объем данных, пришедший по интеграционной шине, то это конечно же сразу в корне меняет дело!
Делов-то - переслать повторно по ИШ пару-тройку (сотен) мегабайт данных... как два байта переслать
Или же заново всосать в ИС пару-тройку (сотен) файлов, или же (что вообще прекрасно) послать на эксцепшен датчик, приславший данные...
Просто прекрасно.
Скажите мне в какой конторе вы работаете - я буду обходить ее десятой дорогой.
...
Рейтинг: 0 / 0
Паралеллльный инсерт
    #39551242
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет деферраблюА, ну если ты намерен бросать эксцепшен в лицо не одного индивидуального юзера, введшего через UI одну пачку связанных данных, а сразу выкидывать серьезный объем данных
Как я уже отметил, обсуждать Ваши болезненные фантазии мне не интересно.
Никакой объем нигде не выкидывается.
Есть как минимум один вопрос по сути представленного короткого демо, но Ваша паранойя пока даже не близко.
Не насилуйте мозг, не Ваше это.
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Паралеллльный инсерт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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