Главная страница
    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.48 MB
Время: 0.032 c
14-1092309198
ilya__
2004-08-12 15:13
2004.08.29
Мне предложили опубликовать мою программу


3-1091524978
Zabludshiy
2004-08-03 13:22
2004.08.29
заполнение CLOB поля в oracle 8


3-1091591198
mixam
2004-08-04 07:46
2004.08.29
bde


14-1091964298
ИМХО
2004-08-08 15:24
2004.08.29
Смотреть телевидение через компьютер


1-1092137241
Pavelkq
2004-08-10 15:27
2004.08.29
Сравнение двух TStringList-ов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский