Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];

Вниз

Многопользовательский доступ к 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.012 c
3-65781
DmTM
2003-10-30 12:59
2003.11.20
данные из ADODataSet пропадают после закрытия соединения, ПОЧЕМУ?


6-66040
Дмитрий П
2003-09-14 13:15
2003.11.20
Управление LAN интернет-соединением.


1-65836
dream
2003-11-07 14:06
2003.11.20
Проблема с редактированием реестра из программы которую запустил


3-65797
AlexenderG
2003-10-30 12:53
2003.11.20
У кого есть DsgnIntf.pas и DsgnIntf.dcu? Пожалуйста очень надо!!!


14-66118
Dimaz-z
2003-10-28 21:24
2003.11.20
Я не могу отправлять почту через SMTP, т.к. 25 порт заблокирован!





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