Форум: "Базы";
Текущий архив: 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