Быстрая загрузка данных из файла(*.DAT) в QUEUE
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- ingasoftplus
- Ветеран
- Сообщения: 429
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 91 раз
- Поблагодарили: 5 раз
Быстрая загрузка данных из файла(*.DAT) в QUEUE
если DAT есть стандартный фал базы данных Клариона - то наврядли... да и не только с ДАТ - с любой таблицей.
но разве что с sql можно извратиться и грузануть целиком через XML...
но разве что с sql можно извратиться и грузануть целиком через XML...
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Легко ! Загрузите файл целиком как бинарную последовательность в RAM и там распарстье в QUEUE.
Требуется знание структур DAT / QUEUE и непреодолимое желание найти свой путь ...
А если серьёзно - то существуют RAM диски (программные и аппаратные), которые позволяют быстро
загружать для обработки большие объёмы данных в ископаемых форматах.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4688
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 37 раз
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Я генерю на уровне шаблонов слой подобных функций, используя пользовательские опции в словаре. В коде загрузка или выгрузка одним оператором. Например, FsCacheOpen:Tovar - все товары в глобальной очереди, FsPrimaryQ:Tovar(ID) - помещает в рекорд структуру данные из очереди.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Удобно. Но внутри метода ведь обычный построчный загруз ? И если нужно подобрать 500K записей без SQL или Btrieve, то ....
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4688
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 37 раз
Быстрая загрузка данных из файла(*.DAT) в QUEUE
У меня tps, поэтому построчный. Только код не надо писать вручную, генерят шаблоны. Если btrieve, то у меня тоже построчный, хотя можно и напрямую через btrieve api, доступ к которому поддерживается в кларионе.
Для случая с большими таблицами есть вариант с динамическим кешированием. В примере, который я привёл, fscacheopen:Tovar, fscacheclose:Tovar загружают файл в кьюшку и очищают кьюшку, а fsprimaryq:tovar(ID) читает информацию о товаре из кьшки в record структуру. Если в начале этой цепочки не сказать fscacheopen:Tovar, то fsprimaryq:Tovar будет пытаться получить запись из кьюшки, а если не найдёт, то считает из файла, сохранит в кьюшке для последующих обращений, заполнит record структуру.
Для случая с большими таблицами есть вариант с динамическим кешированием. В примере, который я привёл, fscacheopen:Tovar, fscacheclose:Tovar загружают файл в кьюшку и очищают кьюшку, а fsprimaryq:tovar(ID) читает информацию о товаре из кьшки в record структуру. Если в начале этой цепочки не сказать fscacheopen:Tovar, то fsprimaryq:Tovar будет пытаться получить запись из кьюшки, а если не найдёт, то считает из файла, сохранит в кьюшке для последующих обращений, заполнит record структуру.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4688
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 37 раз
Быстрая загрузка данных из файла(*.DAT) в QUEUE
К слову, btrieve на уровне СУБД умеет автоматически кешировать таблицы с сервера на клиента и поддерживать актуальность кеша. В этом случае чтение данных обычным способом происходит без обращения к серверу.
C6/C11, ШВС, tps/btrieve.
- SergioRaguzini
- Старожил
- Сообщения: 236
- Зарегистрирован: 08 Декабрь 2009, 19:16
- Откуда: Краснодарский край
- Благодарил (а): 6 раз
Быстрая загрузка данных из файла(*.DAT) в QUEUE
А чем уж так плох циклический способ? Это же не наоборот когда из очереди в файл когда м.б. стоит думать о скорости....
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Загрузка Dump (бинарной области памяти) всегда будет быстрей, особенно на большом кол-ве записей.
Одно время у меня тоже была красивая идея выгрузки / загрузки Dump для файла In-Memory.
Но эта задача явно не для моего мозга ...
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Надо скорее спросить постующего - что в принципе надо получить? В чём идея? Может и проблем никаких нет. Если дело в скорости, то можно посмотреть в сторону аппаратных решений. Хотя бы попробовать SSD последнего поколения.SergioRaguzini писал(а): ↑15 Ноябрь 2022, 18:51А чем уж так плох циклический способ? Это же не наоборот когда из очереди в файл когда м.б. стоит думать о скорости....
We are hard at work… for you.
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Спасибо, всем за обсуждение.
Проблема в больших справочниках. На моем компе(с SSD) грузится за 20 секунд. На самом медленном компе клиента(c HDD) более 2 минут. После загрузки файлов в очереди, по очереди происходит поиск товаров.
Загрузка происходит в момент запуска программы и в течении дня справочники могут обновится.
Проблема в больших справочниках. На моем компе(с SSD) грузится за 20 секунд. На самом медленном компе клиента(c HDD) более 2 минут. После загрузки файлов в очереди, по очереди происходит поиск товаров.
Загрузка происходит в момент запуска программы и в течении дня справочники могут обновится.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Это какой же нужен объём RAM на компе, что бы туда 2 мин. заливать данные на целый день ?
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Загрузка справочников при входе в программу - это из какого века? И зачем? И сети нет?
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 1707
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Быстрая загрузка данных из файла(*.DAT) в QUEUE
а каков хоть объем(размер) данных?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп