powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Конкуренция нескольких Java-приложений за ресурс в БД Oracle
25 сообщений из 70, страница 2 из 3
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045917
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123сначала select update убрать.
А тогда и очереди не понадобятся )
Вот и о том же )
JDSт.е. блокировка накладывается только на момент изменения данных, а то и вообще просто в контексте самого апдейта (без select for update)

function set_flag return number
is
n_res number;
begin
update mytable_with_flag -- упрощенно
set flag = 1
where flag = 0;

if sql%rowcount = 0 then
n_res := 0; -- флаг уже стоит
else
n_res := 1; -- флаг выставили
end if;

return n_res;
end;
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045922
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
ну перепутал чел бизнес транзакцию и технические оракла. Бывает.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045928
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas1. Серверов приложений и так несколько, но проблемы это не снимает. Обвязка между несколькими СП, некий координатор? Вопросо будет ещё больше, ИМХО.


* У сервер приложения конекты с СУБД как бы не должны отваливаться (только в аварийных случаях)
* Отвалившихся клиентов будет проще определить
* Что означает аббревиатура СП?

urvas2.Вот про очереди бы поподробнее. Точнее, про все составляющие этого процесса. Я не даром упомянул про JMS и AQ. Есть подобный опыт?

Я думаю тут много кто имел опыт по работе с JMS и AQ, ничего там особо хитрого/сложного нет.
Чтобы говорить про очереди, нужно больше информации по вашей задаче.

Если у вас все сводится к списку задач которые клиенты должны брать и выполнять, то я думаю через очереди все хорошо получится.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045957
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDSкоммититься не забываем )
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function set_flag return number
is
  n_res number;
begin
  update mytable_with_flag -- упрощенно
        set flag = 1
   where flag = 0;

 if sql%rowcount = 0 then
    n_res := 0; -- флаг уже стоит
 else
    n_res := 1; -- флаг выставили
  end if;
  
  commit;
  return n_res;
end;

...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045971
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDSJDSкоммититься не забываем )
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function set_flag return number
is
  n_res number;
begin
  update mytable_with_flag -- упрощенно
        set flag = 1
   where flag = 0;

 if sql%rowcount = 0 then
    n_res := 0; -- флаг уже стоит
 else
    n_res := 1; -- флаг выставили
  end if;
  
  commit;
  return n_res;
end;



а чем это принципеально отличается от select update,
ведь в случае неожиданного разрыва коннекта, будет тоже самое.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045978
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xifrА чем это принципеально отличается от select update,
ведь в случае неожиданного разрыва коннекта, будет тоже самое.
Абсолютно верно - практически ничем, кроме того, что можно выставить флаг без select for update (просто мелкое замечание)
Насчет неожиданного разрыва тоже писал - надо убрать управление блокировками напрямую из java или какого-либо другого СП
и как вариант, запускать процедуры джобами )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046012
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Вот Вы никак не хотите понять, что база не может сама принимать решение о старте какого-либо её, базы, внутреннего приложения. В моём случае это внешний сигнал из Java, а поэтому никакие джобы не помогут - они либо сигнала не увидят (если флаг не выставить), либо дружною толпою начнут обработку (если доверить вызов джобов внешнему приложению).
Собственно, вопрос больше концептуальный - видимо, необходим какой-то промежуточный слой/механизм, обеспечивающий единственную точку с гарантированным последовательным доступом к запуску ХП/выставлению флага в БД. Потому как все предложенные способы не обеспечивают работоспособность в аварийной ситуации за приемлемое время.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046022
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasСобственно, вопрос больше концептуальный - видимо, необходим какой-то промежуточный слой/механизм, обеспечивающий единственную точку с гарантированным последовательным доступом к запуску ХП/выставлению флага в БД. Потому как все предложенные способы не обеспечивают работоспособность в аварийной ситуации за приемлемое время.
Угу.
Многопользовательсую СУБД Оракле нагнуть через последовательный доступ.
Концептуально).
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046027
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

В моём конкретном случае многопользовательность - зло. В моей задаче, как в стометровке или марафоне, стартует сколь угодно много, но победитель всегда один. Или по-другому - дрочеров много, а отец один.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046042
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasВот Вы никак не хотите понять, что база не может сама принимать решение о старте какого-либо её, базы, внутреннего приложения. В моём случае это внешний сигнал из Java, а поэтому никакие джобы не помогут - они либо сигнала не увидят (если флаг не выставить), либо дружною толпою начнут обработку (если доверить вызов джобов внешнему приложению).

По порядку:
1. Java-приложение дает базе сигнал на запуск ХП в виде создания джоба (т.е. по сути оно поставило задание в очередь) - все дальше оно может хоть отваливаться, хоть еще 100 джобов попытаться поставить. Чем это не сигнал базе? )

2. Внутри самой ХП прописывается механизм выставления флага. Т.е. джоб запускает процедуру, а уже процедура, выставляет флаг, если у нее не получилось выставить флаг, значит кто-то уже выставил флаг ранее (другой джоб) в этом случае (смотря что нужно) процедура или просто завершается (возможно с протоколом и т.п. в общем как душе угодно), или ждет завершения уже работающей сессии может там через алерты/пайпы (надо покурить про них), второй вариант сложнее, когда надо ждать завершения.
В каком месте здесь может быть " они либо сигнала не увидят (если флаг не выставить), либо дружною толпою начнут обработку (если доверить вызов джобов внешнему приложению)" ?
В том, что таким механизмом можно точно сделать обработку по очереди, а не сразу всей толпой, в этом не сомневаюсь.

Единственное, возможно, хотите сказать, что есть требование, что выполняем ХП 100% только в том случае, если java-приложение имеет коннект вплоть до завершения выполнения этой самой ХП, в противном случае, необходимо откатить все назад.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046049
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плюс требования к скорости, если надо все делать оч. быстро, то да с джобами, не очень имхо.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046099
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вариант (немного изуверский, но в некоторых ситуациях можно попробовать):
1. Никакой флаг блокировки не выставляется
2. Каждое java-приложение обрабатывает данные во временной таблице (т.е. сначала забирает данные во временную таблицу и крутит их как угодно никто никого опять же тоже не блокирует, т.к. каждый работает со своими данными)
3. Сбрасывают изменения в постоянную таблицу и вот тут, кто первый сбросил, того и тапки ) (отследить можно по номеру изменения например на сиквенсе, который мы забираем при подхвате данных во временную таблицу)
Возможно этот же вариант, можно попытаться реализовать, задав соответствующий уровень изоляции транзакции, но с этим не приходилось эксперемнтировать )
Если Java-приложение отваливается, то оно никого не держит - только данные во врем. табличках, которые автоматом почистятся.

Понятно, что если надо продублировать много данных из разных таблиц, если подразумевается, что одновременно могут работать сотни сессий в таком ключе, если необходимо максимальное время отклика, а не переливание из таблицы в таблицу, то удовольствие сомнительное )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046125
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Да, похоже, что создание джоба из Java может помочь, спасибо.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046147
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasJDS,
Да, похоже, что создание джоба из Java может помочь, спасибо.
угу. Особенно под пользователем sys.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046152
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasPetro123,
В моём конкретном случае многопользовательность - зло. В моей задаче, как в стометровке или марафоне, стартует сколь угодно много, но победитель всегда один. Или по-другому - дрочеров много, а отец один.
даже не верится, что это написал ТС, который знает слова OLTP\WAS
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046189
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS1. Никакой флаг блокировки не выставляется
2. Каждое java-приложение обрабатывает данные во временной таблице (т.е. сначала забирает данные во временную таблицу и крутит их как угодно никто никого опять же тоже не блокирует, т.к. каждый работает со своими данными)
3. Сбрасывают изменения в постоянную таблицу и вот тут, кто первый сбросил, того и тапки ) (отследить можно по номеру изменения например на сиквенсе, который мы забираем при подхвате данных во временную таблицу)
Возможно этот же вариант, можно попытаться реализовать, задав соответствующий уровень изоляции транзакции, но с этим не приходилось эксперемнтировать )
Если Java-приложение отваливается, то оно никого не держит - только данные во врем. табличках, которые автоматом почистятся.

Понятно, что если надо продублировать много данных из разных таблиц, если подразумевается, что одновременно могут работать сотни сессий в таком ключе, если необходимо максимальное время отклика, а не переливание из таблицы в таблицу, то удовольствие сомнительное )
Чувак. Найми себе аналитика + разработчика Java/Oracle.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046274
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧувак. Найми себе аналитика + разработчика Java/Oracle
Спасибо, денег только дайте, обязательно найму, хоть тыщу аналитиков и три тыщи старших помощников младших аналитегов )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046423
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123urvasPetro123,
В моём конкретном случае многопользовательность - зло. В моей задаче, как в стометровке или марафоне, стартует сколь угодно много, но победитель всегда один. Или по-другому - дрочеров много, а отец один.
даже не верится, что это написал ТС, который знает слова OLTP\WAS

Если Вы желаете скатиться в унылый троллинг, то предлагаю Вам отойти от понятия "вера" и для начала освежить в памяти курс философии, а именно понятия диалектики, истины и закон перехода количества в качество.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046427
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas,
обиделсо? Тебя конкретно все со второго поста спросили - зачем UPDATE?
Твои проблемы.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046446
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123urvas,
обиделсо? Тебя конкретно все со второго поста спросили - зачем UPDATE?
Твои проблемы.

Обиделось, конечно же...

Oracle® Database Concepts 11gRelease 2 (11.2) E40540-02, p.196
A reader never blocks a writer.
Because a reader of a row does not lock it, a writer can modify this row. The only
exception is a SELECT ... FOR UPDATE statement, which is a special type of SELECT
statement that does lock the row that it is reading.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046451
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas,
позови взрослых.
Тебя спрашивали зачем с точки зрения пользователей?
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046471
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123угу. Особенно под пользователем sys.
Вы-таки шото имете против джобов? ) При чем тут сис непонятно )
Petro123, и чо вы прицепились к человеку зачем, да зачем, по всей видимости речь идет как раз не об олтп-операциях, а просто о запуске некой длительной обработки в контексте конкретной задачи, совсем не факт, что так будет построена вся система, даже для маленьких коротких запросов, хотя фиг знает конечно )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046505
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Job запускается под рутом.
Т.е. клиенты будут запускать под рутом.
Т.е. решение Г.
А так, как ты пишешь, фиг знает.)))
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046514
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Вы совершенно верно поняли суть - нам необходимо извне запустить некие процессы обработки, но сделать это необходимо только один и только один раз и очень быстро. В целях диверсификации все живые внешние объекты обязаны попытаться стартовать процесс в базе, но победить должен только один, остальные - к расстрелу.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046518
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вангую, этот топик проживет долго.
У ТС литературный дар.
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Конкуренция нескольких Java-приложений за ресурс в БД Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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