Быстрая загрузка данных из файла(*.DAT) в QUEUE
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- ingasoftplus
 - Ветеран
 - Сообщения: 481
 - Зарегистрирован: 26 Декабрь 2006, 17:07
 - Откуда: Оттуда :)
 - Благодарил (а): 131 раз
 - Поблагодарили: 9 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
если DAT есть стандартный фал базы данных Клариона - то наврядли...  да и не только с ДАТ - с любой таблицей.
но разве что с sql можно извратиться и грузануть целиком через XML...
			
			
									
						но разве что с sql можно извратиться и грузануть целиком через XML...
- Игорь Столяров
 - Ветеран движения
 - Сообщения: 8269
 - Зарегистрирован: 07 Июль 2005, 10:19
 - Откуда: г. Ростов-на-ДоМу
 - Благодарил (а): 34 раза
 - Поблагодарили: 106 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Легко ! Загрузите файл целиком как бинарную последовательность в RAM и там распарстье в QUEUE.
Требуется знание структур DAT / QUEUE и непреодолимое желание найти свой путь ...
А если серьёзно - то существуют RAM диски (программные и аппаратные), которые позволяют быстро
загружать для обработки большие объёмы данных в ископаемых форматах.
За теми, кто отстал, не возвращаться ! 
 Кодекс
			
						- finsoftrz
 - ✯ Ветеран ✯
 - Сообщения: 5567
 - Зарегистрирован: 06 Ноябрь 2014, 12:48
 - Благодарил (а): 18 раз
 - Поблагодарили: 78 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Я генерю на уровне шаблонов слой подобных функций, используя пользовательские опции в словаре. В коде загрузка или выгрузка одним оператором. Например, FsCacheOpen:Tovar - все товары в глобальной очереди, FsPrimaryQ:Tovar(ID) - помещает в рекорд структуру данные из очереди.
			
			
									
						C6/C12, ШВС, tps/btrieve.
			
						- Игорь Столяров
 - Ветеран движения
 - Сообщения: 8269
 - Зарегистрирован: 07 Июль 2005, 10:19
 - Откуда: г. Ростов-на-ДоМу
 - Благодарил (а): 34 раза
 - Поблагодарили: 106 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Удобно. Но внутри метода ведь обычный построчный загруз ? И если нужно подобрать 500K записей без SQL или Btrieve, то ....
За теми, кто отстал, не возвращаться ! 
 Кодекс
			
						- finsoftrz
 - ✯ Ветеран ✯
 - Сообщения: 5567
 - Зарегистрирован: 06 Ноябрь 2014, 12:48
 - Благодарил (а): 18 раз
 - Поблагодарили: 78 раз
 
Быстрая загрузка данных из файла(*.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/C12, ШВС, tps/btrieve.
			
						- finsoftrz
 - ✯ Ветеран ✯
 - Сообщения: 5567
 - Зарегистрирован: 06 Ноябрь 2014, 12:48
 - Благодарил (а): 18 раз
 - Поблагодарили: 78 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
К слову, btrieve на уровне СУБД умеет автоматически кешировать таблицы с сервера на клиента и поддерживать актуальность кеша. В этом случае чтение данных обычным способом происходит без обращения к серверу.
			
			
									
						C6/C12, ШВС, tps/btrieve.
			
						- SergioRaguzini
 - Старожил
 - Сообщения: 261
 - Зарегистрирован: 08 Декабрь 2009, 19:16
 - Откуда: Краснодарский край
 - Благодарил (а): 21 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
А чем уж так плох циклический способ? Это же не наоборот когда из очереди в файл когда м.б. стоит думать о скорости....
- Игорь Столяров
 - Ветеран движения
 - Сообщения: 8269
 - Зарегистрирован: 07 Июль 2005, 10:19
 - Откуда: г. Ростов-на-ДоМу
 - Благодарил (а): 34 раза
 - Поблагодарили: 106 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Загрузка Dump (бинарной области памяти) всегда будет быстрей, особенно на большом кол-ве записей.
Одно время у меня тоже была красивая идея выгрузки / загрузки Dump для файла In-Memory.
Но эта задача явно не для моего мозга ...
За теми, кто отстал, не возвращаться ! 
 Кодекс
			
						- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Быстрая загрузка данных из файла(*.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 минут. После загрузки файлов в очереди, по очереди происходит поиск товаров.
Загрузка происходит в момент запуска программы и в течении дня справочники могут обновится.
- Игорь Столяров
 - Ветеран движения
 - Сообщения: 8269
 - Зарегистрирован: 07 Июль 2005, 10:19
 - Откуда: г. Ростов-на-ДоМу
 - Благодарил (а): 34 раза
 - Поблагодарили: 106 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Это какой же нужен объём RAM на компе, что бы туда 2 мин. заливать данные на целый день ?
За теми, кто отстал, не возвращаться ! 
 Кодекс
			
						- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
Загрузка справочников при входе в программу - это из какого века? И зачем? И сети нет?
			
			
									
						We are hard at work… for you.   
			
						- 
				gopstop2007
 - Полимат
 - Сообщения: 1841
 - Зарегистрирован: 25 Март 2009, 21:55
 - Благодарил (а): 30 раз
 - Поблагодарили: 10 раз
 
Быстрая загрузка данных из файла(*.DAT) в QUEUE
а каков хоть объем(размер) данных?
			
			
									
						“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
			
						