|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Всем привет! Заранее прошу тухлыми яйцами не кидать :) Firebird Embedded 2.5, приложение на Дельфи. В процессе работы необходимо загружать данные извне, решил через внешнее приложение-сканер. Все просто - в каталог прилетают файла, приложение-сканер сканирует каталог, видит файлы и грузит в базу. Приложение-сканер лежит в том же каталоге, что и основное приложение, база и fdbclient.dll. Теперь вопросы: 1) Считается ли это как многопользовательский режим и лучше поставить сервер Firebird? 2) Если перенести функционал в основное приложение параллельным потоком, то нужно открывать отдельный коннект для потока - в этом случае это тоже как многопользовательский режим и тоже лучше поставить сервер Firebird? К чему я спрашиваю - уже третий раз летит база у разных клиентов, как пускают в действие приложение-сканер. Не всегда конечно и не у всех, но такое случается. Просто база становится непригодной, даже backup/restore не может ее распознать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 07:33 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, У меня, правда на FB 3.0 Embedded, в многопоточном высоконагруженном режиме загрузка работает как часы. Отдельные коннекты на каждый поток, никаких разрушений ни разу не наблюдалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 08:29 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, Не сразу дошло что у тебя там параллельные коннекты из разных приложений. В этом случае, для надежности, я бы поставил полноценный сервер или слил, распараллеливая, весь функционал в одно или перешел на 3.0, где все это теперь уже вроде можно настроить по человечески и для Embedded. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 08:35 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik... 1) Считается ли это как... ... ...база становится непригодной, даже backup/restore не может ее распознать. Да, FB 2.5 Embedded обеспечивает параллельный доступ к файлу базы. Т.е., несколько приложения могут одновременно работать с одним файлом базы. Однако, FireBird Embedded - это всего лишь dll, т.е. фактически - "сервер" есть часть приложения. Если приложение падает, это значит, что падает и "эмбеддед сервер", при этом файл базы запросто может оказаться в неконсистентном состоянии. То есть, если есть возможность ставить полноценный сервер - лучше ставить полноценный сервер. Однако, если клиент будет выключать комп методом "выдернул из розетки" - то и отдельный сервер, скорее всего, тоже не спасет. Да, в отдельном треде должен быть отдельный коннект. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 09:35 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Vlad F...для надежности, я бы ... перешел на 3.0, где все это теперь уже вроде можно настроить по человечески и для Embedded. Что конкретно в данной ситуации даст переход на 3.0? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 09:42 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Фэйтл Эра, Простую и надежную настройку ServerMode, это как минимум. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 09:47 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Vlad FФэйтл Эра, Простую и надежную настройку ServerMode, это как минимум. Ну так все же, какую конкретно выгоду получит ТС от перехода "2.5 -> 3.0" при использовании FB Embedded? Например - какие ненадежные настройки "Fb embedded 2.5" станут надежными, и что именно упростится для ТС? И для чего ему вдруг понадобилась настройка "ServerMode"? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 10:13 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Фэйтл Эра, Ответы на эти вопросы записаны в специальный документ, называется Release Notes. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 10:19 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Фэйтл Эра, Доступные в нем централизованные настройки комбинвции Providers+ServerMode, как минимум, страхуют от возможных расхождений данных параметров при соединении разных приложений с одной БД в Embedded режиме. Что в общем случае, чревато, как понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 10:37 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Vlad F, в 2.5 ServerMode для Embedded был один и его не надо было настраивать вообще. Да и Providers тоже не требовался. Другое дело что в 3.0 одну и ту же dll можно использовать и в случае необходимости мгновенно перейти на полноценный сервак просто поменяв настройки. Ну и самое главное возможности SQL в 3.0 намного ширше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 10:52 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Симонов Денис, Это я примерно в курсе. Но в ротоколе то, ведь можно было проявить (небезопасный) вольюнтаризм?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 11:01 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Vlad F, т.обр., то, что вообще не требовало настройки для FB Embedded 2.5, стало простым и удобным в 3.0? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 11:05 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Фэйтл Эра, 1) я не писал про удобство, упирал в основном на большую централизованность/надежность; 2) про протокол счел возможным мимо уха пропустить? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 11:19 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Ого, какая полемика :) В итоге, если слить все в одно многопоточное приложение - сервер Файрберд ставить нет надобности? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 11:23 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik...В итоге, если слить все в одно многопоточное приложение - сервер Файрберд ставить нет надобности? Ну, если ты такой вывод после всех советов делаешь - то, конечно, не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 11:28 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, Надо попробовать, надо попробовать.)) Но технологически, полагаю, много проще начать с замены Embedded с двойки на тройку, не исключено, что уже тем самым будет достигнут нужный результат (там ведь внутри еще дофига чего поменялось в плане надежности). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 11:31 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, откуда такой мягко говоря странный вывод. В Embedded например нет префетча записей в протоколе, само по себе вероятность угробить БД выше, ну и совместный доступ к БД куда менее эффективный, ибо осуществляется через ServerMode=classic. По мне принцип разделяй и властвуй всегда лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 11:42 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchikПросто база становится непригодной, даже backup/restore не может ее распознать. причиной такого embedded быть не может. Это либо вирус, либо что-то с диском или операционной системой. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:08 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Симонов Денис, я все понимаю, что конечно сервер надежнее, но неужели на Firebird Embedded делают только однопоточные приложения ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:10 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, 1. см. мой предыдущий ответ 2. fb 2.5 embedded может работать с одной базой из разных exe. Но про вероятные падения exe вам уже сказали, а это значит, что падает "сервер". Кроме того, эффективность таких "многопользовательских" решений на embedded под большим вопросом. В чем смысл этой псевдо-многопользовательскости? Самый дурацкий вариант - embedded в вебе из под .net или php. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:15 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, смотря что подразумевается под многопоточностью. Если вы реально делаете сервер приложений, то толку в Embedded ноль. И я сильно сомневаюсь в его эффективности для таких задач. Конечно чисто теоретически вы можете сделать некий аналог листнера firebird.exe со своим бледжэком и ..., но задача это крайне не простая. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:26 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
kdv, у меня многопользовательность - это просто разные потоки с отдельными коннектами. всем спасибо за советы, этот форум - лучший! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:27 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, многопользовательность? даже не просто многопоточностью? Тогда Embedded тут точно не в тему. Для экономии на дорогих коннектах есть пулы подключений ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:30 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Симонов Денис, да нет... Просто kdv спросил зачем такая псевдо-многопользовательность. Я ответил что в моем случае псевдо-многопользовательность - это мои потоки с отдельными коннектами. Конечно, если физически несколько пользователей - то сервер ставится однозначно ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:38 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, и много их? Для чего они? Просто чтобы пользователь чего там не ждал, тогда ладно и Embedded сойдёт. Если же реально работают десяток потоков интенсивно что-то молотящих, то Embedded уже не в тему ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:49 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Симонов Денис, не много... пока один - формирует отчеты раз в 15 минут и отправляет в каталог, и вот, после слияния приложений, прибавится второй, который по факту делает репликацию с другой базой данных. Приходят файлы с изменениями, этот поток садит их в базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:51 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, так у вас сервис? Что мне кажется плохой идея когда один сервис выполняет совершенно разные задачи. По мне лучше поставить полноценный сервер Firebird. А потом один сервис будет клепать отчёты, а второй репликацией заниматься. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 13:00 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Симонов Денис, нет почему сервис, это приложение по учету товаров, пользователь работает в ней постоянно, а отдельный поток Раз в 15 минут отправляет отчеты для начальника, и теперь прибавляется еще поток для репликации с другими торговыми точками. Но в общем мысль вашу я понял ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 13:05 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchikКонечно, если физически несколько пользователей - то сервер ставится однозначно Крайне желательно использовать полноценный сервер в любом случае. Дело в том, что сервер FB - достаточно "вылизанное" приложение в плане надежности, вероятность его падания и порчи файла базы весьма невелика. А если "упадет" твое приложение - то упадет и "Embedded server", вот и причина порчи файла базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 13:07 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchikнеужели на Firebird Embedded делают только однопоточные приложения Делают всё что угодно, но это делают люди от приложений которых база не портится. Поэтому у тебя выбора нет: надо ставить полноценный сервер. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 13:32 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
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 сервера, так как он используется другим приложением. В итоге, первое стартующее приложение будет запускать сервер БД, а последнее завершающееся приложение - тушить его. При этом, при старте сервера БД можно указывать нестандартный порт, но приложения, естественно, должны об этом знать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 14:56 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560842]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 9ms |
total: | 275ms |
0 / 0 |