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

Вниз

MSSQL   Найти похожие ветки 

 
mate ©   (2003-01-20 14:38) [0]

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


 
Reindeer Moss Eater   (2003-01-20 14:39) [1]

Сам понял что сказал?


 
mate ©   (2003-01-20 14:48) [2]

Сам - то понял.
Объясняю - когда я добавляю запись в DBGrid(->DataSource->Table->DBE->MSSQL) то его после post не видно в DBGrid , если сделать
Table1.Close и Table1.Open, то она (запись) появляется, НО т.к. у меня в базе ~7000 записей то Table1.Open длится достаточно долго, как мне сделать чтобы это было значительно быстрее?


 
Reindeer Moss Eater   (2003-01-20 14:50) [3]

Плохо видно понял.
Уровень изоляции транзакций DirtyRead позоволяет видеть одной транзакции неподтвержденные (это имелось ввиду под "их изменения сразу же отображались..." ?) изменения в другой. Однако не надо думать, что при этом не требуется переоткрывать наборы данных на рабочих местах, которые хотят видеть эти изменения.


 
passm ©   (2003-01-20 14:52) [4]

mate © (20.01.03 14:48)>
> НО т.к. у меня в базе ~7000 записей то Table1.Open длится
> достаточно долго, как мне сделать чтобы это было значительно
> быстрее?

Воспользоваться Query и сократить количество записей.


 
mate ©   (2003-01-20 14:54) [5]

Из выше приведённого я понял , что ускорить процесс "увидения" "чужих" записей я не смогу. Правильно?


 
Reindeer Moss Eater   (2003-01-20 14:54) [6]

Неправильно


 
mate ©   (2003-01-20 14:56) [7]


> Неправильно

А как же мне тогда это сделать?


 
Reindeer Moss Eater   (2003-01-20 14:57) [8]

1. Более мощный сервер
2. Более быстрый канал до сервера
3. Более мощный клиент
4. Отказ от TTable и ненужных на клиенте данных


 
Anatoly Podgoretsky ©   (2003-01-20 15:07) [9]

Это не только будет заметно по времени, но даже и на жкране будет свистопляска, что у тебя сервер спаммер?


 
Alex Konshin   (2003-01-20 20:43) [10]

Теоретически это возможно сделать с помощью трехзвенки. Но я не говорю, что это легко. Я в своем проекте это пытаюсь сделать.
У меня это возможно, так как доступ к каждой конкретной базе имеет только один узел, и все запросы идут через него, причем сами запросы - это просто имя и параметры, т.е. они описаны в неком конфиге, узел сам строит тексты запросов и, соответственно он знает какие таблицы где отображаются и изменяются. Более того, у меня есть режим открытия запроса вроде live, только у меня такой запрос реально выбирает все данные и закрывает запрос к базе (чтобы не блокировать доступ) и, далее, когда клиент запрашивает данные, работает подобно кешу. Вот именно здесь я и могу при изменении данных другим запросом вставить обновление этого кеша и нотификацию клиента. Также у меня возможна нотификация из тригеров, т.е., теоретически, можно отлавливать даже те изменения, которые сделаны в обход моей системы.
Кешированные запросы могут использоваться несколькими клиентами одновременно (только и параметры должны быть одинаковыми).
Cам не знаю когда я смогу реализовать это все в полном объеме - пишу это, можно сказать, ради развлечения. Хотя само ядро уже давно используется в реальном приложении на моем прежнем месте работы (MT Computers в Питере).



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
9-15377
PanPascal
2002-08-17 14:24
2003.02.06
Как найти угол поворота?


6-15803
TCrash
2002-12-13 14:35
2003.02.06
Широковещательный запрос


7-15975
Erlan
2002-11-27 09:20
2003.02.06
Проблема с vxd


4-15998
orlov
2002-12-24 11:53
2003.02.06
подскажите плиз как подключится к инету на чистом API


1-15585
laza
2003-01-28 23:04
2003.02.06
Помогите с кодом