Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 9 10 11 12 13 14 15 16 [17] 18   вперед  Ctrl
 Re: Конкурс идей про Firebird  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Василий №2
Не поверишь, но она только для SYSDBA, остальные курят бамбук, грустно созерцая единственную строку с инфой о собственном подключении.


В 4.0 не только. Там есть набор системных привилегий из которых можно построить собственную роль с частью административных плюшек. И даже использовать эту роль как группу без её указания (по желанию)
27 сен 17, 11:31    [20826220]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 263
Пункт 1 Василия. Сейчас мы работаем через XStarter (наверно, многие знают). Хороший шедулер, ничего не скажешь. Но получается - XStarter'ом запускается exe-шник, там коннект к базе, потом запуск неких хранимок и т.д. Ну и зачем? Сервак работает в режиме 24х7, он сам может это делать.
И по 4 пункту. Может и не надо. Но эта хотелка (и я хочу тоже) из-за того, что быстродействие не на высоте, и кажется, что этим (поместить всё в память) снимем вопрос. Может и не снимем. Скорее всего. Но вопрос быстродействия стоит.
И вообще, народ предлагает необходимые вещи (в других системах есть), а вы только ищите аргументы почему это не нужно.
27 сен 17, 11:38    [20826256]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
KreatorXXI,

блин. Я же не против этой хотелки с таблицей в памяти, но надо разъяснить. В FB куча своих особенностей при организации хранилища в памяти надо их учитывать
27 сен 17, 11:49    [20826313]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 12925
Василий №2
автор
5. в каком смысле "функция split"? В данном случае краткость - вовсе не сестра таланта.

Хотя бы типа
for select substr from split('bla;bla;bla', ';')
  into :substr do
    ...
Учитывая, что слова "встроенная" не прозвучало, такая функция есть как минимум в одном варианте. 6686267
27 сен 17, 11:49    [20826314]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26707
KreatorXXI
Но получается - XStarter'ом запускается exe-шник, там коннект к базе, потом запуск неких хранимок и т.д. Ну и зачем? Сервак работает в режиме 24х7, он сам может это делать.

да, сервак 24х7 работает, только он к базам не коннектится, ему это не нужно ни для чего. Чем будет отличаться внутренний шедулер от запуска isql внешним шедулером?
Я более прямо поставлю вопрос - какие страдания приносит нынешняя ситуация, чтобы надо было на нее тратить время разработчиков Firebird? Чего нельзя сделать внешним шедулером?
Кстати, Еманов говорил, что шедулинг чего-то будет встроен, я только не помню, чего именно.
27 сен 17, 12:05    [20826360]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Василий №2
Guest
kdv,
автор
я могу ошибаться, но мне кажется, что под "встроенным в СУБД планировщиком" обычно имеют в виду отдельную утилиту или службу, которая берет данные по планировке из какой-то системной БД, только и всего. Не вижу ни малейшей причины нагружать код сервера этой деятельностью. Как минимум, планировщику никакой пользовательский контекст никогда не нужен. А следовательно, это автономная штука.

И, кривой код триггера не приводит к сбою сервера. А вот если планировщик встроен в процесс сервера, что ему мешает угробить этот процесс?
Что вы хотите от этого планировщика, учитывая что есть сторонние планировщики, которые умеют много того, чего никогда не будет уметь "встроенный"?

Вообще для моего случая мне не хватает планировщика запуска ХП. Для чистки таблиц, например, чтобы не загружать основную транзакцию сборкой мусора и не заморачиваться с блокировкой через генераторы. Но планировщик запуска утилит тоже неплохо. Учитывая, что там всего лишь CreateProcess, мне очень сильно не верится, что это может хоть как-то мочь уронить сервер. Энивей, UDF-ом уронить намного проще, но что-то все их юзают и не боятся.
Преимущества перед сторонним шедулером - крутится вместе с СУБД, тогда как шедулер может упасть или его прибьют.

автор
то есть, любой юзер должен иметь возможность видеть, что делают все остальные юзеры? не будет этого, это нарушение безопасности.

1) Не что делают, а откуда пришли
2) Никто не мешает настроить гранты

автор
"базы в памяти" - это как правило специальные технологии, для специальных же применений таких баз. Просто поместить базу в ram-drive и сейчас можно, и это люди используют. А вот настоящее in-memory, раз вы не можете объяснить, зачем вам это нужно в Firebird, похоже вам и не нужно. И массово оно также не будет нужно.

Я не знаю, какие такие "специальные технологии" ты подразумеваешь, возможно, я темный человек и не в курсе, но специальная технология у SQLite? Сомнительно. Думаю, там тупо база помещается в кусок оперативки и вместо FileWrite выполняется CopyMemory.

В общем-то из всего предложенного в этой теме 90% можно сделать либо внешними, либо уже имеющимися, порой ларингопроктологическими методами. Но вопрос ведь не "как сделать Х любыми средствами", вопрос "что добавить".
27 сен 17, 12:26    [20826409]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26707
Василий №2
Для чистки таблиц, например, чтобы не загружать основную транзакцию сборкой мусора

что такое "основная транзакция", при чем тут сборка мусора, и почему нельзя стартовать еще одну транзакцию?
Кстати, мусор собирается ДРУГИМИ транзакциями. И даже не транзакциями, а запросами select/update в других транзакциях. Если он мусор.
И механизм сборки мусора абсолютно идентичен, что из внешнего коннекта, что из "внутреннего".
Василий №2
Учитывая, что там всего лишь CreateProcess, мне очень сильно не верится, что это может хоть как-то мочь уронить сервер.

вот и вопрос - зачем серверу createprocess, почему для этого нужен именно внутренний планировщик?
Василий №2
Преимущества перед сторонним шедулером - крутится вместе с СУБД

в соответствии с принципами надежности при нагромождении разных компонент в одном надежность только ухудшается.
27 сен 17, 13:22    [20826546]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Василий №2
Guest
kdv,

автор
что такое "основная транзакция", при чем тут сборка мусора, и почему нельзя стартовать еще одну транзакцию?
Кстати, мусор собирается ДРУГИМИ транзакциями. И даже не транзакциями, а запросами select/update в других транзакциях. Если он мусор.
И механизм сборки мусора абсолютно идентичен, что из внешнего коннекта, что из "внутреннего".

Это придирки к словам. Дабы не ломать копья по поводу терминологии, конкретный пример: есть подключение, которое постоянно пишет и удаляет (модель очереди), и после удаления приходится делать select *, чтобы принудительно собрать мусор в определенный момент, а не тормозить совсем другую транзакцию в рандомный момент. А так можно было бы запускать по таймеру удаление со сборкой мусора и не нагружать пишущие и читающие транзакции.
Возражения по поводу подобной модели на FB вообще - pls, при себе. Это флуд и оффтоп.

автор
вот и вопрос - зачем серверу createprocess, почему для этого нужен именно внутренний планировщик?

Потому что сторонний это сторонний и менее удобен, чем интегрированный.
Помимо очевидных доп усилий по установке, ему требуется отдельная конфигурация. Навскидку опять же из своего опыта: ХП и триггеры ведут логи, шаблон пути задается в БД. По планировщику файлы архивируются. Есть два варианта:
1) В настройках задачи указывать путь с логами - это дублирование, и есть вероятность забыть поменять пути при смене таковых в БД.
2) Запрашивать из БД. Это означает тащить в планировщик isql, городить запрос, задавать в скрипте реквизиты подключения (что в случае доступа по алиасу опять же приводит к дублированию), парсить результаты запроса (а вывод isql для этого не особо дружелюбен).
В случае встроенного планировщика это могло бы достигаться парой команд.
CREATE TASK ON EVERY 1 HOUR AS
DECLARE Path VARCHAR(255);
BEGIN
  SELECT LogPath FROM OPTIONS
    INTO :Path;
  RUN("ArchiveTask.bat", :Path);
END


автор
в соответствии с принципами надежности при нагромождении разных компонент в одном надежность только ухудшается.

Этак и до рафинированного unix way можно докатиться, когда одна программа хорошо, стабильно и качественно выводит в консоль цифры, а другая - хорошо, стабильно и качественно печатает буквы.
27 сен 17, 14:40    [20826828]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 263
kdv,

Мы тоже сталкивались(-мся) с ситуацией, когда какой-нибудь админ остановит задачу в нашем XStarter'е. А претензии к нам. Если стоит сервер, то понятно. А если не сработал внешний "шедулер", то что делать?
27 сен 17, 14:46    [20826843]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 258
Василий №2
Этак и до рафинированного unix way можно докатиться, когда одна программа хорошо, стабильно и качественно выводит в консоль цифры, а другая - хорошо, стабильно и качественно печатает буквы.


Безотносительно спора о шедулере (хотя лично я отношусь к сторонникам внешнего, ибо операции с базой - это только первый шаг, на основании которого... и пошло и поехало) - это и есть самый правильный путь при грамотной декомпозиции задач. Система - структура из подсистем, и каждая из них должна быть автономна за исключением внешних связей, которые, собственно, и делают из них систему. Абстрактно говоря - семиуровневая модель сети ANSI, например. Очень давно, лет 40 назад, мне, системному тогда программисту, типа вдисятке по Питеру, повезло поработать с очень умным человеком. Склероз вычёркивает из моей памяти строку за строкой. Я забываю имена и даже совместно прожитые участки жизни, но, как фотоаппарат, помню все лица. Но тут помню фамилию - Тёмов. Ему тогда было к 60. Погуглил - ничего близкого. У него была команда из людей, у половины которых я тоже много чему научился, у них была своя ось уровня DOS, свой ассемблер, всё это накрывало MS с шапочкой. Мне заказали один из уровней сети. Я подумал с недельку, пришёл, говорю - ну, у меня ведь и вот эти данные по рукой, и вот эти, и вот эти, я же могу лёгким движением руки накрыть половину функционала двух соседних уровней. Ответ - не надо. Тебе велено сделать в этих рамках, вот в них и делай. Я тогда обиделся - меня держат за тупого кодера, а я личность творческая, ранимая, подверженная лёгким запоям (С). Лет через 5 понял - он был прав. Функционал не должен пересекаться, даже если быстродействие или ещё что выигрывает, иначе в перспективе развития получаем адЪ и Израиль. Хотел встретиться и поблагодарить за науку, но опоздал.
27 сен 17, 19:59    [20827656]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1203
KreatorXXI
kdv,

Мы тоже сталкивались(-мся) с ситуацией, когда какой-нибудь админ остановит задачу в нашем XStarter'е. А претензии к нам. Если стоит сервер, то понятно.
А если не сработал внешний "шедулер", то что делать?


Включить в понятие "сервер" не только Firebird но и всю тачку, включая "внешний" шедулер.

У меня с родным виндовым шедулером как-то издавна не сложилось...
Сначала использовал программку Runner. Маленькая, удобная. Один минус - работает как приложение, под текущим пользователем. Если юзер на комп не залогинен (а на сервере - это обычное дело) то Runner не работает.
Потом перешел на nnCronLite - конфиг аналогичен юниксовому крону, бесплатен. Работает сервисом. Пишет свой лог запусков.

Юзать isql из батника по шедулеру - несколько неудобно, в то время как есть IBEScript и IBExpert.
28 сен 17, 03:47    [20827982]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Василий №2
Guest
Добавить глобальную переменную с именем текущей ХП или триггера.
INSERT INTO Log('Running ' || THIS_PROC)


Не знаю, насколько возможно, но добавить тип параметра ХП - таблица (это же сборище самых безумных идей, верно?).

procedure DoSmth(aTable TABLE)
begin
  select * from aTable ...
end
6 окт 17, 11:52    [20847623]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 12925
Василий №2
Добавить глобальную переменную с именем текущей ХП или триггера.
Вы, надеюсь, видели какую-нибудь многопользовательскую СУБД?
6 окт 17, 13:15    [20848028]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Василий №2
Guest
WildSery
Василий №2
Добавить глобальную переменную с именем текущей ХП или триггера.
Вы, надеюсь, видели какую-нибудь многопользовательскую СУБД?

Глобальную, разумеется, в рамках текущего подключения.
6 окт 17, 14:16    [20848360]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 7826
Василий №2
Глобальную, разумеется, в рамках текущего подключения.
В рамках текущего подключения может быть более одной транзакции. Касаемо второго то оно называется execute statement.
6 окт 17, 15:01    [20848637]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
чччД
Guest
Василий №2
...
...добавить тип параметра ХП - таблица (это же сборище самых безумных идей, верно?).
...

1. Компилироваться не будет. Или валидацию (например, состава полей) как-то придется перенести на момент исполнения.
2. Используй Execute Statement.
6 окт 17, 16:07    [20848824]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Василий №2
Guest
Ivan_Pisarevsky
В рамках текущего подключения может быть более одной транзакции. Касаемо второго то оно называется execute statement.

А более одной выполняемой ХП/триггера в один момент времени может быть?

Касаемо ES - ясен пень. Но у него есть минусы, проистекающие из его текстовой природы.
6 окт 17, 17:05    [20849073]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
чччД
Guest
Василий №2
А более одной выполняемой ХП/триггера в один момент времени может быть?

Открываешь два разных запроса к разным селективным ХП и поочередно тягаешь по одной записи, например. Первую запись из ХП1, вторую из ХП2, третью снова из ХП1, четвертую снова из ХП 2...
Обе ХП открыты одновременно.
6 окт 17, 21:46    [20849677]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Василий №2
Guest
чччД, согласен, логично. Но можно, к примеру, перезаписывать значение при каждом входе в ХП.
9 окт 17, 10:02    [20853569]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
чччД
Guest
Василий №2
чччД, согласен, логично. Но можно, к примеру, перезаписывать значение при каждом входе в ХП.

Что - "перезаписывать"?
Что такое "каждый вход в ХП"?
9 окт 17, 10:17    [20853591]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 12925
Василий №2,

Вася, многие действия выполняются не последовательно, кусочками, перепрыгивая туда-сюда, как это было во время псевдо-мультизадачности. Они действительно выполняются одновременно. А если и не одновременно, то всё равно гораздо сложнее, чем сказать "сейчас выполняется только вот эта одна".
9 окт 17, 12:46    [20854182]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Tonal
Member

Откуда: Новосибирск
Сообщений: 90
Василий №2,
А что будем иметь если из одной ХП вызвать другую?
Или рекурсию какую (взаимную) забильбенить? :)
16 окт 17, 10:56    [20872000]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Василий №2
Guest
Tonal, WildSery,
в любой момент времени сервер точно знает, какую именно ХП он выполняет, так ведь? Поэтому не вижу препятствий к тому, чтобы сохранять это знание в виде переменной. В конце концов, стек вызовов как-то реализуется.
Единственная засада тут - это случай разделения подключения и/или транзакции между потоками. Но это, вроде бы, нерекомендованный способ работы.
17 окт 17, 10:44    [20875029]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Василий №2
в любой момент времени сервер точно знает, какую именно ХП он выполняет, так ведь?

Нет. В любой момент времени сервер выполняет дерево ехе-нод и ему сугубо всё равно откуда
они взялись.

Posted via ActualForum NNTP Server 1.5

17 окт 17, 11:58    [20875395]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Зачем этот стек вызовов? Когда он нужен для отладки, он и вручную элементарно реализуется, а после все равно нафиг удаляется.
17 окт 17, 12:01    [20875418]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 9 10 11 12 13 14 15 16 [17] 18   вперед  Ctrl
Все форумы / Firebird, InterBase Ответить