Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

помогите с логикой


Страницы:   1 2

Faceless ©   (2012-01-06 14:26:00) 

Есть программа (клиент и сервер), работающая с БД. Нужно реализовать возможность экспорта / импорта данных из / в БД. Как поступать, если на момент экспорта / импорта с БД работает несколько пользователей. К примеру, один пользователь запустит операцию экспорта, в этот момент другими пользователями будет редактироваться БД. Что посоветуете? Может на момент экспорта / импорта блокировать работу с БД для все пользователей?


Dennis I. Komarov   (2012-01-13 19:42:00) [1]

Такая логика имеет полное право на жизнь, все зависит от задачи...
к [0]:
складывай xml-ки, но не обрабатывай их во время операций exp/imp и т.п.


Cobalt   (2012-01-13 16:41:00) [2]

Да, насчет 1-го пункта - Тут СУБД сама будет разруливать блокировки, версии и прочую фигню, придуманную более головастыми чуваками, а ты будешь под них подстраиваться то тушкой, то чучелком :-)


Труп Васи Доброго   (2012-01-13 16:05:00) [3]


> субд в инет выпускать никто не будет

эт почему же? кто запретит?


знайка   (2012-01-13 14:43:00) [4]

При чем тут клиент-сервер, клиенты могут сидеть далеко, а тем более курьеры, эти и из мобилок могут ходить, и субд в инет выпускать никто не будет.
Нормальный подход.
Не понятно в чем проблемма у автора, использавать транзакции как уже писали.


Труп Васи Доброго   (2012-01-13 14:43:00) [5]


> вот как-то так.

Вот молодец! Практически мою мысль озвучил! Я тоже хотел человеку предложить очередь создать. Хотя пункт №1 предпочтительнее и гораздо эффективнее.


Cobalt   (2012-01-13 14:11:00) [6]

кратко резюмирую всех вышевысказавшихся:
В текущей ситуации у тебя есть 2 пути:
1) Перевести данные в Клиент-серверную СУБД (Оракл, МССКЛ и т.п.)
2) Оставить всё как есть, добавив пул входящих запросов в программу-сервер - между валидацией и добавлением в БД. Там будут складироваться запросы на вермя обработки.
На время Экспорта/импорта(?!)/Резервной копии дожидаться окончание очередной операции с БД, стопать добавление из пула в БД, делать свое дело, и разрешать дальше работать.

вот как-то так.


Anatoly Podgoretsky   (2012-01-06 19:27:00) [7]

> sniknik  (06.01.2012 19:12:14)  [14]

Но он хочет не по принципам работать, а по своему и уверждает, что у него
клиент сервер. Только подлинный клиент сервер обеспечивает все прозрачно,
или по крайней мере выбрать нужный уровень изоляции транзакций. Данная СУБД
все таки это не обеспечивает.


sniknik   (2012-01-06 19:12:00) [8]

> Это не клиент-сервер. А файл-сервер
у него принцип клиент-сервер, т.к. есть программа клиент, и программа сервер. то что после сервер использует файл сервер, это уже не принципиально.
трехзвенка по другому. своя.

> программа писалась еще до меня.
найти того, кем писалось, и заплатить за доработку. всего проблем то.


Anatoly Podgoretsky   (2012-01-06 18:27:00) [9]


> СУБД: MS Access, программа писалась еще до меня.

Это не клиент-сервер. А файл-сервер


stas   (2012-01-06 16:22:00) [10]

Faceless ©   (06.01.12 16:05) [10]
Клиент-серверная технология решено все на уровне сервера.
На клиенте указывается имя сервера и за всеми операциями следит сервер.


MsGuns   (2012-01-06 16:19:00) [11]

Вам надо вообще чего-нибудь почитать о базах данных, клиент-сервере и т.д.
А то лошадки, песочница, куличики...


Faceless   (2012-01-06 16:05:00) [12]


> А зачем так?


А чем плоха такая организация? Сделано так, чтобы при необходимости после какой-либо операции можно было разослать нужную информацию всем запущенным программам-клиентам.


stas   (2012-01-06 15:19:00) [13]

Faceless ©   (06.01.12 15:00) [8]

А зачем так?

может стоит прислушаться к
Anatoly Podgoretsky ©   (06.01.12 14:52) [7]


Faceless   (2012-01-06 15:00:00) [14]


> Для начала нужно сообщить тип СУБД.


СУБД: MS Access, программа писалась еще до меня.

Сама программа предназначается для управления заказами и курьерами.

Логика работы с программы такая:

К примеру, пользователь в программе-клиенте добавляет новый заказ. На этом этапе формируется XML с данными заказа и в виде текста отправляется через ClientSocket. Приложение-сервер принимает XML через ServerSocket, выполняет валидацию данных в XML и добавляет данные в БД. Таким образом весь код по работе с БД выполняется программой-сервером, приложения-клиенты только посылают socket-запросы с текстовыми данными в формате XML.


Anatoly Podgoretsky   (2012-01-06 14:52:00) [15]

> Faceless  (06.01.2012 14:26:00)  [0]

Используй нормальный клиент-сервер


DiamondShark   (2012-01-06 14:50:00) [16]

Для начала нужно сообщить тип СУБД.


Faceless   (2012-01-06 14:43:00) [17]

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


Омлет   (2012-01-06 14:35:00) [18]


> запить

запись


Омлет   (2012-01-06 14:34:00) [19]

Заворачивай всё в транзакции, субд сама заблокирует запить, где это необходимо.


артём   (2012-01-06 14:33:00) [20]

и какая база данных используется в программе? db, dbf, mdb или oracle. Что используется?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо