powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / как сэмулировать режим регламентных работ
29 сообщений из 29, показаны все 2 страниц
как сэмулировать режим регламентных работ
    #38266347
longman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
десктоп-приложение: Java (фреймворк NetBeans), работающее на Glassfish
БД: Oracle 11.2.0.3.0

заказчик желает в интерфейсе пользователя иметь функционал экспорта-импорта данных БД. чтобы сделать это надо избавиться от возможных конкурирующих с обменом данных сессий в БД. поскольку работа приложения происходит через Glassfish, то определить кол-во работающих пользователей и как-то их отключить не получается (по крайней мере гугл поиском не помог). ввел флаг "регламентных работ" в БД, по которому новые входы юзеров блокируются , но что делать с теми, кто уже успел войти в приложение? как отсечь их возможные попытки изменить данные в момент "регламентных работ" (средствами БД, Java, Glassfish, ...)?
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266357
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longman десктоп-приложение: Java (фреймворк NetBeans), работающее на Glassfish
БД: Oracle 11.2.0.3.0
Glassfish это сервер. 3-tier значит, а не "десктоп-приложение". Или как?


longmanзаказчик желает в интерфейсе пользователя иметь функционал экспорта-импорта данных БД. чтобы сделать это надо избавиться от возможных конкурирующих с обменом данных сессий в БД. поскольку работа приложения происходит через Glassfish, то определить кол-во работающих пользователей и как-то их отключить не получается (по крайней мере гугл поиском не помог). ввел флаг "регламентных работ" в БД, по которому новые входы юзеров блокируются , но что делать с теми, кто уже успел войти в приложение? как отсечь их возможные попытки изменить данные в момент "регламентных работ" (средствами БД, Java, Glassfish, ...)?
Не очень понятно для чего это всё вообще? Сессии которые HTTP? Так через listener трекаются.
Сделали глобальный флаг? Ну, так повесьте его через AOP на все операции с базой, или бизнес-транзакции и выкидывайте исключение.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266395
longman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Blazkowicz:
да, 3х-звенка (с "десктоп" погорячился). я - Oracle-разработчик, поэтому в Java-вопросах ориентируюсь весьма приблизительно. флаг - поле в БД. я предполагал, что может проверку вешать на этапе "начала транзакции" в Java, яверы были не очень рады :). параллельно думал может есть какое-то альтернативное решение/режим/флаг.
нужно это всё для того, чтобы пока админ будет выполнять скажем импорт данных никакой юзер не сидел и не держал записи, подлежащие замене.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266407
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longmanя - Oracle-разработчик
Тогда должно быть ещё проще. Я понимаю, что оракл версионник, но разве нельзя там замутить глобальный пессимистический лок на таблицу и пусть все транзакции ждут?
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266411
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longmanнужно это всё для того, чтобы пока админ будет выполнять скажем импорт данных никакой юзер не сидел и не держал записи, подлежащие замене.
А что есть длинные транзакции?
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266445
longman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczА что есть длинные транзакции?
настолько длинных нет, но хотелось на момент обновления данных всех юзеров от процесса отключить. тем более, что импорт предполагает под собой отключение внешних ключей, триггеров. а при таком раскладе работающий пользователь может накосячить с данными, которые лежат рядом с заменяемыми, но таковыми не являются. блокировка всей таблицы - может и вариант, не знаю, честно говоря, сколько по времени занимает такая операция при условии наличия в таблицах (шт. 30) записей по 10 - 150 млн.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266457
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придумал простое решение. Если у вас есть флаг в БД, то можно попробовать настроить DataSource (connection pool) на сервере, так чтобы он валидировал соединения читая это поле, например, через хранимку. Если флаг установлен, DataSource будет выкидыват исключение с определенным SQL кодом. Останется научить Java приложения понимать этот код и выдавать соответствующее сообщение.
Эдакий хак на скорую руку. Есть, конечно масса нюансов, которые нужно продумать и учесть. А действительно ли есть смысл блокировать всю базу? А пул убъет не валидные соединения и новые будет уже пересоздавать. И пр.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266472
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczlongmanнужно это всё для того, чтобы пока админ будет выполнять скажем импорт данных никакой юзер не сидел и не держал записи, подлежащие замене.
А что есть длинные транзакции?
+1
если их нет, то аффтар - не морочьте голову отключением ключейи целостности БД.

Либо заливают ночью и выгоняют из БД, либо заливают в реале без отключения защиты.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266479
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longmanможет и вариант, не знаю, честно говоря, сколько по времени
а кто будет знать кроме тебя?
Залей нужные данные "в час пик" и замеряй.
Прежде чем отключать триггера, которые головой отвечают за целостность.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266512
longman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123если их нет, то аффтар - не морочьте голову отключением ключейи целостности БД
отключение ключей требуется при truncate partition старых данных

Petro123longmanможет и вариант, не знаю, честно говоря, сколько по времени
а кто будет знать кроме тебя?
Залей нужные данные "в час пик" и замеряй.
Прежде чем отключать триггера, которые головой отвечают за целостность.
описанных объемы - предполагаемые на этапе производственной эксплуатации. замерять пока нечего

BlazkowiczПридумал простое решение
где-то так я и предполагал в абстрактных размышлениях
BlazkowiczА пул убъет не валидные соединения и новые будет уже пересоздавать. И пр.
а как будет себя вести в такой ситуации пул? скажем он делает коннекты, они помечаются как невалидные в момент "регламента" и он в цикле будет пытаться получить валидные до тех пор пока не получит их?
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266524
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longmanа как будет себя вести в такой ситуации пул? скажем он делает коннекты, они помечаются как невалидные в момент "регламента" и он в цикле будет пытаться получить валидные до тех пор пока не получит их?
Всё зависит от реализации пула (а их не мало) и его настроек. Че там как по-умолчанию в GlassFish - не знаю.
Пул держит физические соединения. Перед тем как отдать это соединения в пользование, можно настроить валидацию.
Каждый раз когда Java код делает dataSource.getConnection(), будет выполняться валидирующий запрос.
В случае ошибки, пул должен попробовать закрыть соединение и создать новое при следующем запросе из Java кода.
Если никаких систематических извращений нет, то такая схема должна работать.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266565
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longmanописанных объемы - предполагаемые на этапе производственной эксплуатации. замерять пока нечего
ещё раз.
- генерировать нужный объём данных для тестов - обязанность разработчика\проектировщика\тестировщика.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266568
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longmanотключение ключей требуется при truncate partition старых данных
переведи на русский
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266589
longman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123longmanописанных объемы - предполагаемые на этапе производственной эксплуатации. замерять пока нечего
ещё раз.
- генерировать нужный объём данных для тестов - обязанность разработчика\проектировщика\тестировщика.
вы бы толкового чего сказали, чем раздавать советы по разработке. я по вашему должен за 10 минут был сгенерить 150 млн записей, всё проверить и отчитаться?
Petro123переведи на русский
и на англ вполне доступно truncate table with foreign key oracle
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266605
longman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Blazkowicz:
в целом схема понятна. место вызова проверочного запроса это что-то типа переопределенного диспетчера соединений из пула (извиняюсь за может несвойственную терминологию) или что оно собой являет в стандартном варианте?
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266609
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longman,
- конечно Должен, т.к. ты принимаешь решение по архитектуре (глобальный рубильник - выгнать всех из БД)
- почему за 10 мин?
- FK и триггеры как раз умно держат целостность при наличии живых коннектов.
ЗЫ.
Длинна транзакции обычно 0,1 сек.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266612
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longmanв целом схема понятна. место вызова проверочного запроса это что-то типа переопределенного диспетчера соединений из пула (извиняюсь за может несвойственную терминологию) или что оно собой являет в стандартном варианте?
https://blogs.oracle.com/JagadishPrasath/entry/connection_validation_in_glassfish_jdbc
http://alexandru-ersenie.com/2011/03/01/glassfish-jdbc-connection-validation-explained/
Только надо мануал найти про это дело.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266657
longman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123longman,
1. конечно Должен, т.к. ты принимаешь решение по архитектуре (глобальный рубильник - выгнать всех из БД)
2. почему за 10 мин?
3. FK и триггеры как раз умно держат целостность при наличии живых коннектов.
ЗЫ.
4.Длинна транзакции обычно 0,1 сек.
1. то что я должен и обязан я знаю, в этом сегменте совета не просил
2. в данные момент идет рассмотрение возможных вариантов в первом приближении, никто на этом этапе на тестит производительность. а "10 минут" потому что данный вариант был предложен Blazkowicz в 14:42.
3. никто и не спорил о их разумности, говорилось, что необходимо их отключать при удалении информации посредством команд truncate table/partition
4. длина транзакции тут ни к чему. какая разница какая ее длина, если юзеру будет выдано сообщение Оракла по типу "не нашел то, что вам нужно и вообще непонятно куда делось" в то время, когда ему надо сказать что "ведутся регламентные работы, попейте чаю" и закрыть приложение.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266658
longman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczТолько надо мануал найти про это дело.
спасибо за помощь, внимательно ознакомлюсь
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266673
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longman4. длина транзакции тут ни к чему. какая разница какая ее длина, если юзеру будет выдано сообщение Оракла по типу "не нашел то, что вам нужно и вообще непонятно куда делось" в то время, когда ему надо сказать что "ведутся регламентные работы, попейте чаю" и закрыть приложение.
В случае длинных транзакций может оказаться так, что куча юзеров уже получают отлуп, а админ не может начать maintenance, потому что длинная транзакция не завершена.
Либо юзер вообще потеряет значимую часть работы, которая всё это время хранилась в транзакции.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266683
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longman,
1. Я и дал совет. Протестить время заливки БЕЗ отключения. А потом уже РЕШАТЬ.
2. ВСЕХ вариантов - вагон. НАПРИМЕР - триггер на всю БД сразу (вход юзверей).
3.
Если регламентные, то:
- приказ по организации о их формате
- всем рассылается предупреждение
- админ ВИДИТ пользователей. Либо вырубает их сам, либо - читай регламент-приказ.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266695
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longman,
ну, и вполен может быть что вы репликацию делаете велосипедом. Иначе зачем полностью очищать 5 млн. записей.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266867
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczПридумал простое решение
где-то так я и предполагал в абстрактных размышлениях

Скажите, чем это будет отличаться от остановки всей системы? Задача похоже на "Выполнить восстановления БД из бэкапа при работающих пользователях"...
Мне кажется в больших нагруженных приложениях такими вещами лучше не заниматься. Есть риск разрушить БД. Лучше всех выгнать, остановить систему, выполнить требуемые работы и пустить юзвергов. Или ночью. ИМХО
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266936
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pulpЗадача похоже на "Выполнить восстановления БД из бэкапа при работающих пользователях"..
а Java причём? )
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266947
longman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2pulp:
это и предполагается делать ночью, но мало ли какой юзверь может и ночью сидеть)
pulpЛучше всех выгнать, остановить систему, выполнить требуемые работы и пустить юзвергов
оно безусловно лучше, но квалификацию конечных пользователей на сейчас не вселяет надежд на системный подход в этом вопросе) поэтому и ищу возможные варианты, чтобы максимально обезопасить систему "от дурака"
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266971
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
longman,

Такие вещи обычно делаются административными средствами, а не внедрением в прикладную логику и в каждую транзакцию. Максимум контроль при входе юзера в приложение.
Возможные варианты решения:
1. Если 3-х звенка, то настройка отдельного СП для административных работ, а пользовательский СП в это время должен быть остановлен.
2. На уровне сетевых апаратных средств (напр. циски) отключение от СП всех, кроме ИП-адреса админа.
3. Тупо переимновать exe-шник.
и т.п.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266973
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pulp,
+1
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266989
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это восстановление бэкапа, то потеряется вся работа пользователей.
Т.е. быкап делают "горячий".
Если это восстановление сбоя, то шлётся мессага всем, и потом тупо подменяется IP адрес дубля сервера.
Т.е. сабж - велосипед.
...
Рейтинг: 0 / 0
как сэмулировать режим регламентных работ
    #38266993
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longmanпоэтому и ищу возможные варианты, чтобы максимально обезопасить систему "от дурака"Дураки очень изобретательны - даже не пытайтесь. Делайте систему для умных.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / как сэмулировать режим регламентных работ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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