powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос про одновременные коннекты к Firebird Embedded
31 сообщений из 31, показаны все 2 страниц
Вопрос про одновременные коннекты к Firebird Embedded
    #39760084
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Заранее прошу тухлыми яйцами не кидать :)
Firebird Embedded 2.5, приложение на Дельфи.
В процессе работы необходимо загружать данные извне, решил через внешнее приложение-сканер. Все просто - в каталог прилетают файла, приложение-сканер сканирует каталог, видит файлы и грузит в базу. Приложение-сканер лежит в том же каталоге, что и основное приложение, база и fdbclient.dll.
Теперь вопросы:
1) Считается ли это как многопользовательский режим и лучше поставить сервер Firebird?
2) Если перенести функционал в основное приложение параллельным потоком, то нужно открывать отдельный коннект для потока - в этом случае это тоже как многопользовательский режим и тоже лучше поставить сервер Firebird?

К чему я спрашиваю - уже третий раз летит база у разных клиентов, как пускают в действие приложение-сканер. Не всегда конечно и не у всех, но такое случается. Просто база становится непригодной, даже backup/restore не может ее распознать.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760095
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

У меня, правда на FB 3.0 Embedded, в многопоточном высоконагруженном режиме загрузка работает как часы. Отдельные коннекты на каждый поток, никаких разрушений ни разу не наблюдалось.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760100
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

Не сразу дошло что у тебя там параллельные коннекты из разных приложений. В этом случае, для надежности, я бы поставил полноценный сервер или слил, распараллеливая, весь функционал в одно или перешел на 3.0, где все это теперь уже вроде можно настроить по человечески и для Embedded.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760122
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik...
1) Считается ли это как...
...
...база становится непригодной, даже backup/restore не может ее распознать.

Да, FB 2.5 Embedded обеспечивает параллельный доступ к файлу базы. Т.е., несколько приложения могут одновременно работать с одним файлом базы.
Однако, FireBird Embedded - это всего лишь dll, т.е. фактически - "сервер" есть часть приложения. Если приложение падает, это значит, что падает и "эмбеддед сервер", при этом файл базы запросто может оказаться в неконсистентном состоянии. То есть, если есть возможность ставить полноценный сервер - лучше ставить полноценный сервер.
Однако, если клиент будет выключать комп методом "выдернул из розетки" - то и отдельный сервер, скорее всего, тоже не спасет.

Да, в отдельном треде должен быть отдельный коннект.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760128
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F...для надежности, я бы ... перешел на 3.0, где все это теперь уже вроде можно настроить по человечески и для Embedded.
Что конкретно в данной ситуации даст переход на 3.0?
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760133
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра,

Простую и надежную настройку ServerMode, это как минимум.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760145
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FФэйтл Эра,

Простую и надежную настройку ServerMode, это как минимум.
Ну так все же, какую конкретно выгоду получит ТС от перехода "2.5 -> 3.0" при использовании FB Embedded?
Например - какие ненадежные настройки "Fb embedded 2.5" станут надежными, и что именно упростится для ТС?
И для чего ему вдруг понадобилась настройка "ServerMode"?
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760147
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра,

Ответы на эти вопросы записаны в специальный документ, называется Release Notes.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760155
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра,

Доступные в нем централизованные настройки комбинвции Providers+ServerMode, как минимум, страхуют от возможных расхождений данных параметров при соединении разных приложений с одной БД в Embedded режиме. Что в общем случае, чревато, как понимаю.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760164
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,

в 2.5 ServerMode для Embedded был один и его не надо было настраивать вообще. Да и Providers тоже не требовался.
Другое дело что в 3.0 одну и ту же dll можно использовать и в случае необходимости мгновенно перейти на полноценный сервак просто поменяв настройки. Ну и самое главное возможности SQL в 3.0 намного ширше.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760168
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Это я примерно в курсе. Но в ротоколе то, ведь можно было проявить (небезопасный) вольюнтаризм?))
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760171
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,
т.обр., то, что вообще не требовало настройки для FB Embedded 2.5, стало простым и удобным в 3.0?
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760173
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра,

1) я не писал про удобство, упирал в основном на большую централизованность/надежность;
2) про протокол счел возможным мимо уха пропустить?
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760176
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого, какая полемика :)
В итоге, если слить все в одно многопоточное приложение - сервер Файрберд ставить нет надобности?
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760179
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik...В итоге, если слить все в одно многопоточное приложение - сервер Файрберд ставить нет надобности?
Ну, если ты такой вывод после всех советов делаешь - то, конечно, не надо.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760182
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

Надо попробовать, надо попробовать.))
Но технологически, полагаю, много проще начать с замены Embedded с двойки на тройку,
не исключено, что уже тем самым будет достигнут нужный результат (там ведь внутри еще
дофига чего поменялось в плане надежности).
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760191
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

откуда такой мягко говоря странный вывод.
В Embedded например нет префетча записей в протоколе, само по себе вероятность угробить БД выше, ну и совместный доступ к БД куда менее эффективный, ибо осуществляется через ServerMode=classic. По мне принцип разделяй и властвуй всегда лучше.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760203
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchikПросто база становится непригодной, даже backup/restore не может ее распознать.
причиной такого embedded быть не может. Это либо вирус, либо что-то с диском или операционной системой.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760205
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

я все понимаю, что конечно сервер надежнее, но неужели на Firebird Embedded делают только однопоточные приложения
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760207
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

1. см. мой предыдущий ответ
2. fb 2.5 embedded может работать с одной базой из разных exe. Но про вероятные падения exe вам уже сказали, а это значит, что падает "сервер". Кроме того, эффективность таких "многопользовательских" решений на embedded под большим вопросом. В чем смысл этой псевдо-многопользовательскости? Самый дурацкий вариант - embedded в вебе из под .net или php.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760213
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

смотря что подразумевается под многопоточностью. Если вы реально делаете сервер приложений, то толку в Embedded ноль. И я сильно сомневаюсь в его эффективности для таких задач. Конечно чисто теоретически вы можете сделать некий аналог листнера firebird.exe со своим бледжэком и ..., но задача это крайне не простая.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760214
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

у меня многопользовательность - это просто разные потоки с отдельными коннектами.
всем спасибо за советы, этот форум - лучший!
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760217
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

многопользовательность? даже не просто многопоточностью? Тогда Embedded тут точно не в тему. Для экономии на дорогих коннектах есть пулы подключений
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760223
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,
да нет...
Просто kdv спросил зачем такая псевдо-многопользовательность.
Я ответил что в моем случае псевдо-многопользовательность - это мои потоки с отдельными коннектами.

Конечно, если физически несколько пользователей - то сервер ставится однозначно
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760231
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

и много их? Для чего они? Просто чтобы пользователь чего там не ждал, тогда ладно и Embedded сойдёт.
Если же реально работают десяток потоков интенсивно что-то молотящих, то Embedded уже не в тему
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760235
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

не много... пока один - формирует отчеты раз в 15 минут и отправляет в каталог, и вот, после слияния приложений, прибавится второй, который по факту делает репликацию с другой базой данных. Приходят файлы с изменениями, этот поток садит их в базу.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760242
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

так у вас сервис? Что мне кажется плохой идея когда один сервис выполняет совершенно разные задачи. По мне лучше поставить полноценный сервер Firebird. А потом один сервис будет клепать отчёты, а второй репликацией заниматься.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760246
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

нет почему сервис, это приложение по учету товаров, пользователь работает в ней постоянно, а отдельный поток Раз в 15 минут отправляет отчеты для начальника, и теперь прибавляется еще поток для репликации с другими торговыми точками.
Но в общем мысль вашу я понял
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760247
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchikКонечно, если физически несколько пользователей - то сервер ставится однозначно
Крайне желательно использовать полноценный сервер в любом случае.
Дело в том, что сервер FB - достаточно "вылизанное" приложение в плане надежности, вероятность его падания и порчи файла базы весьма невелика.

А если "упадет" твое приложение - то упадет и "Embedded server", вот и причина порчи файла базы.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760259
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchikнеужели на Firebird Embedded делают только однопоточные приложения

Делают всё что угодно, но это делают люди от приложений которых база не портится. Поэтому
у тебя выбора нет: надо ставить полноценный сервер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760300
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchikОго, какая полемика :)
В итоге, если слить все в одно многопоточное приложение - сервер Файрберд ставить нет надобности?Есть еще вариант - без установки сервера, но с использованием оного в application mode. При этом, достаточно приложениям указать где лежит снапшот сервера. Алгоритм прост - все использующие FirebirdSQL Server в application mode приложения используют один и тот же алгоритм запуска:
1. Каждое стартующее приложение пытается открыть pid файл для хранения в текстовом виде идентификатора процесса FirebirdSQL сервера, запущенного в application mode (назовём этот файл "fbsvr.pid") из каталога со снапшотом сервера в режиме на запись с параметром shared deny write (SH_DENYWR);
2. Если создание/открытие файла "fbsvr.pid" прошло успешно, стартуем FirebirdSQL сервер в application mode и пишем pid его процесса в файл "fbsvr.pid" удерживая файл в открытом состоянии;
3. Если создание/открытие файла в режиме на запись не увенчалось успехом по причине того, что файл уже заблокирован другим процессом, пытаемся открыть файл на чтение и прочесть через fscanf идентификатор процесса FirebirdSQL сервера в цикле до тех пор, пока не удастся прочесть этот идентификатор (на случай, если процесс, запускающий FirebirdSQL сервер, еще не успел записать идентификатор в открытый им на запись файл "fbsvr.pid") и также оставляем файл открытым;
4. При завершении работы каждого приложения закрываем файл "fbsvr.pid", пытаемся его удалить и если удаление прошло успешно, находим по идентификатору процесса хендл окна FirebirdSQL сервера и посылаем ему PostMessage(hwnd, WM_COMMAND, (WPARAM)IDM_SHUTDOWN, 0), где IDM_SHUTDOWN взят из заголовочного файла "iscguard.rh" (в исходниках сервера);
5. Если удаление файла "fbsvr.pid" не увенчалось успехом, просто закрываем приложение, не завершая работу FirebirdSQL сервера, так как он используется другим приложением.

В итоге, первое стартующее приложение будет запускать сервер БД, а последнее завершающееся приложение - тушить его. При этом, при старте сервера БД можно указывать нестандартный порт, но приложения, естественно, должны об этом знать.
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос про одновременные коннекты к Firebird Embedded
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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