Быстрая загрузка данных из файла(*.DAT) в QUEUE

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
pansoft
Бывалый
Сообщения: 76
Зарегистрирован: 08 Август 2011, 11:37

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение pansoft »

Есть ли способ загрузить данные без цикла по файлу?
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 87 раз
Поблагодарили: 5 раз

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение ingasoftplus »

если DAT есть стандартный фал базы данных Клариона - то наврядли... да и не только с ДАТ - с любой таблицей.

но разве что с sql можно извратиться и грузануть целиком через XML...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение Игорь Столяров »

pansoft писал(а): 14 Ноябрь 2022, 11:51 Есть ли способ загрузить данные без цикла по файлу?
Легко ! Загрузите файл целиком как бинарную последовательность в RAM и там распарстье в QUEUE.
Требуется знание структур DAT / QUEUE и непреодолимое желание найти свой путь ... :D

А если серьёзно - то существуют RAM диски (программные и аппаратные), которые позволяют быстро
загружать для обработки большие объёмы данных в ископаемых форматах.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение finsoftrz »

Я генерю на уровне шаблонов слой подобных функций, используя пользовательские опции в словаре. В коде загрузка или выгрузка одним оператором. Например, FsCacheOpen:Tovar - все товары в глобальной очереди, FsPrimaryQ:Tovar(ID) - помещает в рекорд структуру данные из очереди.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение Игорь Столяров »

finsoftrz писал(а): 14 Ноябрь 2022, 13:37 все товары в глобальной очереди
Удобно. Но внутри метода ведь обычный построчный загруз ? И если нужно подобрать 500K записей без SQL или Btrieve, то ....
smile145.gif
smile145.gif (3.48 КБ) 1526 просмотров
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение finsoftrz »

У меня tps, поэтому построчный. Только код не надо писать вручную, генерят шаблоны. Если btrieve, то у меня тоже построчный, хотя можно и напрямую через btrieve api, доступ к которому поддерживается в кларионе.
Для случая с большими таблицами есть вариант с динамическим кешированием. В примере, который я привёл, fscacheopen:Tovar, fscacheclose:Tovar загружают файл в кьюшку и очищают кьюшку, а fsprimaryq:tovar(ID) читает информацию о товаре из кьшки в record структуру. Если в начале этой цепочки не сказать fscacheopen:Tovar, то fsprimaryq:Tovar будет пытаться получить запись из кьюшки, а если не найдёт, то считает из файла, сохранит в кьюшке для последующих обращений, заполнит record структуру.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение finsoftrz »

К слову, btrieve на уровне СУБД умеет автоматически кешировать таблицы с сервера на клиента и поддерживать актуальность кеша. В этом случае чтение данных обычным способом происходит без обращения к серверу.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 235
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение SergioRaguzini »

pansoft писал(а): 14 Ноябрь 2022, 11:51 Есть ли способ загрузить данные без цикла по файлу?
А чем уж так плох циклический способ? Это же не наоборот когда из очереди в файл когда м.б. стоит думать о скорости....
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 15 Ноябрь 2022, 18:51 А чем уж так плох циклический способ?
Загрузка Dump (бинарной области памяти) всегда будет быстрей, особенно на большом кол-ве записей.
Одно время у меня тоже была красивая идея выгрузки / загрузки Dump для файла In-Memory.
Но эта задача явно не для моего мозга ... :nono:
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение kreator »

SergioRaguzini писал(а): 15 Ноябрь 2022, 18:51
pansoft писал(а): 14 Ноябрь 2022, 11:51 Есть ли способ загрузить данные без цикла по файлу?
А чем уж так плох циклический способ? Это же не наоборот когда из очереди в файл когда м.б. стоит думать о скорости....
Надо скорее спросить постующего - что в принципе надо получить? В чём идея? Может и проблем никаких нет. Если дело в скорости, то можно посмотреть в сторону аппаратных решений. Хотя бы попробовать SSD последнего поколения.
We are hard at work… for you. :)
pansoft
Бывалый
Сообщения: 76
Зарегистрирован: 08 Август 2011, 11:37

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение pansoft »

Спасибо, всем за обсуждение.

Проблема в больших справочниках. На моем компе(с SSD) грузится за 20 секунд. На самом медленном компе клиента(c HDD) более 2 минут. После загрузки файлов в очереди, по очереди происходит поиск товаров.
Загрузка происходит в момент запуска программы и в течении дня справочники могут обновится.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение Игорь Столяров »

pansoft писал(а): 18 Ноябрь 2022, 14:56 На самом медленном компе клиента(c HDD) более 2 минут
Это какой же нужен объём RAM на компе, что бы туда 2 мин. заливать данные на целый день ? :shock:
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение kreator »

Загрузка справочников при входе в программу - это из какого века? И зачем? И сети нет?
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Быстрая загрузка данных из файла(*.DAT) в QUEUE

Сообщение gopstop2007 »

а каков хоть объем(размер) данных?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить