Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо