Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

Многопоточность при работе с базой   Найти похожие ветки 

 
leonon ©   (2004-08-04 17:43) [0]

Хочу сделать HTTP сервер, который взаимодействовал бы с базой данных. При формировании ответа на запрос пользователя работает примерно такой код:

var
 Query : TIBQuery;
begin
 Query := TIBQuery.Create(Nil);
 try
   Query.DatabaseName := IBDatabase;
   Query.SQL.Add(какой-то запрос);
   Query.Open;

   {обработка данных}

 finally
   if Query.Active then Query.Close;
   FreeAndNil(Query);
 end;
end;

Все работает просто замечательно, если коннектится 1 пользователь. Но если их больше и одновременно запрашивают документы, то вылезает ошибка EIBError - немогу прочитать данные из соединения. Как быть?


 
dtm ©   (2004-08-04 17:48) [1]

А по-больше информации?
Не на Yaffil Personal случайно работаешь?


 
leonon ©   (2004-08-04 17:50) [2]

Нет с FireBird 1.02


 
dtm ©   (2004-08-04 17:55) [3]

А что за "НТТР сервер"? =)


 
leonon ©   (2004-08-04 17:58) [4]

Использую библиотеку Indy. В качестве сервера выступает TIdHTTPServer.


 
dtm ©   (2004-08-04 18:01) [5]

Так тебе Web - сервер нужен или App Server?


 
leonon ©   (2004-08-04 18:09) [6]

Мне нужно, что бы мое приложение выступало в роли сервера приложений, осуществляло всю бизнес-логику по работе с базой, а ответы кидало HTML документами, ну и соответственно обрабатывало запросы клиентов. Т.е. на их стороне обычный броузер, посредством которого они с моим сервером работают.


 
Desdechado ©   (2004-08-04 18:15) [7]

небе на каждого пользователя придется открывать отдельное соединение или же ставить их в очередь и обрабатывать последовательно. Это потому, что IB-клиент не является tread-safe, т.е. через одно подключение 2 параллельных запроса подерутся.


 
leonon ©   (2004-08-04 18:17) [8]

Я так и думал... :(((


 
dtm ©   (2004-08-04 18:20) [9]

Ты когда будешь создавать (или уже создавал) библиотеку типов сервера приложений, укажи в графе Instance значение Multi-threaded.

Хотя конкретный выбор этого значения зависит от назначеия программы и ещё многих факторов.


 
leonon ©   (2004-08-04 18:24) [10]

Хорошо, тогда такой вопрос, что лучше ставить их в очередь, или делать параллельные соединения?


 
dtm ©   (2004-08-04 19:02) [11]

Instancing. Use the instancing combo box to indicate how your remote data module application is launched. The following table lists the possible values:

Value Meaning

1. Internal
The remote data module is created in an in-process server. Choose this option when creating a remote data module as part of an active library (DLL).

2. Single Instance
Only a single instance of the remote data module is created for each executable. Each client connection launches its own instance of the executable. The remote data module instance is therefore dedicated to a single client.

3. Multiple Instance
A single instance of the application (process) instantiates all remote data modules created for clients. Each remote data module is dedicated to a single client connection, but they all share the same process space.


 
Desdechado ©   (2004-08-04 19:25) [12]

[10]
зависит от интенсивности и тяжести запросов, а также от кол-ва юзеров


 
leonon ©   (2004-08-04 19:38) [13]

Пользователей 50-70, запросы средней тяжести. Приложение общается с базой локально. Сервер 1G Xeon


 
Desdechado ©   (2004-08-05 11:12) [14]

а теперь построй мат модель твоей СМО и проанализируй, достаточно ли одного обслуживающего прибора или надо несколько при известной интенсивности запросов, распределении времени обслуживания и ограничений на него



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.034 c
1-1092645668
Bizon`s
2004-08-16 12:41
2004.08.29
Update Delphi6


3-1091522796
MORA
2004-08-03 12:46
2004.08.29
Подстановочные поля


14-1092122418
KADAN
2004-08-10 11:20
2004.08.29
SDK по F1


4-1089904102
DDDeN
2004-07-15 19:08
2004.08.29
Перемещение файлов


1-1092206792
atmospheric
2004-08-11 10:46
2004.08.29
Компонент для преобразования html таблицы в StringGrid?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский