Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2014, 08:04   #1
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию Работа нескольких пользователей с одной таблицей.

Доброго здравия, господа и (хоть и с небольшим процентом вероятности, что сюда зайдет мадемуазель) дамы. Есть БД на SQL Server. Предположим, я написал сервера и клиента. Клиент никак не работает с БД на прямую, а лишь отправляет команды на сервер, сервер их обрабатывает и отсылает рез-ты.
Тут начинается самое интересное. Несколько клиентов отправляют одинаковые команды на сервер одновременно и....
Вопрос - как лучше организовать прием и обработку одновременных запросов? Создать очередь команд, создавать динамически TADOTable + TDataSet для каждого клиента, создавать TADOQuery для каждого клиента или ваш вариант.
Спасибо за внимание.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 27.02.2014, 08:18   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Программа 2х (клиент-сервер) или 3х (сервер БД-сервер приложения-клиент) звенная?
Streletz вне форума Ответить с цитированием
Старый 27.02.2014, 08:24   #3
5cek
Форумчанин
 
Регистрация: 04.07.2013
Сообщений: 118
По умолчанию

Для начала уточните на чем вы написали сервер-клиент, на инди на стандартных сокетах или на чем? А вообще если допустим я так извращался и писал на инди, то конечно создавал бы для каждого клиента по Query, дабы не вызывало напрягов в работе, ибо если два клиента попытаются выполнить одновременно запросы через один Query, у них не чего не выйдет (получиться только при правильно организованной многопоточности).
5cek вне форума Ответить с цитированием
Старый 27.02.2014, 08:44   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

На сервере для каждого клиентского соединения свой поток и в нем свои адошные компоненты для обращения к базе, начиная с ADOConnection
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.02.2014, 13:11   #5
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Streletz, 3-звенная.

5cek, TserverSocket и TClientSocket. Я тоже задумывался на счет Query. Но т.к. мои познания в данной сфере не глубоки, пришел за советом.

Аватар, То есть я кидаю clientsocket - serversocket, adotable, datasource, etc , настаиваю их, а они позаботятся сами о коллизиях? Я правильно понимаю?
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 27.02.2014, 13:59   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
они позаботятся сами о коллизиях?
Цитата:
Есть БД на SQL Server
Если это MS SQL и в отдельных потоках. Об управлении транзакциями нужно самому заботиться. И не понял где место на сервере-приложений для datasource? adotable там тоже не к месту - запросы и соответственно adoquery. А вообще в локальной сети трехзвенку удобнее компонентами дельфи реализовывать - remotedatamodule, adoquery, datasetprovider на сервере и clientdataset и какой-то connection из datasnap на клиенте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.02.2014, 15:01   #7
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Цитата:
Если это MS SQL и в отдельных потоках.
Да, MS SQL. То есть ServerSocket выставить в ssHreadBlocking?

Цитата:
Об управлении транзакциями нужно самому заботиться.
Если есть под рукой линки на ценный исчерпывающий источник по данной теме, то был бы признателен за линки.
Цитата:
И не понял где место на сервере-приложений для datasource?
Я в этой сфере не силен, но что в институте учили, что на разных ресурсах интернета всегда идет связка таблица+источник данных. В help по этому вопросу не лазил.
Цитата:
adotable там тоже не к месту
ADOTable на серве, возможно, и не понадобится, т.к. все изменения в таблицах будут производиться посредством SQL-запросов.
Цитата:
А вообще в локальной сети трехзвенку ... реализовать
1)с этими компонентами ни разу не работал, кроме АДОзапроса;
2)работать должна через WWW.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 27.02.2014, 16:01   #8
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

По теме транзакций:
Транзакции в MS SQL Server
Настройка уровня изоляции транзакции
По теме DataSnap:
Введение в DataSnap
Streletz вне форума Ответить с цитированием
Старый 28.02.2014, 07:20   #9
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Спасибо, Streletz и Аватар.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 28.02.2014, 07:27   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Rin, чехорду хочешь устроить? Ну-ну. Поприкалываемся!
Не, технически, это сделать возможно, но зачем? Проблем у пользователей не хватает?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Соединение несколько полей таблицы с одной таблицей. Как удалять? jean666 SQL, базы данных 0 11.12.2013 12:53
Хранение данных админа и пользователей не трубующих регистрации в одной таблице? shockwave PHP 1 18.09.2013 11:35
как сделать вход в программу для нескольких пользователей? Маня_Я БД в Delphi 1 09.05.2012 01:13
Сравнение нескольких ячеек с одной Makintosh_87 Microsoft Office Excel 2 11.09.2010 02:00
Создание нескольких форм в одной Лукманов Александр Общие вопросы Delphi 1 11.04.2009 13:08