Поиск:

Ответ в темуСоздание новой темы Создание опроса
> автоматическое обновление данных, многопользовательская работа 
:(
    Опции темы
NieL
Дата 9.1.2012, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 10.2.2008

Репутация: нет
Всего: 1



Каким образом можно решить проблему обновления данных в программах-клиентах при многопользовательской работе с СУБД (MS SQL Server). Сейчас программа работает так: например, пользователь 1 добавил новую запись. Чтобы в остальных программах-клиентах отобразились изменения другим пользователям нужно нажать на кнопку обновить. Программой пользуются 2-3 тыс. людей, большинство из них бесит такой подход, они хотят, чтобы, например, если пользователь 1 изменил какую-то информацию, у других пользователей эти изменения отобразились автоматом без лишних телодвижений с их стороны.
PM MAIL   Вверх
Данкинг
Дата 9.1.2012, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Обновляй по таймеру.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
NieL
Дата 9.1.2012, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 10.2.2008

Репутация: нет
Всего: 1



Цитата(Данкинг @  9.1.2012,  22:36 Найти цитируемый пост)
Обновляй по таймеру. 


по таймеру вызывать Refresh? записей > 1 000 000, как-то не очень хорошо получается каждые несколько секунд все рефрешить.


Это сообщение отредактировал(а) NieL - 9.1.2012, 22:55
PM MAIL   Вверх
Данкинг
Дата 9.1.2012, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



А реже нельзя обновлять? К примеру, каждые 10 минут.

Это сообщение отредактировал(а) Данкинг - 9.1.2012, 23:10


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
NieL
Дата 9.1.2012, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 10.2.2008

Репутация: нет
Всего: 1



Нужно сделать как в 1C. Если какой-то пользователь что-либо изменяет, изменения мнгновенно отображаются у других пользователей. Пока что вижу одно решение, реорганизовать программу из архитектуры клиент-сервер в трехзвенную и через сервер приложений делать рассылку изменений всем работающим приложениям-клиентам. Вроде автоматическое обновление в 1C реализовано также. Слышал, что есть еще варианты (через RTMP), поэтому хотелось бы их услышать. 

Это сообщение отредактировал(а) NieL - 9.1.2012, 23:20
PM MAIL   Вверх
RomanEEP
Дата 10.1.2012, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: нет
Всего: 8



можно сделать маленькую табличку в которую записывать данные о времени последнего изменения и постоянно считывать оттуда это время. как время изменилось - обновляем основную таблицу.

А какой смысл рефрешить миллион записей? пользователь все равно их за всю жизнь не просмотрит
PM MAIL   Вверх
Akella
Дата 10.1.2012, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(NieL @  9.1.2012,  22:14 Найти цитируемый пост)
Сейчас программа работает так: например, пользователь 1 добавил новую запись. Чтобы в остальных программах-клиентах отобразились изменения другим пользователям нужно нажать на кнопку обновить.


По идее это нормально. Иначе нагрузка на сервер и сеть будет нерельаной и они потом будут беситься ещё больше.

Добавлено через 1 минуту и 10 секунд
Цитата(NieL @  9.1.2012,  22:50 Найти цитируемый пост)
по таймеру вызывать Refresh? записей > 1 000 000, как-то не очень хорошо получается каждые несколько секунд все рефрешить.


бедные пользователи  smile  smile  smile  smile  smile 
миллион записей им-то зачем на клиенте  smile

Добавлено через 3 минуты и 51 секунду
Цитата(NieL @  9.1.2012,  23:18 Найти цитируемый пост)
Нужно сделать как в 1C. Если какой-то пользователь что-либо изменяет, изменения мнгновенно отображаются у других пользователей. 

Ты видел 1С, где есть в онлайне 2000+ пользователей? Думай!!! Думай много! smile

Добавлено через 7 минут и 58 секунд
Цитата(NieL @  9.1.2012,  22:14 Найти цитируемый пост)
Программой пользуются 2-3 тыс. людей, большинство из них бесит такой подход, они хотят, чтобы, например, если пользователь 1 изменил какую-то информацию, у других пользователей эти изменения отобразились автоматом без лишних телодвижений с их стороны. 


Пусть скидываются на новый сервер  smile 


А самое простое - да: обновляй по таймеру. Дай пользователю самому устанавливать размер интервала. И поверь, что очень скоро они все отключат таймеры полностью.

Ты не сможешь обновлять в TDataSet только пару тройку изменившихся на сервере записей. Это раз.
Используй систему событий СУБД. Я не знаю, по  какой причине ты скрываешь название и версию СУБД (телепаты ещё на зимних каникулах), но вот в Firebird есть система событий, например.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.