Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.20;
Скачать: CL | DM;

Вниз

Многопользовательский доступ к dbf из программ на Delphi   Найти похожие ветки 

 
F...   (2003-10-27 05:46) [0]

Мне нужно к базе данных в формате dbf обращаться с нескольких рабочих мест (с разных компьютеров) из приложения написанного в Delphi. Прекрасно понимаю, что проще сделать на каком-нибудь SQL сервере (IB/FB, MySQL, и т.д.), но таково требование!
И так, как сделать многопользовательский доступ к dbf в приложениях написанных в Delphi? Какие настройки? Какие тонкие места? Что можно почитать на эту тему (укажите пожалуйста ссылки)?


 
Anatoly Podgoretsky ©   (2003-10-27 07:43) [1]

Ни каких, но если установишь LocalShare в true, то работать будет более стабильно.


 
kavlad   (2003-10-27 09:59) [2]

А можно написать свой SQL-сервер :) Или поробывать навоять что-нибудь на midas"е.


 
F...   (2003-10-27 09:59) [3]

А где эта самая LocalShare находится?
Я нашёл только HandleShared в TDataBase...


 
DenK_vrtz ©   (2003-10-27 10:02) [4]

BDE Administrator/System/INIT


 
Anatoly Podgoretsky ©   (2003-10-27 10:03) [5]

BDEAdmin


 
F...   (2003-10-27 11:28) [6]

Я не заметил разнецы (в тестовом приложении) между LocalShare=True и LocalShare=False!
За что отвечает этот параметр?


 
Anatoly Podgoretsky ©   (2003-10-27 11:30) [7]

За взаимное использование баз


 
F...   (2003-10-29 07:08) [8]

Что то всё таки не то... Провёл 2 эксперимента со следующими результатами:
1) Запускаю на одной машине 3 тестовых программы. Все настроены на одину и ту же базу, находящуюся на сервере. Время выполнения SQL запроса на обновление (update table1 set field1=1) меньше секунды (около 300 мсек).
2) Запускаю это же тестовое приложение на 2х компьютерах, настройки такие же как в первом эксперименте. При этом время выполнения SQL запроса на обновление чуть больше 15 секунд.
На обоих компьютерах в параметрах BDE установлено LocalShare=True.

Вопрос: В чём проблема?


 
F...   (2003-10-29 07:59) [9]

Интересное дело...
Если на одной машине перейти в режим редактирования в компоненте TTable и выполнять SQL запрос на обновление всех записей, то TQuery без вопросов отрабатывает и изменяет даже ту запись, которая в данный момент редактируется в TTable!
Если же на одной машине перейти в режим редактирования в компоненте TTable, а на другой машине выполнить SQL запрос на обновление всех записей, то TQuery обновит все записи, кроме той которая редактируется с другого рабочего места и в добавок руганётся, что запись занята!

Какие будут комментарии?


 
Digitman ©   (2003-10-29 08:43) [10]


> F...


от твоего фиаско как программера тебя может на время спасти лишь централизация логики обращения к DBF БД на AppServer"е

т.е. дело пахнет "трехзвенкой" : "тонкий" клиент <-> AppServer с DBF-драйвером <-> файл-сервер с DBF-базой

еще лучше, если ф-ции файл-сервера будет выполнять та же машина, на которой работает AppServer - при лок.доступе к таблицам проблемы мультисессионного доступа к ним будут минимальны, да и суммарный сет.траффик будет ощутимо меньше

иначе (при 2-хзвенной архитектуре : "толстый" клиент с DBF-драйвером <-> файл-сервер) рано или поздно неминуемы бесконечные падения индексов и/или нарушения структур DBF-таблиц и/или нарушения ссылочной целостности DBF-базы в целом


 
Anatoly Podgoretsky ©   (2003-10-29 08:53) [11]

F... (29.10.03 07:59) [9]
Комментарий простой - запись занята!
Мораль

1. при многопользовательском доступе нельзя на долго занимать запись
2. обрабатывать конфликты, хороши для этого трансакции, см. п. 3
3. перейти на клиент-сервеное приложение, но см. п. 1


 
ЮЮ ©   (2003-10-29 08:56) [12]

4. Если записи и так изменяются при помощи SQL не использовать TTable


 
F...   (2003-10-30 05:26) [13]

В своём вопросе я писал:
...Прекрасно понимаю, что проще сделать на каком-нибудь SQL сервере (IB/FB, MySQL, и т.д.), но таково требование!

А требование таково: необходимо написать программу, которая будет обращаться к dbf находящиеся на сервере! То есть никакой трёхзвенки, никакого SQL сервера! И только DBF!
Добавлю, что база не большая (около 10 MB) и пользователей пока 3, из них 1 пишуший и 2 читающих!


 
F...   (2003-10-30 12:02) [14]

И всё таки я не получил ответ на вопрос: Почему При подключении новых пользователей (с других машин) скорость работы резко ухудшается (в десятки раз, см. выше результаты 2х экспериментов)?


 
Anatoly Podgoretsky ©   (2003-10-30 12:21) [15]

У тебя индексы есть, если есть то они обновляются в монопольном режиме, все остальные ждут


 
F...   (2003-10-31 03:53) [16]

Неа нету! В тестовой базе только одна таблица с двумя полями и 1000 записями (без индексов).


 
Digitman ©   (2003-10-31 08:29) [17]


> А требование таково: необходимо написать программу, которая
> будет обращаться к dbf находящиеся на сервере! То есть никакой
> трёхзвенки, никакого SQL сервера! И только DBF!


1. DBF, разумеется, будут находиться на сервере.
2. Почему "никакой 3-хзвенки" ? Кто и на основании чего внес это ограничение ?
3. Про SQL-сервер и речи не идет.
4. "И только DBF" + программа, выполняющая роль AppServer"а, на той же машине, где и те самые DBF .. что здесь противоречит условиям ? Кто-что тебя ограничивает в создании AppServer"а ?


 
F...   (2003-10-31 09:13) [18]

> 1. DBF, разумеется, будут находиться на сервере.
Да!

> 2. Почему "никакой 3-хзвенки" ? Кто и на основании чего
> внес это ограничение ?
Требование заказчика! К сожалению обсуждению этот пункт не подвергается!

> 3. Про SQL-сервер и речи не идет.
Точно! см. ответ на предыдущий вопрос!

> 4. "И только DBF" + программа, выполняющая роль AppServer"а,
> на той же машине, где и те самые DBF .. что здесь противоречит
> условиям ? Кто-что тебя ограничивает в создании AppServer"а ?
Мы то за, а вот япония против... (из известного анекдота)



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

Текущий архив: 2003.11.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.123 c
3-65731
KIR
2003-10-31 16:25
2003.11.20
Как лучше хранить денежные значения в IB 6.5 диалект 3?


6-66029
I_Sword
2003-09-24 18:29
2003.11.20
MAC адреса компьютеров в локальной сети


1-65820
Вера
2003-11-10 12:07
2003.11.20
Как откинуть часть числа?


9-65685
The Kinslayer
2003-05-13 03:17
2003.11.20
О GLScene


1-65851
ZioN
2003-11-09 22:14
2003.11.20
данные в variant