powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Хранение справочников на клиенте
19 сообщений из 19, страница 1 из 1
Хранение справочников на клиенте
    #36590984
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас перевожу чужой проект на новую версию Delphi. Там большое кол-во справочников, значения в которых практически не меняются, если посмотреть то добавляется 2-3 записи в год. Человек писавший программу всюду грузит эти справочники каждый раз, что создает большую нагрузку на сеть и сервер. Однако из-за большого кол-ва форм (причем все разные, однотипных нет), делать подгрузку частями проблематично - слишком много переписывать. Возникла идея хранить справочники на клиенте. Т.е. как мне это видется:
1) Создается таблица в которой хранится дата модификации справочника
2) Клиент получает дату, формирует имя файла по шаблону [username]_[tablename]_[lastdate].tmp
Проверяет наличие файла в каталоге temp (или ином указаном администратором) если файл есть то пробует загрузить его в memory table, если ошибка загрузки или файла нет, то получает от сервера набор данных в memory table и сохраняет в указаной папке.
Если кто делал подобное подскажите ничего ли я не упустил или могут быть еще какие-нибудь грабли?
______________________________________________________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
I'm love design principle KISS - Keep It Simple, Stupid
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591157
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Asm64DЧеловек писавший программу всюду грузит эти справочники каждый раз, что создает большую нагрузку на сеть и сервер.
с чего ты взял, что серверу тяжело открыть форму со 5-10 справочниками? Перепутал с видео или фото?
Если ты сервер - не суетись под клиентом (с)
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591188
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123с чего ты взял, что серверу тяжело открыть форму со 5-10 справочниками? Перепутал с видео или фото?
Если ты сервер - не суетись под клиентом (с)
C того что сейчас программа потормаживает именно при показе справочников, при каждом вызове тянется порядка 10 мб, к тому же организация бюджетная сетевухи максимум на 100 мб/с, сервер вообще комп админа. И главное что улучшать что либо кроме программы они не будут. Моя задача перевести на D2009 и ускорить отображении форм, сейчас наблюдается задержка порядка 10 сек.
______________________________________________________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
I'm love design principle KISS - Keep It Simple, Stupid
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591229
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Asm64DPetro123с чего ты взял, что серверу тяжело открыть форму со 5-10 справочниками? Перепутал с видео или фото?
Если ты сервер - не суетись под клиентом (с)
C того что сейчас программа потормаживает именно при показе справочников, при каждом вызове тянется порядка 10 мб,

авторименно при показе справочников
расшифруй ВИ


- покажи лог запросов на 10 мегов
SELECT звёздочка?
- для читающих форм и режимов, справочники не нужны вообще (JOIN)
- показывай их по требованию

ЗЫ. Хранить на клиенте - наихудший путь
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591318
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123
- покажи лог запросов на 10 мегов
SELECT звёздочка?

Там хоть цевильно, поля перечисляются, но тянется на клиента:
Код: plaintext
1.
2.
3.
4.
5.
6.
Таблица   кол-во записей    кол-во полей   из них строки
1             10256                   7           5 
2             8561                    5           3
3             8357                    3           2

12            5642                    4           2
На одну форму ввода приходится в среднем 5 справочников, в среднем на отображении формы 10 сек было. Сейчас пока вынес запросы в потоки. Программа перестала тормозить при отображении формы добавления. Эксперементирую с memory table, саму задумку не реализовал.
Petro123
- для читающих форм и режимов, справочники не нужны вообще (JOIN)

Это я тоже хорошо знаю. Проблема в том что программы имеет назначение ввод данных. Вот и получается постоянное тягание справочника. Для отображения рузультатов у них кто-то веб морду на php написал.
Petro123
- показывай их по требованию

Это тоже я знаю, проблема даже не в том что слишком много исправлять (и легче переписать), а в том, что заказчик не хочет изменений интерфейса вообще, мотивирую тем что сотрудницы уже в возрасте (тети от 40), они мол привыкли к такому интерфейсу и дополнительные фильтры они не хотят, поиск по названию тоже не хотят им видителе легче прокручивать грид чтоб выбрать запись а не ввести начальные буквы . Я бы переписал с радостью, но у них нет желания, плюс и оплата смешная (взялся потому "попросили" из универа - я пока еще человек подневольный ).
Petro123
ЗЫ. Хранить на клиенте - наихудший путь
Согласен, но видите с учетом того что эти справочники не меняются (практически) пожалуй самый лучший способ.
______________________________________________________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
I'm love design principle KISS - Keep It Simple, Stupid
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591342
vill_ager
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Asm64D,

а зачем при открытии формы вытягивать все справочники целиком?
неужели прямо в одной форме скроллятся 5 справочников?

Но по любому - надо тянуть только строки, нужные для отображения.
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591360
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vill_agerа зачем при открытии формы вытягивать все справочники целиком?
Видимо автор был студент моего факультета которого тоже "попросили"
vill_agerнеужели прямо в одной форме скроллятся 5 справочников?
На самой тормазнутой 2 вкладки 3 грида с выбором на одной, 2 на другой. Сейчас как я уже писал загрузка идет в потоках, форма летает, но все равно каждый раз грузит с сервака. Хотя опять же надо смотреть как оно будет у них, сейчас то сервер и клиент на одной машине (у меня дома). Ехать туда буду в пятницу.
vill_agerНо по любому - надо тянуть только строки, нужные для отображения.
Для этого или вводит условия фильтрации или поиска, или менять грид на более навороченный, но все опять упирается в
Asm64D
а в том, что заказчик не хочет изменений интерфейса вообще, мотивирую тем что сотрудницы уже в возрасте (тети от 40), они мол привыкли к такому интерфейсу и дополнительные фильтры они не хотят, поиск по названию тоже не хотят им видителе легче прокручивать грид чтоб выбрать запись а не ввести начальные буквы

______________________________________________________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
I'm love design principle KISS - Keep It Simple, Stupid
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591397
vill_ager
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Asm64D,
если не менять интерфейс, то менять грид

грид не должен тянуть все строки

я такой делал руками (python+qt)

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

все это называется MVC
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591509
905
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Asm64D
На самой тормазнутой 2 вкладки 3 грида с выбором на одной, 2 на другой. Сейчас как я уже писал загрузка идет в потоках, форма летает, но все равно каждый раз грузит с сервака. Хотя опять же надо смотреть как оно будет у них, сейчас то сервер и клиент на одной машине (у меня дома). Ехать туда буду в пятницу.


не совсем понял что значит "в потоках"
а если сделать так:
создать класс-proxy, который будет предоставлять данные из справочника - класс открывает еще одно соединение к БД и открывает курсор для справочника
клиент класса может запросить размер выборки для создания грида или combobox со справочными данными
клиент класса может запросить любую строку справочника, например для отображения
класс должен иметь синхронизацию от паралельного доступа
дополнительно класс может перезапросить данные справочника если они изменились, оповестив своих клиентов клиентов

для тестов дома можно поставить виртуальную машину (в нее поставить сервер) - будет скорость канала 100/10 мбит (или даже любое другое)
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591706
IgorK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Админил когда-то такую программу, у которой справочники кэшировались на клиенте. В принципе неплохо работало, особых неудобств не доставляло - ИМХО все зависит от реализации.
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36591935
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно хранить локально минисправочники, загружаемые в комбобоксы.
Также хранить локально наборы иконок (синхронизируемых по необходимости).
И шаблоны отчетов.

Экономить же трафик в гриде путем добавления лукап-поля довольно глупо.
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36593398
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Asm64D,
как вариант - грузить все/нужные справочники при старте или при первом требовании и держать их в memory table, и в формах их уже не придется тянуть с сервера каждый раз..
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36593575
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvbAsm64D,
как вариант - грузить все/нужные справочники при старте или при первом требовании и держать их в memory table, и в формах их уже не придется тянуть с сервера каждый раз..
Возможно будет очень сильно отжирать оперативу, компы у них старье, не думаю что там оперативки больше 256 мб. Но как вариант тоже попробую. Завтра повезу тестить на месте, потом отпишусь.
______________________________________________________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
I'm love design principle KISS - Keep It Simple, Stupid
Ах скоро диплом, и никто не будет мне приказывать что делать... по крайней мере из универа... Но кто читает подпись таким мелким шрифтом...
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36593610
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фиг бы с той оперативкой. Работать с табличками в памяти иногда просто неудобно: часто тебе нужны не просто данные конкретной таблички, а их комбинации (join's).

Намучившись с табличками в памяти, в одном проекте я такие справочники стал просто хранить в локальной базе.

Тупо создал такую же базу, как и на сервере, но таблички объявил как "глобальные временные", т.е. данные там хранятся от коннекта до коннекта (FireBird 2.5 embedded).

При старте программы в базу один раз засасываются такие "константные" таблички, по завершении - данные автоматически сбрасываются.
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36593726
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NextManНамучившись с табличками в памяти, в одном проекте я такие справочники стал просто хранить в локальной базе.
Тупо создал такую же базу, как и на сервере, но таблички объявил как "глобальные временные", т.е. данные там хранятся от коннекта до коннекта (FireBird 2.5 embedded).
При старте программы в базу один раз засасываются такие "константные" таблички, по завершении - данные автоматически сбрасываются.
Да, это более лучший вариант, чето я и не подумал об embedded.
______________________________________________________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
I'm love design principle KISS - Keep It Simple, Stupid
Красиво продумано про embedded. Но кто читает подпись таким мелким шрифтом...
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36593868
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Asm64D______________________________________________________________
Красиво продумано про embedded. Но кто читает подпись таким мелким шрифтом...
Первый блин!
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36594972
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой,
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36595215
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что ж, боевое тестирование состоялось. Моя схема (первый пост) показала себя великолепно, по крайней мере в течении этого дня Из удивительного могу только сказать что был поражен насколько быстро тети выбирают значения из этих справочников, инстинктивно (или по памяти) угадывая позицию скрола в справочнике, видимо сказываются годы работы с этой программой. Прогу сдал и слава богу.
Спасибо всем кто поучаствовал в обсуждении.
______________________________________________________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
I'm love design principle KISS - Keep It Simple, Stupid
Для голодающих - второй блин!!! Но кто читает подпись таким мелким шрифтом...
...
Рейтинг: 0 / 0
Хранение справочников на клиенте
    #36595859
vill_ager
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Asm64DИз удивительного могу только сказать что был поражен насколько быстро тети выбирают значения из этих справочников, инстинктивно (или по памяти) угадывая позицию скрола в справочнике
а если бы изначально им позволили цифровые коды набирать вместро скролла, то и проблем со скоростью загрузки не возникло бы.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Хранение справочников на клиенте
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]