![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MSSQL [D4, MSSQL]
mate © (2003-01-20 14:38:00)Как мне сделать что бы когда несколько пользователей работают с одной базой их изменения сразу же отображались у всех, но что бы это было не заметно (по времени) для них.
Alex Konshin (2003-01-20 20:43:00) [1]Теоретически это возможно сделать с помощью трехзвенки. Но я не говорю, что это легко. Я в своем проекте это пытаюсь сделать.
У меня это возможно, так как доступ к каждой конкретной базе имеет только один узел, и все запросы идут через него, причем сами запросы - это просто имя и параметры, т.е. они описаны в неком конфиге, узел сам строит тексты запросов и, соответственно он знает какие таблицы где отображаются и изменяются. Более того, у меня есть режим открытия запроса вроде live, только у меня такой запрос реально выбирает все данные и закрывает запрос к базе (чтобы не блокировать доступ) и, далее, когда клиент запрашивает данные, работает подобно кешу. Вот именно здесь я и могу при изменении данных другим запросом вставить обновление этого кеша и нотификацию клиента. Также у меня возможна нотификация из тригеров, т.е., теоретически, можно отлавливать даже те изменения, которые сделаны в обход моей системы.
Кешированные запросы могут использоваться несколькими клиентами одновременно (только и параметры должны быть одинаковыми).
Cам не знаю когда я смогу реализовать это все в полном объеме - пишу это, можно сказать, ради развлечения. Хотя само ядро уже давно используется в реальном приложении на моем прежнем месте работы (MT Computers в Питере).
Anatoly Podgoretsky (2003-01-20 15:07:00) [2]Это не только будет заметно по времени, но даже и на жкране будет свистопляска, что у тебя сервер спаммер?
Reindeer Moss Eater (2003-01-20 14:57:00) [3]1. Более мощный сервер
2. Более быстрый канал до сервера
3. Более мощный клиент
4. Отказ от TTable и ненужных на клиенте данных
mate (2003-01-20 14:56:00) [4]
> Неправильно
А как же мне тогда это сделать?
mate (2003-01-20 14:54:00) [5]Из выше приведённого я понял , что ускорить процесс "увидения" "чужих" записей я не смогу. Правильно?
Reindeer Moss Eater (2003-01-20 14:54:00) [6]Неправильно
passm (2003-01-20 14:52:00) [7]mate © (20.01.03 14:48)>
> НО т.к. у меня в базе ~7000 записей то Table1.Open длится
> достаточно долго, как мне сделать чтобы это было значительно
> быстрее?
Воспользоваться Query и сократить количество записей.
Reindeer Moss Eater (2003-01-20 14:50:00) [8]Плохо видно понял.
Уровень изоляции транзакций DirtyRead позоволяет видеть одной транзакции неподтвержденные (это имелось ввиду под "их изменения сразу же отображались..." ?) изменения в другой. Однако не надо думать, что при этом не требуется переоткрывать наборы данных на рабочих местах, которые хотят видеть эти изменения.
mate (2003-01-20 14:48:00) [9]Сам - то понял.
Объясняю - когда я добавляю запись в DBGrid(->DataSource->Table->DBE->MSSQL) то его после post не видно в DBGrid , если сделать
Table1.Close и Table1.Open, то она (запись) появляется, НО т.к. у меня в базе ~7000 записей то Table1.Open длится достаточно долго, как мне сделать чтобы это было значительно быстрее?
Reindeer Moss Eater (2003-01-20 14:39:00) [10]Сам понял что сказал?