DFD, CacheTPSABC - не понял
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
DFD, CacheTPSABC - не понял
Начал знакомиться с DFD. Смотрю пример CacheTPSABC. "By
designating a TopSpeed file as the global file to load on startup, the template implicitly creates an In-
Memory dynamic table that does not have to be defined in the data dictionary."
Ух ты, как раз мне подобное нужно. Проверяю сей пример и.... не вижу никакого кэширования.
Добавляю запись в якобы кэшированном через InMemory "department" - тут же вижу в department.tps ее.
Написал кусочек кода добавления нескольких сотен записей - вижу тормоза, явно никакого InMemory нет.
Как то не так понимаю ?
designating a TopSpeed file as the global file to load on startup, the template implicitly creates an In-
Memory dynamic table that does not have to be defined in the data dictionary."
Ух ты, как раз мне подобное нужно. Проверяю сей пример и.... не вижу никакого кэширования.
Добавляю запись в якобы кэшированном через InMemory "department" - тут же вижу в department.tps ее.
Написал кусочек кода добавления нескольких сотен записей - вижу тормоза, явно никакого InMemory нет.
Как то не так понимаю ?
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
DFD, CacheTPSABC - не понял
Не касаемо DFD, IMDD. Кэширование и In-Memory актуально на операциях чтения. Как в приведённом Вами фрагменте справки - в начале работы программы данные затаскиваются в память и чтение идёт уже из памяти. А если Вы пишете, то всё равно дисковая система тормозит. Я думаю, SV революцию сотворить не судьба. Ещё пример. Режим "In-Memory" в SQL подразумевает отсутствие операций записи на диск (в том или ином виде).
We are hard at work… for you.
DFD, CacheTPSABC - не понял
Для SQL может и так. Но просто InMemory в словаре дает же записывать в память, при последующем сохранении при выходе из программы или вызова метода сохранения файла.... ?kreator писал(а): ↑21 Май 2019, 11:10 Не касаемо DFD, IMDD. Кэширование и In-Memory актуально на операциях чтения. Как в приведённом Вами фрагменте справки - в начале работы программы данные затаскиваются в память и чтение идёт уже из памяти. А если Вы пишете, то всё равно дисковая система тормозит. Я думаю, SV революцию сотворить не судьба. Ещё пример. Режим "In-Memory" в SQL подразумевает отсутствие операций записи на диск (в том или ином виде).
Все же сомневаюсь, что на чтение то даже это работает (я про пример этот) как проверить ? Попробовал после открытия "кэшированной" таблицы изменить запись в файле через TopScan, после вызова ViewRecords даже для другой записи ! вижу тут же измененную запись.
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
DFD, CacheTPSABC - не понял
Может и имеет смысл при однопользовательской работе. Или при каких-то специфических сценариях. А в реальной работе зачем хранить изменения в оперативной памяти локального компа?
Судя по описанию DFD, кэширование возможно с использованием IMDD. Во-всяком случае, я так понял. Динамически создаёте таблицу с типом "In-Memory", переливаете туда данные из tps, и работаете быстро. А как ещё?
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
DFD, CacheTPSABC - не понял
Ну, например, сценарий отложенной записи. Предположим навернули, что при закрытии накладной - нужно обновить
десятки (или сотни) записей содержания. Что бы карточка закрывалась быстро - пишем все изменения в файл IMDD.
И потом раз в N (лучше даже K) секунд или при закрытии программы запускается поток, который молча пишет из IMDD в TPS.
Работает шустро и обман практически не заметен.
За теми кто отстал - не возвращаться. (С) Кодекс
DFD, CacheTPSABC - не понял
Это то так, вот первый их пример (CACHE )kreator писал(а): ↑21 Май 2019, 14:24Может и имеет смысл при однопользовательской работе. Или при каких-то специфических сценариях. А в реальной работе зачем хранить изменения в оперативной памяти локального компа?
Судя по описанию DFD, кэширование возможно с использованием IMDD. Во-всяком случае, я так понял. Динамически создаёте таблицу с типом "In-Memory", переливаете туда данные из tps, и работаете быстро. А как ещё?
А вот этот пример, который меня заинтересовалThis core application demonstrates loading a TopSpeed table, which not defined in the dictionary, into an In-Memory table defined in the dictionary, using the DynFile class methods via the template support.
CacheTPSABC
This application demonstrates an alternate template configuration from the core CACHE application. By
designating a TopSpeed file as the global file to load on startup, the template implicitly creates an InMemory dynamic table that does not have to be defined in the data dictionary. The core example had an
In-Memory table defined in the dictionary, but referred to the TopSpeed table as an external source.
Both applications perform the same function, but we are showing the flexibility of dynamic file
configuration.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
DFD, CacheTPSABC - не понял
IMDD можно использовать для буферизации изменений. Например, в накладной вносим разные изменения в строках, делая это все в IMDD, потом жмем кнопку Сохранить и сохраняем все изменения сразу. Как это в 1с делают. Это уже обсуждали, такой подход имеет свои плюсы и минусы. Основной плюс - упрощение логики работы программы.Игорь Столяров писал(а): ↑21 Май 2019, 14:42Ну, например, сценарий отложенной записи. Предположим навернули, что при закрытии накладной - нужно обновить
десятки (или сотни) записей содержания. Что бы карточка закрывалась быстро - пишем все изменения в файл IMDD.
И потом раз в N (лучше даже K) секунд или при закрытии программы запускается поток, который молча пишет из IMDD в TPS.
Работает шустро и обман практически не заметен.
С точки зрения кэширования данных правильно в actian zen сделано (будем привыкать так называть этот продукт...). Наша программа ничего о кэшировании не знает, все делает автоматически движок. Точнее, программа может этим дополнительно управлять, указывая, какие таблицы кэшировать. Так, если не ошибаюсь, это все выглядит. Попытка задействовать дополнительные декларации IMDD в самом приложении больше похоже на костыль. Как-то это кисло с точки зрения архитектуры системы...
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
DFD, CacheTPSABC - не понял
Наверно, несколько непонятно про actian zen написал. Это когда сервер на выделенном компьютере. Таблицы могут автоматически кэшироваться на клиентском компьютере, где работает наше приложение. И автоматически синхронизироваться с сервером по мере внесения в них изменений.
C6/C11, ШВС, tps/btrieve.
DFD, CacheTPSABC - не понял
Даже если не сотни.... правильно ли я понимаю, что в Clarion нет до сих пор обработки отказа от сохранения стандартного док-та с шапкой и табличным полем ?
Добавляем материнскую запись запись через FORM и в этой же форме сразу начинаем вводить табличную часть (дочерние записи). А потом передумали сохранять - но дочерние то записи уже остались в базе "сиротами" ? А вот если делаем добавление дочерних записей через InMemory, то следов не останется.... Или подчистку можно через Relation сделать ? Что то кажется не работает через Relation...
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
DFD, CacheTPSABC - не понял
Пардон - но здесь просто нужно корректно описать в словаре связь между родительским и дочерним списком, и при отказе
добавления шапки накладной - код шаблонов автоматически удалит и добавленные строки содержания. Без проблем.
Есть немного более интересная задача. Когда нужно при отказе от сохранения изменений в накладной - отменить все изменения
в содержании (в т.ч. и добавления / удаления строк содержания). Вот здесь уже хорошо использовать IMDD, хотя можно и проще
через объявление очереди с LIKE …
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
DFD, CacheTPSABC - не понял
Ну так ведь не от тучного изобилия прикручиваются костыли к TPS …
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
DFD, CacheTPSABC - не понял
Это не для tps, а для sql прежде всего предлагается... И не только в кларионе.Игорь Столяров писал(а): ↑21 Май 2019, 15:32Ну так ведь не от тучного изобилия прикручиваются костыли к TPS …
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
DFD, CacheTPSABC - не понял
Ага, через очередь. Есть еще более интересная задача, когда при изменении реквизита шапки накладной надо сделать изменения во все строки. У меня это называется "критические реквизиты документа", их шаблоны автоматически отрабатывают. На самом деле с накладной вопрос довольно сложный. Если делать через IMDD, то все упрощается, но теряется итерактивность - другие пользователи не видят вносимых изменений, пока не будет сохранена вся накладная. А сохранение может происходить в других условиях по сравнением со временем внесения изменения в строки.Игорь Столяров писал(а): ↑21 Май 2019, 15:29 Есть немного более интересная задача. Когда нужно при отказе от сохранения изменений в накладной - отменить все изменения
в содержании (в т.ч. и добавления / удаления строк содержания). Вот здесь уже хорошо использовать IMDD, хотя можно и проще
через объявление очереди с LIKE …
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
DFD, CacheTPSABC - не понял
Т.е. тупо прокрутить, присвоить и сохранить. Как раз задача для отложенной записи.
А то, что эти изменения попадут на диск с запозданием в несколько секунд - не проблема.
Если конечно речь идёт не о запуске ракеты с Байконура …
За теми кто отстал - не возвращаться. (С) Кодекс