Btrieve и clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Btrieve и clarion
Дать пример скрипта на создание DDF P.SQL для таблицы ?
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Btrieve и clarion
Про алгоритм рассказывать долго и не нужно это. Считайте, что обычный set по ключу, в котором первое поле дата (long) и оно в заданном диапазоне. Типа такого:
clear(pre:record,-1)
pre:date=dateBeg
set(keyDate,keyDate)
loop
next(file)
if error() or pre:date>dateEbd
break
.
....
.
Вот эта конструкция работает медленно, пока записи после первого прохода не попадут в кэш. Затем быстро. Таблица в районе 8 млн записей, но мы их не все смотрим. Еще в цикле разные get на другие таблицы по первичному ключу, но это мелочь. Вся работа локальная.
clear(pre:record,-1)
pre:date=dateBeg
set(keyDate,keyDate)
loop
next(file)
if error() or pre:date>dateEbd
break
.
....
.
Вот эта конструкция работает медленно, пока записи после первого прохода не попадут в кэш. Затем быстро. Таблица в районе 8 млн записей, но мы их не все смотрим. Еще в цикле разные get на другие таблицы по первичному ключу, но это мелочь. Вся работа локальная.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Btrieve и clarion
Не знаю, насколько критично, на том же компе в боевом режиме крутится та же база на tps с реальными пользователями. Висят 12 пользователей в терминальных сессиях и периодически могут еще кто-то коннектиться через ip драйвер. Но и на своем компе ощутимую разницу с скоростях я тоже вижу.
Для tps тоже такой эффект присутствует. Но в меньшей степени.
Для tps тоже такой эффект присутствует. Но в меньшей степени.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Btrieve и clarion
Тоже это подозревал, но всё-таки решил спросить …
При выборке по ключу, скорость зависит ещё и от размера самого ключа. Если там несколько полей, среди которых STRING и REAL -
то всё это может заметно тупить, пока ключ не будет загружен в кеш. Также есть смысл прогнать большую БД через REBULD, не зря
ведь в современных версиях добавили фоновую дефрагментацию БД ...
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Btrieve и clarion
Не совсем верно сказал … REBULD перестроит и оптимизирует только ключи.
Для дефрагментации самого списка, нужно перезагрузить его через текст при помощи утилиты BUTIL.
Для дефрагментации самого списка, нужно перезагрузить его через текст при помощи утилиты BUTIL.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Btrieve и clarion
Нет, в ключах только два long. При обычном чтении set/next тоже заметно. Прерываем процесс. Запускаем заново. До того момента, где прервали бежит быстро, затем опять медленно.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Btrieve и clarion
Попробуйте:
- открыть список только на чтение и как вариант, ещё с монопольным доступом.
- Открыть файл под транзакцией Logout(), т.к. Btrieve не поддерживает LOCK().
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Btrieve и clarion
Я думаю, что разница на порядок связана все таки с тем, что тест проводился на боевом "сервере". По монитору ресурсов, у него вся оперативная память была забита (8ГБ). Кроме учетной системы и терминальных сессий еще запускали openOffice.
Подрихтовал немного процедуру прогрева кэша. На моем компьютере разница до прогрева и после, конечно, заметна, но уже не на порядок. Если еще чего найду, напишу.
Подрихтовал немного процедуру прогрева кэша. На моем компьютере разница до прогрева и после, конечно, заметна, но уже не на порядок. Если еще чего найду, напишу.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Btrieve и clarion
Ну во-первых, давайте не мешать в кучу "коробочное решение" и "демо-версию". К коробочному решению прилагается пошаговая инструкция в картинках со всеми нужными ссылками. Если ставить по этой инструкции, то в 95% случаев все работает "из коробки" и не надо ничего настраивать. Просто у вас нет такой инструкции с картинками )) А демо-версию вполне можно собирать на tps, не обязательно полнофункциональную - то, что работает на стороне сервера, мы просто в неё не включаем, это будут "ограничения демо-версии"Игорь Столяров писал(а): ↑28 Январь 2019, 18:11Как ему её посмотреть хотя бы ? Как установить SQL или настроить ODBC источники - Вы ему никогда не сможете объяснить.
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Btrieve и clarion
Народ, прекратите! Всех неофитов тут распугаете. Для перехода на SQL нужно только драйвер в словаре сменить. Классы и шаблоны работают с SQL хорошо. Нужно только политику загрузки броуза сменить с Page на File. Очень рекомендуется. Далее можно двигаться в направлении всяких расчётов, отчётов. Менять парадигму set/get на select, хотя и так работает. Многие переходили, и я в том числе. Проблем особых не было, а скорость и все остальные плюхи на лицо.Игорь Столяров писал(а): ↑28 Январь 2019, 13:46Переход на SQL всё-таки требует переделки всего приложения,
чего избалованные шаблонами программисты Clarion - не любят.
We are hard at work… for you.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Btrieve и clarion
Ни к чему, просто нужно сделать все ключи, по которым строится броуз, уникальными, а постраничную загрузку отключать не надо
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Btrieve и clarion
+ поля, которых нет в броусе, но используются в процедуре, надо обязательно указывать в HotFields
WBR, morkovin
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Btrieve и clarion
Где-то здесь уже можно подводить промежуточный итог дебатов … Если нет возражений - то я это сделаю.
1. Просто перевести приложение на SQL заменой словаря в общем случае нельзя, нужно вносить изменения в структуру БД
и само приложение. Для Btrieve - можно, в частном случае, можно даже заменить драйвер TPS на Btrieve программно.
2. Просто установить приложение SQL приложение на компьютер нельзя, но можно выполнить некую инструкцию с картинками.
При этом мы должны рассчитывать, на то, что у пользователя есть желание, квалификация и административные права для
её выполнения. Для Btrieve - можно, в частном случае, не требуется отдельно содержать приложение с TPS для "посмотреть".
3. Локальное приложение с SQL будет работать медленнее, чем аналогичное с TPS. А приложение с Btrieve - быстрее, чем с TPS.
При этом, безусловно, у SQL - масса преимуществ, которых нет в ISAM драйверах БД. Это понятно и бесспорно.
Но если говорить, о том, что бы быстро "улучшить" работу существующего приложения с TPS - то драйвер Btrieve безальтернативен.
Как-то оно так получается …
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Btrieve и clarion
Я бы еще добавил то, что у isam тоже есть масса преимуществ, которых нет в sql. Это тоже понятно и бесспорно. Просто две разные технологии, два разных мира. Надо работать в соответствии с выбранной архитектурой и все будет хорошо. Выбор зависит от личных предпочтений, особенностей мышления разработчика, имеющихся наработок и опыта. По какой схеме осуществляется доступ к данным здесь вторично.Игорь Столяров писал(а): ↑29 Январь 2019, 8:18 При этом, безусловно, у SQL - масса преимуществ, которых нет в ISAM драйверах БД. Это понятно и бесспорно.
C6/C11, ШВС, tps/btrieve.