Clarion на Хабре

Ресурсы в Интернет, посвященные CLARION
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4553
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion на Хабре

Сообщение finsoftrz »

kreator писал(а): 14 Июнь 2021, 22:36 Да никто не понимает! Словарь и так уже обвязан как надо. А чтобы сделать отчёт какой-нибудь, хотя бы одну табличку с 8-10 полями по 5-6 таблицам Вы напишете 1000+ строк текста. В запросе SQL это займёт раз в десять меньше. И работать будет раз в сто быстрее. О чём и написал beneton.
Мне кажется, Вы один уникальный. :-) Кидаете какие-то фразы, ничем их не подтверждая.
Я с ходу даже не помню подобных задач, где надо выбрать и отобразить 8-10 полей из 5-6 таблиц. Обычно бизнес-логика имеет слои. В словаре можно не только таблицы описывать, но и кьюшки. Базовые бизнес функции выбирают данные из физических таблиц и аккумулируют их в кьюшках. То есть надо, например, данные по фифо подтянуть, на верхнем уровне (при построении отчёта) будет вызов функции расчёта более низкого уровня одной строкой. Ну, может ещё добавиться передача расширенного списка параметров. А написать функцию расчёта по фифо, ну, попробуйте на sql, расскажете о впечатлениях. Что такое фифо, представление имеете?

Вообще, затевать в очередной раз обсуждение isam vs sql в кларионе желания нет. Если кратко, то мантра, что sql более компактный, в целом действительности не соответствует. А мантра, что он безусловно быстрее работает, вызывает сомнения, это зависит от задач и подходов при проектировании.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Clarion на Хабре

Сообщение RaFaeL »

finsoftrz писал(а): 15 Июнь 2021, 0:02 Я с ходу даже не помню подобных задач, где надо выбрать и отобразить 8-10 полей из 5-6 таблиц
В нашей CRM есть блок выборок по справочникам. Пользователи любят выводить, например, контрагентов с десятками (20-30-50) полей по десяткам же таблиц (всего думаю около сотни таблиц подвязано). Запрос в SQL при этом формируется по сути один, динамически. Вариант по ключам тоже есть, работает примерно на порядок медленнее и там здоровая и тупая простыня текста с кейсами
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4553
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion на Хабре

Сообщение finsoftrz »

Я уже озвучивал свое мнение. Если использовать sql, то лучше остановиться на c#+MS sql или java+my sql. Это популярные варианты, представляющие цельные технологии. В кларионе sql пришит сбоку. Изначально включение драйверов для работы с sql серверами предназначалось для работы с готовыми базами данных. Для обычных приложений рассматривались варианты tps для небольших баз, и btrieve для крупных. Это и сейчас рабочие варианты, причём одно и тоже приложение можно переключать без перекомпиляции. Единственная коррекция на то, что встраиваемые базы надо использовать в связке с терминальными службами, что очень выгодно на современном железе.
Кларион, конечно, сейчас можно использовать с sql, так многие работают. Только никакого кайфа от этого нет, только старая привязанность к этому инструменту. Для себя я когда-то решил, что для получения конкурентных продуктов надо использовать сильные стороны технологии клариона, а остальное оставить в стороне. То, что это не мейнстрим, даже хорошо. С точки зрения бизнеса, надо предлагать что-то отличное от других. А нативная технология клариона сама по себе великолепна и позволяет делать хорошие продукты.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4553
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion на Хабре

Сообщение finsoftrz »

RaFaeL писал(а): 15 Июнь 2021, 0:36
finsoftrz писал(а): 15 Июнь 2021, 0:02 Я с ходу даже не помню подобных задач, где надо выбрать и отобразить 8-10 полей из 5-6 таблиц
В нашей CRM есть блок выборок по справочникам. Пользователи любят выводить, например, контрагентов с десятками (20-30-50) полей по десяткам же таблиц (всего думаю около сотни таблиц подвязано). Запрос в SQL при этом формируется по сути один, динамически. Вариант по ключам тоже есть, работает примерно на порядок медленнее и там здоровая и тупая простыня текста с кейсами
Это говорит только о том, что приложение так написано (или задача такая).
А Вы уверены, что пользователям нравится выводить таблицы по 20-50 полей, у них есть выбор? У нас такого нет, разве что кросс-таблицы в эксель. Зато есть быстрые переключения на детализирующую информацию в отдельных потоках.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Clarion на Хабре

Сообщение RaFaeL »

finsoftrz писал(а): 15 Июнь 2021, 0:54 А Вы уверены, что пользователям нравится выводить таблицы по 20-50 полей, у них есть выбор?
Разумеется, это специальный модуль для подготовки пользователем именно таких таблиц (с теми полями, которые нужны именно ему)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4553
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion на Хабре

Сообщение finsoftrz »

Вообще говоря, в приложениях с isam и с sql разные подходы. Если пытаться делать одинаково, то проблемы с производительностью будут там или там.
Это хорошо понятно на примере броузов. В isam практически всегда используют постраничный броуз, для sql предпочтительнее файловый метод.
То есть в sql эффективнее получать сразу все данные одним запросом. Если запросы частые и они возвращают небольшие порции данных, КПД сервера падает.
В isam, наоборот, работа строится таким образом, чтобы считывать минимальное количество информации из базы данных, а затем подтягивать по мере работы пользователя. Это касается и работы с итогами расчётов в кьюшках. Там сохраняется минимум информации, а дальше просмотр организуется в постраничном режиме и прочая информация (по большей части из связанных справочников) подтягивается только для нескольких строк в видимой части броуза, а не для всей выборки. Есть в этом случае и "медленные" операции, типа фильтрации, поиска или экспорта, когда анализируется вся выборка со всеми связанными данными. Но это все-таки уже ограниченная выборка, а не десятки или сотни тысяч записей, на современном железе идёт влет.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Clarion на Хабре

Сообщение kreator »

finsoftrz, всё, что Вы пишете - бред. Зачем Вы обсуждаете вещи, в которых ни бум-бум? Попробуйте сначала, потом конкретику расскажете. Где плюсы, где минусы. Что каcается меня, то у меня богатый опыт :mrgreen: . И фифо я знаю. Расчёт его не надо делать. Надо таблицы правильно создать. И всё полетит. На SQL.
Игорь Столяров писал(а): 14 Июнь 2021, 22:54 Пусть автор к своему примеру SQL запроса допишет распарсивание результата и потом уже занимается сравнением объёма.
О каком распарсивании речь? Результат запроса попадает либо в кларионовскую вьюху, либо в таблицу. По любому нужен цикл по вьюхе или по таблице. С присвоением результата в очередь. Если делать выборку по одной таблице, то количество строчек по обработке isam и sql будем примерно одинаковым. По мере увеличения количества таблиц и агрегатных функций в выборке расхождение будет расти.
Игорь Столяров писал(а): 14 Июнь 2021, 22:54 Насчёт скорости выборок - уже неоднократно обсуждали, что SQL чудовищно удобен, но не оптимален в скорости обработки запросов.
Почему не оптимален? В стандарте 1992 года может что-то такое и было. В стандарте 2013 года сильно всё по другому. Приведу пример. Сейчас в SQL серверах есть планировщик запросов. Он работает всегда, анализирует таблицы данных, индексов. При одних данных запрос будет выполняться по одному плану, при других по другому. Он (планировщик) достаточно умный.
При работе с файл-сервером всегда надо думать о каких-то расчётах периодов, цен, фифо-лифо, остатках на складах. SQL достаточно комфортно делает это в "рантайме".
Или, например, вопрос по загрузке броуза. Постраничная работа с SQL уже не столько сервер напрягает, сколько сеть. Запросы и данные надо гонять по сети туда-сюда.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7323
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion на Хабре

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

kreator писал(а): 15 Июнь 2021, 12:07 Если делать выборку по одной таблице, то количество строчек по обработке isam и sql будем примерно одинаковым
Вот с этим Игорь согласен ! :) А с тем, что автор статьи сравнивает SQL строку и блок кода Clarion - не согласен катастрофически. :)
Вообще в Clarion есть забавный момент - шаблоны для SQL есть, а встроенных методов и ТИПОВ ДАННЫХ для работы с SQL - нет.
Насколько это классно и красиво может быть сделано - понял когда стал шабашить на бейсике (B4A). :)
kreator писал(а): 15 Июнь 2021, 12:07 При одних данных запрос будет выполняться по одному плану, при других по другому. Он (планировщик) достаточно умный.
Полностью согласен. Но я (точнее наш скромный коллектив) неоднократно сравнивали примитивные выборки через Pervasive.SQL
и на этом же сервере - ISAM Btrieve. Могу сказать честно: SQL выигрывал только когда учитывалось время написания самого запроса. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4553
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion на Хабре

Сообщение finsoftrz »

Критор, я бы предложил Вам уважительно относиться к собеседникам и не хамить, если Ваша точка зрения отличается.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4553
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion на Хабре

Сообщение finsoftrz »

В виндеве, к слову, проходила инфа, что подключили анализатор синтаксиса sql запросов. То есть пишем строчку с sql запросом, а среда это распознает и проверяет синтаксис на лету. Не знаю, это только для hsql или синтаксис каких-то других серверов распознаётся. Такого в b4a нет.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7323
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion на Хабре

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

finsoftrz писал(а): 15 Июнь 2021, 13:13 Такого в b4a нет.
Ну да. Зато там есть Java - малейшая помарка в строке SQL - и всё вылетает ворохом ошибок и рушится. :)
Это конечно дисциплинирует и приучает немного включать голову при написании запросов. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4553
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion на Хабре

Сообщение finsoftrz »

У всех скриптовых языков есть такая беда в той или иной степени. Об ошибке узнаешь, только когда запустишь программу. Помнится, кто-то из наших гуру sql писал, что в начале отлаживают запрос в родной оболочке, а потом копипастят текст в кларион. А в Mav известно кто вставил специальное окно, в случае ошибки всю абракадабру, полученную с сервера, можно было отправить на почту разработчику. Я некоторое время смотрел, было прикольно.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Clarion на Хабре

Сообщение kreator »

finsoftrz писал(а): 15 Июнь 2021, 13:09 Критор, я бы предложил Вам уважительно относиться к собеседникам и не хамить, если Ваша точка зрения отличается.
Прошу прощения!
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Clarion на Хабре

Сообщение kreator »

Игорь Столяров писал(а): 15 Июнь 2021, 13:05 Полностью согласен. Но я (точнее наш скромный коллектив) неоднократно сравнивали примитивные выборки через Pervasive.SQL
и на этом же сервере - ISAM Btrieve. Могу сказать честно: SQL выигрывал только когда учитывалось время написания самого запроса.
Pervasive - недоSQL. Поддерживает видимо только скульный синтаксис. Да, и я предлагаю не жить в прошлом веке.
finsoftrz писал(а): 15 Июнь 2021, 13:46 Помнится, кто-то из наших гуру sql писал, что в начале отлаживают запрос в родной оболочке, а потом копипастят текст в кларион.
Наверно все так делают. Мы точно. Кларион сам строит относительно простые запросы для броуза. Что-то более сложное сначала отлаживаем, например, в IBExpert. Всё равно приходится анализировать план, фетчи, скорость и т.д.
We are hard at work… for you. :)
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Clarion на Хабре

Сообщение RaFaeL »

finsoftrz писал(а): 15 Июнь 2021, 10:16 для sql предпочтительнее файловый метод
Нет. Разве что если в таблицах записей на уровне десятков, может сотен.
Ответить