Страница 1 из 1

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

Добавлено: 14 Ноябрь 2022, 11:51
pansoft
Есть ли способ загрузить данные без цикла по файлу?

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

Добавлено: 14 Ноябрь 2022, 12:17
ingasoftplus
если DAT есть стандартный фал базы данных Клариона - то наврядли... да и не только с ДАТ - с любой таблицей.

но разве что с sql можно извратиться и грузануть целиком через XML...

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

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

А если серьёзно - то существуют RAM диски (программные и аппаратные), которые позволяют быстро
загружать для обработки большие объёмы данных в ископаемых форматах.

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

Добавлено: 14 Ноябрь 2022, 13:37
finsoftrz
Я генерю на уровне шаблонов слой подобных функций, используя пользовательские опции в словаре. В коде загрузка или выгрузка одним оператором. Например, FsCacheOpen:Tovar - все товары в глобальной очереди, FsPrimaryQ:Tovar(ID) - помещает в рекорд структуру данные из очереди.

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

Добавлено: 14 Ноябрь 2022, 13:44
Игорь Столяров
finsoftrz писал(а): 14 Ноябрь 2022, 13:37 все товары в глобальной очереди
Удобно. Но внутри метода ведь обычный построчный загруз ? И если нужно подобрать 500K записей без SQL или Btrieve, то ....
smile145.gif
smile145.gif (3.48 КБ) 4274 просмотра

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

Добавлено: 14 Ноябрь 2022, 14:05
finsoftrz
У меня tps, поэтому построчный. Только код не надо писать вручную, генерят шаблоны. Если btrieve, то у меня тоже построчный, хотя можно и напрямую через btrieve api, доступ к которому поддерживается в кларионе.
Для случая с большими таблицами есть вариант с динамическим кешированием. В примере, который я привёл, fscacheopen:Tovar, fscacheclose:Tovar загружают файл в кьюшку и очищают кьюшку, а fsprimaryq:tovar(ID) читает информацию о товаре из кьшки в record структуру. Если в начале этой цепочки не сказать fscacheopen:Tovar, то fsprimaryq:Tovar будет пытаться получить запись из кьюшки, а если не найдёт, то считает из файла, сохранит в кьюшке для последующих обращений, заполнит record структуру.

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

Добавлено: 14 Ноябрь 2022, 14:09
finsoftrz
К слову, btrieve на уровне СУБД умеет автоматически кешировать таблицы с сервера на клиента и поддерживать актуальность кеша. В этом случае чтение данных обычным способом происходит без обращения к серверу.

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

Добавлено: 15 Ноябрь 2022, 18:51
SergioRaguzini
pansoft писал(а): 14 Ноябрь 2022, 11:51 Есть ли способ загрузить данные без цикла по файлу?
А чем уж так плох циклический способ? Это же не наоборот когда из очереди в файл когда м.б. стоит думать о скорости....

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

Добавлено: 15 Ноябрь 2022, 19:18
Игорь Столяров
SergioRaguzini писал(а): 15 Ноябрь 2022, 18:51 А чем уж так плох циклический способ?
Загрузка Dump (бинарной области памяти) всегда будет быстрей, особенно на большом кол-ве записей.
Одно время у меня тоже была красивая идея выгрузки / загрузки Dump для файла In-Memory.
Но эта задача явно не для моего мозга ... :nono:

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

Добавлено: 16 Ноябрь 2022, 21:09
kreator
SergioRaguzini писал(а): 15 Ноябрь 2022, 18:51
pansoft писал(а): 14 Ноябрь 2022, 11:51 Есть ли способ загрузить данные без цикла по файлу?
А чем уж так плох циклический способ? Это же не наоборот когда из очереди в файл когда м.б. стоит думать о скорости....
Надо скорее спросить постующего - что в принципе надо получить? В чём идея? Может и проблем никаких нет. Если дело в скорости, то можно посмотреть в сторону аппаратных решений. Хотя бы попробовать SSD последнего поколения.

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

Добавлено: 18 Ноябрь 2022, 14:56
pansoft
Спасибо, всем за обсуждение.

Проблема в больших справочниках. На моем компе(с SSD) грузится за 20 секунд. На самом медленном компе клиента(c HDD) более 2 минут. После загрузки файлов в очереди, по очереди происходит поиск товаров.
Загрузка происходит в момент запуска программы и в течении дня справочники могут обновится.

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

Добавлено: 18 Ноябрь 2022, 15:09
Игорь Столяров
pansoft писал(а): 18 Ноябрь 2022, 14:56 На самом медленном компе клиента(c HDD) более 2 минут
Это какой же нужен объём RAM на компе, что бы туда 2 мин. заливать данные на целый день ? :shock:

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

Добавлено: 19 Ноябрь 2022, 14:34
kreator
Загрузка справочников при входе в программу - это из какого века? И зачем? И сети нет?

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

Добавлено: 21 Ноябрь 2022, 0:36
gopstop2007
а каков хоть объем(размер) данных?