Советы по Delphi

         

Хитрости многопользовательского доступа к БД


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

В модуле DBIPROCS Delphi 1.0 и в BDE.INT 2.0 существует классная функция с именем DBISETLOCKRETRY(n).

Синтаксис - DBISetLockRetry(n), где n - количество секунд ожидания перед повторной попыткой вставки, редактирования или другой операцией с таблицей. DBISetLockRetry(-1) будет бесконечно пытаться получить доступ к вашей таблице.

Хорошее место для вызова функции - обработчик события TableAfterOpen. В этом случае все, что вам нужно сделать, это:

    DBISetLockRetry(x);

Если вы используете Delphi 1.0, не забудьте включить в вашу программу DBIProcs. В Delphi 2.0 включите BDE.

Мой заказчик и я разработали многопользовательскую базу данных по вашему рецепту, до этого наши пользователи получали сообщения "File is Locked" (файл заблокирован), "Table is Busy" (таблица занята), "Record Locked" (запись заблокирована) и др. Мы также пробовали Session.Netdir, но он не помог нам. Поскольку мы добавили в код эту строку, никаких блокировок не было. Частота обращений пользователей к базе достаточно велика (80 kpm). Мы разработали "измеритель скорости доступа" с 2 открытыми сессиями на двух компьютерах в сети Novell 4.1. Две сессии занимались вставкой, две другие редактированием, а мы сами занимались посылкой данных с частотой около 65 записей в минуту в течение операций редактирования и 85 в течение вставки. Сеть чуть не захлебнулась от такой работы. Утилизация файлового сервера была до нас около 60%. Не плохо для всего! Я думаю Borland необходимо задокументировать такой подход, чтобы другие не становились хакерами типа нас! :)

Эти требования обязательны при разработке многопользовательских приложений Delphi с использованием файлов Dbase или Paradox.

- Ted Bulmanski [001007]



Содержание раздела