powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Предотвратить рекурсию
25 сообщений из 62, страница 2 из 3
Предотвратить рекурсию
    #39791062
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.03.2019 16:57, Гаджимурадов Рустам пишет:
> До ресурсов есть еще вопрос безопасности.

в чем трабл?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791064
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

на мой взгляд ресурсы здесь будет узким местом. Стартовать новое соединение на каждую транзакцию дорого, особенно если транзакции стартуют часто и короткие, в 4.0 будет дешевле за счёт пула внешних соединений.
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791089
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потестил.
по времени получается порядка 200мс.
в общем-то, лаг допустимый.

засада пока видится одна - ON EXTERNAL DATA SOURCE
невозможно НЕ указывать имя сервера.
соответственно получаем обломингу при ресторе в другое место.

кроме того, алиасы не канают, нужен ПОЛНЫЙ путь к базе.
с точки зрения безопасности это нехорошо.

но если сощурить левый глаз...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791092
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
касаемо необходимости указывать имя сервера, это я погорячился.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791097
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ну и вообще параметры внешнего соединения можно хранить в специальной таблице констант. Надо будет поменяешь в отресторенной БД
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791101
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийпытаюсь соорудить human-readable сообщение о лок-конфликте.
что мол запись блокирует ВАСЯ ПУПКИН, а не транзакция № 2-12-85-06

Тогда триггер-то тебе назачем? При получении ошибки дёргай SP, которая вернёт имя
пользователя по номеру его транзакции из таблиц мониторинга. Всё, телемаркет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791106
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

не прокатит из-за прав на MON$. В 3.0 SECURITY DEFINER ещё нет
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791111
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

RDB$GET_CONTEXT('SYSTEM', 'DB_NAME') не канает?
Ну и имя сервера localhost
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791116
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисне прокатит из-за прав на MON$. В 3.0 SECURITY DEFINER ещё нет

Зато есть ES, способный исполняться от имени заданного пользователя, включая SYSDBA.
Несекурненько, но это уже другой вопрос.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791117
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.03.2019 18:09, Симонов Денис пишет:
> RDB$GET_CONTEXT('SYSTEM', 'DB_NAME') не канает?

ух ты!
круто.
слона то я и не заметил...

> Ну и имя сервера localhost

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

СПАСИБО за наводку!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791129
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин!
дак ON EXTERNAL DATA SOURCE вообще не нужен оказался!

спасибо DS!

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791152
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий> в чем трабл?

Ну пароль же торчать будет, да ещё RWшный.
Впрочем, это тоже можно решать подпрыгиваниями.

Мимопроходящий> по времени получается порядка 200мс.
Мимопроходящий> в общем-то, лаг допустимый.

И шо, это реально лучше обычного варианта с флагом или внешней таблицы?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791795
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
погонял тесты при сравнительно нагруженной таблице.
просадка производительности всё же заметна.
вариант с EXECUTE STATEMENT ... WITH AUTONOMOUS TRANSACTION AS USER ...
на данный момент развития исторического материализма придётся исключить.
у-вы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791798
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийпросадка производительности всё же заметна.

У тебя настолько часты конфликты или ты таки засунул эту конструкцию в триггер?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791817
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovМимопроходящийпросадка производительности всё же заметна.

У тебя настолько часты конфликты или ты таки засунул эту конструкцию в триггер?


Похоже, коту стало совсем нехрен делать
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39791852
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СПМ> Похоже, коту стало совсем нехрен делать

И студеною зимой, и зеленою весной
И стобою и со мной, это яйца-а-а.
Ты проснешься на рассвете
Слышишь как смеются дети
Лишь бы только были эти, эти яйца-а-а. (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39792089
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийна данный момент развития исторического материализма придётся исключить.
у-вы.Таким образом, тебе остаётся только UDR и memmap.
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39792155
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27.03.2019 11:00, rdb_dev пишет:
> Таким образом, тебе остаётся только UDR и memmap.

любая инвазия в серверный процесс есть суксЪ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39792163
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

а тебе изучить вопрос

Мимопроходящий,

а что совет DS не прокатил? Создать функцию или ХП и вызывать её в момент конфликта передавая в качестве аргумента номер конфликтующей транзакции

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR ALTER FUNCTION SF_USER_BY_TRANSACTION (
    A_TRANSACTION_ID BIGINT)
RETURNS VARCHAR(63)
AS
DECLARE VARIABLE STMT BLOB SUB_TYPE TEXT;
DECLARE VARIABLE USER_NAME VARCHAR(63);
BEGIN
  STMT = '
    select
      a.MON$USER
    from MON$ATTACHMENTS a
    join MON$TRANSACTIONS t on t.MON$ATTACHMENT_ID = a.MON$ATTACHMENT_ID
    where t.MON$TRANSACTION_ID = :ID
  ';
  EXECUTE STATEMENT(STMT)(ID := A_TRANSACTION_ID)
      AS USER 'SYSDBA' PASSWORD 'masterkey' -
      INTO USER_NAME;
  RETURN USER_NAME;
END





Код: sql
1.
2.
3.
4.
select
  t.mon$transaction_id,
  SF_USER_BY_TRANSACTION(t.mon$transaction_id) as username
from mon$transactions t
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39792216
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27.03.2019 12:07, Симонов Денис пишет:
> а что совет DS не прокатил? Создать функцию или ХП и вызывать её в момент конфликта передавая в качестве аргумента номер конфликтующей транзакции

не хотелось дёргать таблицы мониторинга.
да и эскалирование прав до уровня SYSDBA внутри процедуры с открытим паролем не есть гуд.
из всего предложенного и протестированного, наименее тормозной и относительно безопасный
способ - писать во временную таблицу.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
RECREATE TABLE U_TRANS
EXTERNAL FILE '. . .'
(
    USER_NAME       CHAR(31),
    TRANSACTION_ID  CHAR(20),
    CONNECTION_ID   CHAR(20),
    CLIENT_PROCESS  CHAR(255),
    CLIENT_ADDRESS  CHAR(255),
    DATE_START      CHAR(26) DEFAULT CURRENT_TIMESTAMP NOT NULL
);

GRANT SELECT ON TABLE U_TRANS TO PUBLIC;

CREATE OR ALTER TRIGGER ON_TRANSACTION_START
ACTIVE ON TRANSACTION START
AS
BEGIN
  IF (RDB$GET_CONTEXT ('SYSTEM', 'READ_ONLY') = 'FALSE') THEN
    INSERT INTO U_TRANS (USER_NAME, TRANSACTION_ID, CONNECTION_ID, CLIENT_PROCESS, CLIENT_ADDRESS)
      VALUES (CURRENT_USER, CURRENT_TRANSACTION, CURRENT_CONNECTION, RDB$GET_CONTEXT('SYSTEM', 'CLIENT_PROCESS'), RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS'));
END;

GRANT SELECT, INSERT ON TABLE U_TRANS TO TRIGGER ON_TRANSACTION_START;


ну и грохать этот файл еженощно, по крону.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39792219
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу, очепятка.
не во временную, а во ВНЕШНЮЮ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39792228
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

делать insert с клиента после старта тр-ции - не вариант ?
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39792243
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27.03.2019 12:55, hvlad пишет:
> делать insert с клиента после старта тр-ции - не вариант ?

теоретически можно.
но нужно перелопатить все приложения.
а это чуть более 2 тысяч модулей.
с явными и неявными стартами транзакций.
либо вшить код прямо в IBX.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39792386
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий> но нужно перелопатить все приложения.


А прикладная цель какая - ловишь кого-то или статистику собираешь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Предотвратить рекурсию
    #39792410
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамА прикладная цель какая - ловишь кого-то или статистику собираешь?
21842937
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Предотвратить рекурсию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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