|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Сейчас перевожу чужой проект на новую версию Delphi. Там большое кол-во справочников, значения в которых практически не меняются, если посмотреть то добавляется 2-3 записи в год. Человек писавший программу всюду грузит эти справочники каждый раз, что создает большую нагрузку на сеть и сервер. Однако из-за большого кол-ва форм (причем все разные, однотипных нет), делать подгрузку частями проблематично - слишком много переписывать. Возникла идея хранить справочники на клиенте. Т.е. как мне это видется: 1) Создается таблица в которой хранится дата модификации справочника 2) Клиент получает дату, формирует имя файла по шаблону [username]_[tablename]_[lastdate].tmp Проверяет наличие файла в каталоге temp (или ином указаном администратором) если файл есть то пробует загрузить его в memory table, если ошибка загрузки или файла нет, то получает от сервера набор данных в memory table и сохраняет в указаной папке. Если кто делал подобное подскажите ничего ли я не упустил или могут быть еще какие-нибудь грабли? ______________________________________________________________ "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код". I'm love design principle KISS - Keep It Simple, Stupid ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2010, 19:01 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Asm64DЧеловек писавший программу всюду грузит эти справочники каждый раз, что создает большую нагрузку на сеть и сервер. с чего ты взял, что серверу тяжело открыть форму со 5-10 справочниками? Перепутал с видео или фото? Если ты сервер - не суетись под клиентом (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2010, 21:05 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Petro123с чего ты взял, что серверу тяжело открыть форму со 5-10 справочниками? Перепутал с видео или фото? Если ты сервер - не суетись под клиентом (с) C того что сейчас программа потормаживает именно при показе справочников, при каждом вызове тянется порядка 10 мб, к тому же организация бюджетная сетевухи максимум на 100 мб/с, сервер вообще комп админа. И главное что улучшать что либо кроме программы они не будут. Моя задача перевести на D2009 и ускорить отображении форм, сейчас наблюдается задержка порядка 10 сек. ______________________________________________________________ "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код". I'm love design principle KISS - Keep It Simple, Stupid ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2010, 21:26 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Asm64DPetro123с чего ты взял, что серверу тяжело открыть форму со 5-10 справочниками? Перепутал с видео или фото? Если ты сервер - не суетись под клиентом (с) C того что сейчас программа потормаживает именно при показе справочников, при каждом вызове тянется порядка 10 мб, авторименно при показе справочников расшифруй ВИ - покажи лог запросов на 10 мегов SELECT звёздочка? - для читающих форм и режимов, справочники не нужны вообще (JOIN) - показывай их по требованию ЗЫ. Хранить на клиенте - наихудший путь ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2010, 22:21 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Petro123 - покажи лог запросов на 10 мегов SELECT звёздочка? Там хоть цевильно, поля перечисляются, но тянется на клиента: Код: plaintext 1. 2. 3. 4. 5. 6.
Petro123 - для читающих форм и режимов, справочники не нужны вообще (JOIN) Это я тоже хорошо знаю. Проблема в том что программы имеет назначение ввод данных. Вот и получается постоянное тягание справочника. Для отображения рузультатов у них кто-то веб морду на php написал. Petro123 - показывай их по требованию Это тоже я знаю, проблема даже не в том что слишком много исправлять (и легче переписать), а в том, что заказчик не хочет изменений интерфейса вообще, мотивирую тем что сотрудницы уже в возрасте (тети от 40), они мол привыкли к такому интерфейсу и дополнительные фильтры они не хотят, поиск по названию тоже не хотят им видителе легче прокручивать грид чтоб выбрать запись а не ввести начальные буквы . Я бы переписал с радостью, но у них нет желания, плюс и оплата смешная (взялся потому "попросили" из универа - я пока еще человек подневольный ). Petro123 ЗЫ. Хранить на клиенте - наихудший путь Согласен, но видите с учетом того что эти справочники не меняются (практически) пожалуй самый лучший способ. ______________________________________________________________ "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код". I'm love design principle KISS - Keep It Simple, Stupid ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2010, 23:41 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Asm64D, а зачем при открытии формы вытягивать все справочники целиком? неужели прямо в одной форме скроллятся 5 справочников? Но по любому - надо тянуть только строки, нужные для отображения. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2010, 00:06 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
vill_agerа зачем при открытии формы вытягивать все справочники целиком? Видимо автор был студент моего факультета которого тоже "попросили" vill_agerнеужели прямо в одной форме скроллятся 5 справочников? На самой тормазнутой 2 вкладки 3 грида с выбором на одной, 2 на другой. Сейчас как я уже писал загрузка идет в потоках, форма летает, но все равно каждый раз грузит с сервака. Хотя опять же надо смотреть как оно будет у них, сейчас то сервер и клиент на одной машине (у меня дома). Ехать туда буду в пятницу. vill_agerНо по любому - надо тянуть только строки, нужные для отображения. Для этого или вводит условия фильтрации или поиска, или менять грид на более навороченный, но все опять упирается в Asm64D а в том, что заказчик не хочет изменений интерфейса вообще, мотивирую тем что сотрудницы уже в возрасте (тети от 40), они мол привыкли к такому интерфейсу и дополнительные фильтры они не хотят, поиск по названию тоже не хотят им видителе легче прокручивать грид чтоб выбрать запись а не ввести начальные буквы ______________________________________________________________ "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код". I'm love design principle KISS - Keep It Simple, Stupid ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2010, 00:33 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Asm64D, если не менять интерфейс, то менять грид грид не должен тянуть все строки я такой делал руками (python+qt) примерно так читаем только ключевое поле - например в массив считаем строки делаем грид на нужное кол-во строк/столбцов все это достаточно быстро при отображении каждая клетка вызывает функцию с параметрами (строка, столбец) функция лезет на сервер и извлекает нужные данные все это называется MVC ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2010, 01:41 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Asm64D На самой тормазнутой 2 вкладки 3 грида с выбором на одной, 2 на другой. Сейчас как я уже писал загрузка идет в потоках, форма летает, но все равно каждый раз грузит с сервака. Хотя опять же надо смотреть как оно будет у них, сейчас то сервер и клиент на одной машине (у меня дома). Ехать туда буду в пятницу. не совсем понял что значит "в потоках" а если сделать так: создать класс-proxy, который будет предоставлять данные из справочника - класс открывает еще одно соединение к БД и открывает курсор для справочника клиент класса может запросить размер выборки для создания грида или combobox со справочными данными клиент класса может запросить любую строку справочника, например для отображения класс должен иметь синхронизацию от паралельного доступа дополнительно класс может перезапросить данные справочника если они изменились, оповестив своих клиентов клиентов для тестов дома можно поставить виртуальную машину (в нее поставить сервер) - будет скорость канала 100/10 мбит (или даже любое другое) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2010, 08:22 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Админил когда-то такую программу, у которой справочники кэшировались на клиенте. В принципе неплохо работало, особых неудобств не доставляло - ИМХО все зависит от реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2010, 10:28 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Можно хранить локально минисправочники, загружаемые в комбобоксы. Также хранить локально наборы иконок (синхронизируемых по необходимости). И шаблоны отчетов. Экономить же трафик в гриде путем добавления лукап-поля довольно глупо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2010, 11:32 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Asm64D, как вариант - грузить все/нужные справочники при старте или при первом требовании и держать их в memory table, и в формах их уже не придется тянуть с сервера каждый раз.. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2010, 20:36 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
mvbAsm64D, как вариант - грузить все/нужные справочники при старте или при первом требовании и держать их в memory table, и в формах их уже не придется тянуть с сервера каждый раз.. Возможно будет очень сильно отжирать оперативу, компы у них старье, не думаю что там оперативки больше 256 мб. Но как вариант тоже попробую. Завтра повезу тестить на месте, потом отпишусь. ______________________________________________________________ "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код". I'm love design principle KISS - Keep It Simple, Stupid Ах скоро диплом, и никто не будет мне приказывать что делать... по крайней мере из универа... Но кто читает подпись таким мелким шрифтом... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2010, 23:12 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Фиг бы с той оперативкой. Работать с табличками в памяти иногда просто неудобно: часто тебе нужны не просто данные конкретной таблички, а их комбинации (join's). Намучившись с табличками в памяти, в одном проекте я такие справочники стал просто хранить в локальной базе. Тупо создал такую же базу, как и на сервере, но таблички объявил как "глобальные временные", т.е. данные там хранятся от коннекта до коннекта (FireBird 2.5 embedded). При старте программы в базу один раз засасываются такие "константные" таблички, по завершении - данные автоматически сбрасываются. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2010, 23:40 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
NextManНамучившись с табличками в памяти, в одном проекте я такие справочники стал просто хранить в локальной базе. Тупо создал такую же базу, как и на сервере, но таблички объявил как "глобальные временные", т.е. данные там хранятся от коннекта до коннекта (FireBird 2.5 embedded). При старте программы в базу один раз засасываются такие "константные" таблички, по завершении - данные автоматически сбрасываются. Да, это более лучший вариант, чето я и не подумал об embedded. ______________________________________________________________ "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код". I'm love design principle KISS - Keep It Simple, Stupid Красиво продумано про embedded. Но кто читает подпись таким мелким шрифтом... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2010, 03:37 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Asm64D______________________________________________________________ Красиво продумано про embedded. Но кто читает подпись таким мелким шрифтом... Первый блин! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2010, 09:17 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
АнатоЛой, ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2010, 15:03 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Ну что ж, боевое тестирование состоялось. Моя схема (первый пост) показала себя великолепно, по крайней мере в течении этого дня Из удивительного могу только сказать что был поражен насколько быстро тети выбирают значения из этих справочников, инстинктивно (или по памяти) угадывая позицию скрола в справочнике, видимо сказываются годы работы с этой программой. Прогу сдал и слава богу. Спасибо всем кто поучаствовал в обсуждении. ______________________________________________________________ "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код". I'm love design principle KISS - Keep It Simple, Stupid Для голодающих - второй блин!!! Но кто читает подпись таким мелким шрифтом... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2010, 16:11 |
|
Хранение справочников на клиенте
|
|||
---|---|---|---|
#18+
Asm64DИз удивительного могу только сказать что был поражен насколько быстро тети выбирают значения из этих справочников, инстинктивно (или по памяти) угадывая позицию скрола в справочнике а если бы изначально им позволили цифровые коды набирать вместро скролла, то и проблем со скоростью загрузки не возникло бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2010, 22:49 |
|
|
start [/forum/topic.php?fid=33&fpage=33&tid=1548319]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 310ms |
total: | 476ms |
0 / 0 |