Мялин в свое время в Mav долго не хотел реализовывать постраничный броуз. Писал, что пересмотрел кучу всяких приложений (не на кларион), никто так не делает. Потом все таки реализовал.
Clarion на Хабре
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4391
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 26 раз
Clarion на Хабре
Мялин в свое время в Mav долго не хотел реализовывать постраничный броуз. Писал, что пересмотрел кучу всяких приложений (не на кларион), никто так не делает. Потом все таки реализовал.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4391
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 26 раз
Clarion на Хабре
У первасива в плане sql была проблема, что он поддерживает две схемы работы, по записям (транзакционную или isam) и выборкам (реляционную или sql). Видимо, не получалось так же эффективно создавать динамические индексы и кешировать запросы.
В этом плане были как раз подвижки в последних версиях actian zen (первасив после ребрендинга). Сделали возможность работать по записям в первичной базе данных, а строить всякие отчёты только через sql запросы во вторичной базе. Базы эти автоматически синхронизируются. Вот это решение было бы интересно сравнить по скорости с другими sql серверами. В actian zen греет то, что размер таблицы расширен до 64 терабайт. Через обычный интерфейс isam к таким объёмам доступа нет, используются дополнительные команды. Но типа с точки зрения обратной совместимости решений можно для всех таблиц использовать обычный доступ, а только для огромных отдельные команды.
Я, кстати, делал класс для прямой работы с actian zen из клариона (без драйвера), позволяющий задействовать расширенные команды чтения, поддерживающие пакетное чтение (заданное количество записей за раз), чтение только заданных полей, а не записей целиком), фильтрацию записей на стороне сервера. Это в isam все. По тестам, на больших объёмах баз можно получить прирост до 10 раз по сравнению с работой через драйвер. На практике пока не пригодилось.
В этом плане были как раз подвижки в последних версиях actian zen (первасив после ребрендинга). Сделали возможность работать по записям в первичной базе данных, а строить всякие отчёты только через sql запросы во вторичной базе. Базы эти автоматически синхронизируются. Вот это решение было бы интересно сравнить по скорости с другими sql серверами. В actian zen греет то, что размер таблицы расширен до 64 терабайт. Через обычный интерфейс isam к таким объёмам доступа нет, используются дополнительные команды. Но типа с точки зрения обратной совместимости решений можно для всех таблиц использовать обычный доступ, а только для огромных отдельные команды.
Я, кстати, делал класс для прямой работы с actian zen из клариона (без драйвера), позволяющий задействовать расширенные команды чтения, поддерживающие пакетное чтение (заданное количество записей за раз), чтение только заданных полей, а не записей целиком), фильтрацию записей на стороне сервера. Это в isam все. По тестам, на больших объёмах баз можно получить прирост до 10 раз по сравнению с работой через драйвер. На практике пока не пригодилось.
C6/C11, ШВС, tps/btrieve.
Clarion на Хабре
Честно говоря если использовать SQL в связке с шаблоном UltimateSQL, где есть генератор очередей для результатов запросов а также не надо описывать все получаемые в запросе поля. Получается вполне эффективно. Ниже пример:
Вот очередь:
А вот запрос:
сформированный запрос сразу попадает в дебагер в конечном виде, тут же сразу ставим ловушку очереди:
Также шаблон позволяет вернуть единичное значение или просто выполнить запрос и вернуть код ошибки если она возникла Например count, сколько надо строчек на кларе чтобы написать подобную конструкцию:
Лично мне sql упрощает выборки из связанных таблиц, использование join и union и прочих прикладных функций, особенно с учетом что у меня в бд нет ни одной связи.
Также мне удобнее и сподручнее отлаживать SQL запрос с учетом что есть еще удобный дебагер UltimateDebug который сразу показывает очередь, вернувшуюся из запроса и позволяет в рантайме выкидывать различные сообщения на экран без использования message.
По совокупности факторов могу сказать что SQL вполне хорошо заходит в паре с UltimateSQL и UltimateDebug
Вот очередь:
Код: Выделить всё
qtovar queue,pre(qtovar)
K_TOVAR LIKE(tov:K_TOVAR),NAME('K_TOVAR')
N_TOVAR LIKE(tov:N_TOVAR),NAME('N_TOVAR')
Description LIKE(tov:Description),NAME('Description')
Artikul LIKE(tov:Artikul),NAME('Artikul')
K_GRUPPA LIKE(tov:K_GRUPPA),NAME('K_GRUPPA')
K_COUNTRY LIKE(tov:K_COUNTRY),NAME('K_COUNTRY')
END
Код: Выделить всё
sql.Query('*select k_tovar, n_tovar, description, artikul, k_gruppa, k_country from tovar where k_tovar in (' & local_k_tovar & ')', qtovar)
Код: Выделить всё
dbg.DebugQueue(qtovar)
Код: Выделить всё
sql.query(*select count(id) from tovar where k_tovar in (' & local_k_tovar & ')', tovar_count)
Также мне удобнее и сподручнее отлаживать SQL запрос с учетом что есть еще удобный дебагер UltimateDebug который сразу показывает очередь, вернувшуюся из запроса и позволяет в рантайме выкидывать различные сообщения на экран без использования message.
По совокупности факторов могу сказать что SQL вполне хорошо заходит в паре с UltimateSQL и UltimateDebug
-
- ✯ Ветеран ✯
- Сообщения: 1695
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 6 раз
- Поблагодарили: 2 раза
Clarion на Хабре
Все это есть в - LoadQueueFromSQL viewtopic.php?p=27798#p27798 и не нужен шаблон.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп